TIL
  • Contents
  • Book
    • 도메인 주도 설계
      • 1. 동작하는 도메인 모델 만들기
    • 오브젝트
      • 데이터 중심 설계
      • 책임 중심 설계
      • 책임 할당을 위한 GRASP 패턴
      • 메시지와 인터페이스
      • 객체 분해
    • Effective Java
      • Item 7 - 다 쓴 객체 참조를 해제하라
      • Item 7 발표 내용
      • Item 13 - clone 재정의는 주의해서 진행하라
      • Item 13 발표 내용
      • Item 16 - public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라
      • Item 16 발표 내용
      • Item 26 - 로 타입은 사용하지 말라
      • Item 28 - 배열보다는 리스트를 사용하라
      • Item 28 발표 내용
      • Item 29 - 이왕이면 제네릭 타입으로 만들라
      • Item 30 - 이왕이면 제네릭 메서드로 만들라
      • Item 31 - 한정적 와일드 카드를 사용해 API 유연성을 높이라
      • Item 35 - ordinal 메서드 대신 인스턴스 필드를 사용하라
      • Item 37 - ordinal 인덱싱 대신 EnumMap을 사용하라
      • Item 37 발표 내용
      • Item 43 - 람다보다는 메서드 참조를 사용하라
      • Item 43 발표 정리
      • Item 56 - 공개된 API 요소에는 항상 문서화 주석을 작성하라
      • Item 56 발표 정리
      • Item 62 - 다른 타입이 적절하다면 문자열 사용을 피하라
      • Item 62 발표 정리
      • Item 73 - 추상화 수준에 맞는 예외를 던지라
      • Item 83 - 지연 초기화는 신중히 사용하라
      • Item 83 발표 내용
      • Item 89 - 인스턴스 수를 통제해야 한다면 readResolve보다는 열거 타입을 사용하라
      • Item 89 발표 내용
    • 개발자를 위한 SQL 튜닝
      • SQL 쿼리 실습을 위한 DB 서버 구축
      • 인덱스 튜닝
      • 인덱스 스캔 튜닝
      • 인덱스 스캔 튜닝 실습
      • 인덱스 패스트 풀 스캔
      • 테이블 풀 스캔 튜닝
      • 조인 튜닝
      • 중첩 루프 조인 튜닝
      • 중첩 루프 조인 튜닝 실습
      • 해시 조인 튜닝
      • 해시 조인 튜닝 실습
      • 세미 조인 튜닝
      • 세미 조인 튜닝 실습
      • 아우터 조인
      • 함수 튜닝
      • 부분 범위 처리 튜닝
      • 파티셔닝 튜닝
      • 파티션 인덱스 튜닝
      • 병렬 처리 튜닝
  • Java
    • Design Pattern
      • Intro
      • Types of Design Patterns
      • Creational
        • Builder Pattern
        • Singleton Pattern
        • Prototype Pattern
        • Factory Pattern
        • Abstract Factory Pattern
      • Structural
        • Adapter Pattern
        • Bridge Pattern
        • Composite Pattern
        • Decorator Pattern
        • Facade Pattern
        • Flyweight Pattern
        • Proxy Pattern
      • Behavioural
        • Chain of Responsibility Pattern
        • Command Pattern
        • Interpreter Pattern
        • Iterator Pattern
        • Mediator Pattern
        • Memento Pattern
        • Observer Pattern
        • State Pattern
        • Strategy Pattern
        • Template Method Pattern
        • Visitor Pattern
    • Java
      • Cracking the Coding Interview
      • TDD, Clean Code with Java 11기
        • 자동차 레이싱
        • 로또
        • 사다리 타기
        • 볼링 게임 점수판
    • 궁금증
      • 자바 8 버전의 인터페이스와 추상클래스
      • 자바의 제네릭은 어떻게 이전 버전과 호환되는 걸까?
      • 스프링 MVC 기본 구조
      • 마샬링과 직렬화
      • 인터뷰 질문 모음
      • Code Coverage
  • Database
    • Database
      • SQL 레벨업
      • DB 스터디
        • DBMS
          • MySQL
        • INDEX
        • Join(Nested Loop, Hash)
        • Join(Semi, Outer)
        • Partial Range Processing
        • Function
        • Partitioning
        • Parallel Processing
  • Network
  • Architecture
    • Issue
      • Git Push Error
      • SonarLint Warning - assertThatExceptionOfType()
  • Infra
  • Spring
    • Spring JPA
      • 1. 데이터 모델링 및 연관관계 설정
      • 2. 최적화 내용
      • 3. Spring-Data-Jpa
      • 4. Query DSL
    • Spring Security
      • Intro
    • Spring Batch
      • 배치용 디비 설치
      • 배치 데이터 분석하기
      • 배치 프로세스 구상하기 및 성능 차이 확인하기
  • Issue
  • Tistory
    • Tistory Blog
  • Design High Performing Architectures
  • Design Resilient Architectures
  • Design Secure Applications And Architectures
  • Design Cost-Optimized Architectures
