caffeine-library/Domain-Driven-Design

[keyword] 16장 대규모 구조 (2)

Closed this issue · 4 comments

주제

'16장 대규모 구조 (2)'을 읽고 내용을 요약하거나,
중요✨ 하다고 생각하는 키워드 및 관련 설명을 코멘트로 달아주세요

연관 챕터

#67

KNOWLEDGE LEVEL(지식 수준)

  • 지식 수준 : 매우 구체적인 수준. 소프트웨어의 행위에 대한 지식을 나타냄
  • 운영 수준 : 애플리케이션의 운영적 책임을 수행함. 사용자나 관리자의 맞춤화가 가능한 규칙과 지식을 반영.

어떤 모델을 운영 수준과 지식 수준으로 나누어 보게 되면, 기존에 알아차리지 못했던 암시적인 지식 수준을 발견할 수도 있다.

KNOWLEDGE LEVEL 은 각 수준 사이의 의존성이 양 방향으로 모두 작용할 수 있다는 점에서 RESPONSIBILITY LAYER 와는 다르다.

PLUGGABLE COMPONENT FRAMEWORK(착탈식 컴포넌트 프레임워크)

  • 추상화된 코어를 제공하고, 어떤 애플리케이션이든 그 코어를 사용할 수 있게 한다.
  • 다양한 바운디드 컨텍스트는 추상화된 코어에 숨겨질 수 있다.
  • 단, 매우 적용하기 힘들다. 인터페이스를 설계하기가 까다로울 듯. (어떤 행위를 제공할 지를 잘 설계해야 한다)

잘 맞아 떨어지는 구조를 향한 리팩터링

  • 가장 실질적인 방법은 반복적인 개발 과정
  • 구조를 간단하고 가볍게 유지하는 것 (간단하다는 건 쉽다는 것과는 별개)
    • 포괄적으로 만들지 말고 가장 중요한 관심사만 다루고 나머지는 사례별로 처리하게 한다
  • 의사소통과 자기훈련, 재구조화, 디스틸레이션...
    • 팀 전체가 동일한 구조를 사용할 수 있게 일관되게 따라야 함

구조가 간단하다 == 예측 가능하다

두번 하는 일을 만들지 말자(과도기적 코드)
코드에 이유가 있어야 한다. 여러 가지 개발 케이스의 예상 결과를 최대한 생각해보자. (어떤 케이스가 베스트일지)