서하아빠의 개발 블로그

1장 나에게 도메인 주도 설계 본문

스터디/도메인 주도 설계 핵심

1장 나에게 도메인 주도 설계

서하아빠 2023. 8. 20. 17:49

좋은, 나쁜 그리고 효과적인 설계

프로젝트시 자주 발생하는 문제사항

  • 소프트웨어 개발을 이익 중심이 아닌 원가 중심으로 생각 일반적으로 비즈니스가 컴퓨터와 소프트웨어를 전략적 이점이 아니라 안고 가야 하는 골칫거리로 바라보기 때문
  • 개발자가 너무 기술에만 몰두한 나머지 문제를 신중하게 연구하고 설계하기 보다 기술적 해결에만 집중함.
  • 데이터베이스에 너무 큰 우선순위 부여
  • 프로젝트에 대한 예측을 매우 강하게 요구함. 너무 자주 예측치를 추정하는 것은 적지 않은 시간과 노력을 예측에 할애하도록 만들고 개발이 지연되는 결과로 이어짐
  • 문법에 어긋나고 느리거나 권한이 없어 차단되는 데이터베이스 쿼리들이 긴급하게 처리해야 하는 비즈니스 업무를 수행하지 못하도록 방해함
  • 개발자가 실제 구체적인 비즈니스 요구 대신, 현재와 상상 속 미래의 요구를 모두 고려하여 과도하게 일반화 시킨 해결 방안을 선택한 탓에 잘못된 추상화가 존재함.
  • 오퍼레이션을 수행하는 서비스가 또 다른 서비스를 직접 호출하는 강하게 결합된 서비스가 존재함. → 시스템 유지보수 어려워짐. → 비즈니스 프로세스 문제 발생 → 데이터 불일치

전략적 설계

  • 바운디드 컨텍스트 라는 전략적 설계 패던을 사용해서 도메인 모델을 분리하는 방법을 배운다.
  • 바운디드 컨텍스트 안의 모데인 모델에서 보편언어를 개발하는 방법에 대해서도 살펴본다.
  • 보편언어를 개발하다 보면 개발자는 물론 도메인 전문가의 참여가 중요하다는 것을 배울 수 있다. 소프트웨어 개발자와 도메인 전문가 팀이 협업하는 방법도 알게 된다.
  • 서브도메인이 무엇이고 어떻게 서브도메인이 기존 시스템의 제한되지 않은 복잡성을 다룰 수 있게 도와주는지 그리고 앞으로 진행할 프로젝트 결과를 어떻게 샹상시킬 수 있는지를 배우게 될 것이다.
  • 컨텍스트 매핑이라는 기술을 통해 여러 개의 바운디드 컨텍스트를 통합하는 방법도 확인한다. → 컨텍스트 맵은 2개의 바운디드 컨텍스트를 통합하면서 그 사이에 존재하는 팀의 관계, 기술적 메커니즘을 정의한다.

전술적 설계

  • 전략적 설계의 기초에 대해 살펴본 후, DDD에서 매우 중요한 전술적 설계 도구들에 대해 알아본다. 전술적 설계는 도메인 모델의 세부사항들을 그리기 위해 얇은 붓을 사용하는 것과 같다.
  • 가장 중요한 도구 중 하나는 엔터티와 값 객체(Value Object)를 알맞은 크기의 애그리게잇으로 묶는데 사용하는 애그리게잇(Aggregate)패턴이다.