서론

사내에서 DDD Start! 책으로 스터디를 진행하기로 했다. 정리하지 않으면 또 아무곳에 남지않을 것 같아 블로그에다가 정리해보려고 한다. 

우선 DDD는 무엇이고 왜 공부하기로 마음 먹었는지부터 정리해본다.


What, Why and How

What is DDD(Domain Driven Design)?

Domain-driven design (DDD) is an approach to software development for complex needs by connecting the implementation to an evolving model.[1] The premise of domain-driven design is the following:

  • placing the project's primary focus on the core domain and domain logic;
  • basing complex designs on a model of the domain;
  • initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.


왜 DDD를 공부하기로 맘 먹었는가?

  1. 회사에서 MSA할거라고 팀을 도메인별로 나누어 버렸다. 도메인 별 구현을 하려면 알면 좋겠다고 생각했다.
  2. 그냥 공부를 요새 너무 안해서 공부가 필요했다. (뭐든 상관 없다. 일단 공부 좀 해야겠다.)
  3. 선배들이랑 공부해보고 싶어서. 항상 주니어 위주의 스터디를 해왔는데, 답을 내리지 못하는 경우들이 있었다. 시니어들이 많은 스터디여서 어떤 점이 다를까 조금 궁금하기도 했다. 


    어떻게 DDD를 공부할 것인가?

    회사에서는 화, 목 점심시간에 모든 구성원이 세션을 읽어오고, 발표 담당자가 내용을 요약하여 발표한다. 나는 발표담당자가 아녀서 맘이 편하긴 하지만, 편한 맘 만큼 공부를 많이 안할 수 있으니 매주, 내가 공부한 내용들을 정리할 예정이다.  스터디에서 오간 내용들을 모두 올리면 철컹철컹 할 수 있으니.. 대략적인 논쟁거리, 의문사항이 있으면 추가로 작성해볼까 한다. 
    회사에서는 한 시간마다 두 챕터를 나가기로 했는데, 잘 지켜지지 않고는 있다. 
    책의 서론에 보니 책의 내용이 다음과 같이 구성되어있다. 책이 말하는 대로 꼭지를 잡아서 업로드를 올릴까 한다. 올리는 주기는 주에 1회!

    1장, 2장: 도메인 모델을 구현하기 위한 기본 내용

    • 도메인 모델이 뭐지? 엔티티와 밸류
    • 아키텍쳐의 네 영역, DIP pattern, 도메인 영역의 구성 요소


    3장, 4장: 애그리거트와 리포지터리: 애그리거트가 뭐지? 어떻게 구현하지?

    • 리포지터리는 어떻게 구현하지?
    • 리포지터리의 조회 기능을 우리 다같이 구현해볼까?

    5장: 응용 서비스와 표현 영역

    • 지금 까지 만든 도메인 모델은 어떤 역할인데? 응용 서비스가 어떻게 사용할꺼야? 표현 영역이랑 응용 서비스를 어떻게 연결할꺼야?

    6장: 도메인 서비스의 이유와 구현방법

    • 도메인 서비스가 왜 필요하지? 어떻게 구현할꺼지?

    7장, 8장: 애그리거트의 트랜잭션 범위에 따른 구현

    • 선점잠금과 비선점 잠금 구현법

    9장: Bounded context

    • Bounded context가 뭐지? 어떻게 통합하고 관계가 있지?

    10장: 도메인 이벤트와 CQRS

    • 도메인 이벤트 활용법, 처리법 등
    • CQRS가 무엇이고 어떤 효과를 얻을 수 있을까??



    + Recent posts