[DDD] SHARED KERNEL

skayjays·2021년 11월 7일
1

DDD

목록 보기
7/16

문제점

  • 밀접하게 연관된 애플리케이션을 대상으로 작업 중인 팀 간의 협럭이 조율되지 않는다면 잠시 동안은 작업을 진행할 수 있겠지만 각 팀이 만들어낸 결과물을 함께 조립하기는 쉽지 않다.
  • 결국 처음부터 CI를 적용했을 때보다 더 많은 시간을 번역 계층을 개발하고 구조를 개선하는데 허비하게 될것이다.
  • 공통 UBIQUITOUS LANGUAGE를 구축하는 작업이 중복되고 UBIQUITOUS LANGUAGE로 얻을 수 있는 이점을 잃어버릴 것이다.

해결

  • 두 팀간에 공유하기로 한 도메인 모델의 부분집합을 명시하라.
  • 모델의 부분집합뿐 아니라 모델 요소와 연관된 코드나 데이터베이스 설계의 부분집합까지도 포함하라.
  • 명시적으로 공유하는 부분들은 특별한 상태를 갖는다.
  • 다른 팀과의 협의 없이는 변경할 수 없다.
  • 기능 시스템을 자주 통합하라.
  • 개별 팀에서 수행하는 CI빈도보다는 더 적은 빈도로 통합하라.
  • 통합할 때는 양 팀에서 작성한 테스트를 모두 실행하라.
  • 신중하게 균형을 유지하라
  • 자유롭게 변경할 수 없다.
  • 의사결정은 다른팀과의 협의를 거쳐서 이뤄져야 한다.

목표

  • 중복을 줄인다.
  • 두 하위 시스템 간의 통합을 비교적 용이하게 만드는 것이다.

정리

  • 우리가 만드는 소프트웨어는 정확하게 영역을 나누기란 쉽지 않다. 모든 내용은 서로 연결이 되있고 그러다 보면 팀 간에 공통으로 사용되는 영역이 존재하기 마련이다.
    그러므로 공통의 영역을 의사결정 없이 수정하게 되면 해당 부분을 사용하는 다른 팀에서 장애가 발생할 수 있다. 그러므로 공유영역은 개발시 더 신경 써서 관리해나가야 할 것 같다.
profile
기초를 탄탄하게

0개의 댓글