본문 바로가기
프로그래밍 상식

도메인이란?도메인 모델?

by Tree나무Tree 2024. 2. 29.

목차

    시작하기에 앞서

    스프링을 사용한 프로젝트를 만드는 과정에서 회원 domain의 domain package로 만드는 domain package의 domain 어떻게 다른지 와닿지않아서 도메인에 대한 정리해보았다.

     

    도메인이란?

    위키피디아가 알려주는 도메인
    도메인은 컴퓨터 프로그램의 목표 대상 영역을 의미하는 용어로, 소프트웨어 공학에서 사용된다.
    공식적으로, 도메인은 특정 프로그래밍 프로젝트의 대상 주제를 좁게 또는 넓게 정의한 것을 나타낸다.
    예를 들어, 특정 병원을 위한 프로그램을 만드는 것을 목표로 하는 프로그래밍 프로젝트의 경우, 그 병원이 도메인이 된다.

     

    이것만 보아서는 이해하기 어려울 수 있다.

     

    상상해보자. 우리가 '학교'라는 작은 세계를 만든다고 하자.

    이 학교에는 선생님, 학생, 교실이 있고, 수업을 하고 방과 후 활동을 한다.

    여기서 '학교'가 바로 도메인이다. 도메인이란 우리가 이야기하고 싶은, 특정한 주제나 세계를 말한다.

     

    도메인 모델이란?

    도메인 모델은 그 학교에서 무슨 일이 일어나는지, 선생님과 학생은 어떤 관계인지, 어떤 교실이 있는지 등을 설명하는 것이다.

    마치 학교의 작은 모형을 만드는 것처럼, 중요한 부분들을 잘 보여주는 그림이나 설명인 것이다.

     

    간단한 자바 코드 예시를 보자.

    // 선생님 클래스
    class Teacher {
        String name;
        String subject;
    
        Teacher(String name, String subject) {
            this.name = name;
            this.subject = subject;
        }
    
        void teach() {
            System.out.println(name + " teaches " + subject);
        }
    }
    
    // 학생 클래스
    class Student {
        String name;
        int age;
    
        Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        void study() {
            System.out.println(name + " is studying.");
        }
    }
    
    // 학교 클래스
    class School {
        public static void main(String[] args) {
            Teacher teacher = new Teacher("Mr. Smith", "Math");
            Student student = new Student("Alice", 12);
    
            teacher.teach();
            student.study();
        }
    }

     

    이 코드에서는 선생님과 학생을 나타내는 TeacherStudent 클래스를 만들었다.

    각 클래스는 이름, 과목(선생님의 경우), 나이(학생의 경우) 같은 속성을 가지고 있고, 각각 수업을 하거나 공부를 하는 행동을 할 수 있다. School 클래스의 main 메서드에서는 선생님과 학생 객체를 만들고, 각각 수업하고 공부하는 모습을 보여준다.

     

    이렇게 코드를 통해 '학교'라는 도메인을 나타내고, 선생님과 학생이라는 도메인 모델을 구현할 수 있다.

    도메인은 우리가 이야기하고 싶은 '학교'라는 주제를 말하고, 도메인 모델은 그 학교 안에서 일어나는 일들과 관계들을 나타내는 것이다.

     

    도메인과 domain package의 차이점은?

    회원 도메인과 package인 domain을 예시로 알아보자.

    회원 도메인

    "회원 도메인"은 우리가 비디오 게임에서 플레이어에 대해 생각할 때와 비슷하다.

    비디오 게임에서 플레이어는 이름, 레벨, 포인트 같은 정보를 가지고 있다.

    또한, 플레이어는 게임 안에서 여러 가지 활동을 할 수 있다.

    여기서 플레이어와 그 활동들이 바로 "회원 도메인"이다.

    즉, 우리가 웹사이트나 앱에서 관리해야 하는 사용자들과 그들의 정보, 그리고 사용자가 할 수 있는 모든 활동들을 말한다.

    domain 패키지

    이제, "domain 패키지"는 마치 비디오 게임을 만들 때 플레이어의 정보를 어디에 보관할지, 그리고 플레이어가 할 수 있는 활동을 어떻게 만들지 정하는 것과 비슷하다.

    게임을 만드는 프로그래머는 코드를 정리해서, 플레이어 관련 모든 것이 "플레이어"라는 폴더에 들어가도록 한다.

    여기서 "플레이어" 폴더가 바로 "domain 패키지"와 같은 역할을 한다.

    이 폴더 안에는 사용자의 이름, 레벨, 포인트를 저장하는 코드와 사용자가 게임 안에서 할 수 있는 활동을 정의하는 코드 등이 들어 있다.

    차이점

    "회원 domain"에서 말하는 "도메인"과 "domain 패키지"의 "도메인"은 기본적으로 같은 개념을 지칭한다. 다만, 이 두 용어가 사용되는 맥락이나 초점에 차이가 있다.

    • 회원 domain은 마치 게임의 플레이어와 그들의 활동 같은, 사용자와 사용자가 할 수 있는 일들에 대한 큰 그림입니다.
    • domain 패키지는 그 큰 그림을 실제로 만들어내기 위해, 사용자 정보와 활동들을 어떻게 코드로 작성할지를 정리해 놓은 "폴더"이다.
    • 회원 domain에서의 "도메인"은 사용자 관리와 관련된 비즈니스 로직, 데이터, 기능 등을 포함하는 주제나 영역을 의미한다. 여기서는 사용자의 등록, 로그인, 프로필 관리 등 사용자와 관련된 모든 것을 포함하는 비즈니스 영역을 가리킨다.
    • domain 패키지에서의 "도메인"은 소프트웨어 개발에서, 특히 객체 지향 프로그래밍에서, 해당 비즈니스 로직과 데이터 모델을 코드로 구현한 것을 구조적으로 조직화하는 방식을 말한다. 즉, 회원 도메인의 개념을 실제 코드로 옮겨 구현한 것이며, 이 코드들을 관리하기 위해 사용되는 패키지의 이름을 지칭한다.

    즉, 회원 도메인은 우리가 다루고자 하는 사용자 관련 내용의 개념적인 모델이고, domain 패키지는 그 모델을 실제로 구현하기 위한 코드를 정리한 곳이라고 생각하시면 됩니다.

    '프로그래밍 상식' 카테고리의 다른 글

    SSR vs CSR 의 장단점  (0) 2024.03.27