Powered by GitBook
On this page
  • Intro
  • 책에서 제공하는 컨셉
  • Contents

Was this helpful?

  1. Book

도메인 주도 설계

책 읽기

PreviousContentsNext1. 동작하는 도메인 모델 만들기

Last updated 3 years ago

Was this helpful?

참고 -

Intro

도메인 주도 개발을 왜 공부해야 할까?

도메인 주도 개발을 해야 하는 이유를 정의할 수 있을 정도로 깊이있는 지식을 갖고 있지만 책을 읽기 전에 먼저 생각해 본다.

현재 알고있는 수준에서 이해해 보기 위해서 정리하면, 도메인 주도 개발과 비교할 수 있는 방식의 개발 방식을 데이터 중심의 개발이라고 할 수 있을 것 같다.

내가 알고 있는 데이터 중심 개발은 데이터에 대한 DB 스키마가 정의되어 있고, DB를 조회하기 위한 쿼리에 비즈니스 로직이 녹아있기 때문에 쿼리에 많은 시간을 투자하게 된다. 따라서 해당 쿼리에 대한 데이터베이스로부터 조회하는 DAO 메서드를 호출하고, 기능에 따라서 적절하게 트랜잭션으로 묶어 ACID를 보장하는 서비스 레이어를 작성하고 최종적으로는 사용자의 요청에 따라 적절한 데이터를 응답할 수 있는 프레젠테이션 레이어를 구성한다.

도메인 주도 개발은 데이터 중심 개발의 최종적인 목표는 같으나 출발점이 되는 도메인을 구성하는 방식에 초점을 두어, 서비스 레이어의 비즈니스 로직을 도메인에서 처리하여 보다 객체지향적인 설계가 가능한 것으로 알고 있다. 책을 읽어보면서 잘못된 개념이 있다면 바로 잡고, 개념을 확립할 수 있는 기회를 위해 정리해보도록 한다.

옮긴이의 글 정리

  • 먼저 소프트웨어의 존재 가치에 대해 이야기 한다.

소프트웨어의 가치는 특정 업무 분야의 문제를 해결하는데 있다고 한다. 당면한 문제를 해결하지 못하는 소프트웨어는 실패한 소프트웨어에 지나지 않기 때문에, 개발자는 문제를 해결하기 위해 기술적으로 해결하는 방법을 찾게된다.

  • 도메인 주도 설계는 무엇을 이야기 하고 해결하기 위한 설계 방법인가?

책에는 위에서 이야기 하는 소프트웨어의 핵심에 놓인 복잡성을 다루는 패턴과 기법, 원칙에 대해 기술되어 있다. 복잡성의 출발점이 되는 도메인에 초점을 맞추고, 도메인을 표현하는 모델, 모델이 구현하는 설계 간의 간극을 좁히는데 집중한다고 한다.

이는 소프트웨어에서 데이터를 관리하는 부분인 서비스 레이어의 복잡성을 도메인으로 이동시켜 도메인 주도 설계의 통찰력을 제공하는 것으로 보인다.

  • 그래서 무엇을 얻어가야 할 것인가?

도메인 주도 설계는 단순한 설계에서 머무는 것이 아니라 통찰력을 제시하고, 소프트웨어 개발에 임하는 자세를 고칠 수 있도록 한다.

책에서 제공하는 컨셉

유비쿼터스 언어와 모델 기반 디자인이라는 키워드를 기준으로 그 내용을 구성하는 기본 요소에 대한 내용과 그 관계성에 대해서 이해하는 것이 목표이다.

  • 기본 요소

    • Entity

    • Value Object

    • Service

    • Module

    • Aggregate

  • 도메인을 구성하기 위한 데이터 접근 요소

    • Repository

  • 도메인 객체 생성을 관리하는 요소

    • Factory

Contents

  1. 동작하는 도메인 모델 만들기

    1.1 지식 탐구

    1.2 의사소통과 언어 사용

    1.3 모델과 구현의 연계

  2. 모델 주도 설계의 기본 요소

    2.4 도메인의 격리

    2.5 소프트웨어에서 표현되는 모델

    2.6 도메인 객체의 생명 주기

    2.7 언어의 사용

  3. 더 심층적인 통찰력을 향한 리펙토링

    3.8 도약

    3.9 암시적인 개념을 명확하게

    3.10 유연한 설계

    3.11 분석 패턴의 적용

    3.12 모델과 디자인 패턴의 연결

    3.13 더 심층적인 통찰력을 향한 리펙터링

  4. 전략적 설계

    4.14 모델의 무결성 유지

    4.15 디스틸레이션

    4.16 대규모 구조

    4.17 전략의 종합

결론

도메인 주도 설계 - 에릭 에반스
도메인 기본 설계의 기본 요소