Closed bearics closed 3 years ago
ANTICORRUPTION LAYER : 하류층에서 번역계층을 개발하고 유지보수할 책임을 전부 맡아야 한다.
CONFORMIST : 하류층에서 전적으로 독립적인 모델을 포기하는것 , 상류층 모델을 준수한다.
CUSTOMER / SUPPLIER DEVELOPMENT TEAM : 상류팀(공급자) 은 하류팀(고객)의 요구사항에 맞추어 일정수립, 개발한다.
SHARED KERNEL : 두 시스템이 공용으로 관리하고 각자의 테스트를 통해 기능을 보장하는것
OPEN HOST SERVICE : 상류시스템에서 프로토콜을 공개하여 다수의 하류층이 사용.
인물검색은 CUSTOMER/SUPPLIER.. cv 연동은 OPEN HOST SERVICE 이자 CONFORMIST ?
UBIQUTIOUS LANGUAGE와 PUBLISHED LANGUAGE 차이점?? 그냥 같은건가?
저번주에서 여쭤봤던 번역계층의 위치?는 context간의 통합방법에 따라 달라질수있겠네요 😄
upstream 이 원하는대로 안 해주는데 downstream 에서는 거기서 더 기능이 더 필요한 경우
service model -> dao model 변환 개념인가?
외부 시스템을 모델 내에 단일 컴포넌트로 표현하는건 불가능
모델 관점에서 응집력있는 책임을 맡는 여러 SERVICE 를 사용하는게 최선
하위 시스템에 대한 클라이언트의 접근을 단순화, 더 쉽게 하위 시스템을 사용할 수 있게 만드는 인터페이스 다른 시스템의 모델에 따라 엄격하게 작성해야 함
다른 프로토콜을 클라이언트에서 사용하게 해주는 wrapper 클라이언트에서 ADAPTER 에 메시지를 전송하면 응답이 변환되어 adaptee 로 전송됨
ADAPTER 가 하는 일은 요청 방법을 파악하는 것 개념 객체나 데이터의 실제 변환. 번역기는 ADAPTER 에 속함, 아무런 상태가 필요하지 않음 필요할 때 인스턴스화 되는 가벼운 객체일 수도
통합에는 비용이 많이 들고, 혜택이 적은 경우도 있음
middleware 나 UI layer 에 기능을 구성할 수 있지만, 로직은 공유하지 않고 번역 계층을 거쳐 최소한의 데이터만 전송
하위 시스템 접근과 관련된 프로토콜을 일련의 SERVICE 로 정의
프로토콜을 공개해서 통합하고자 하는 모든 사람들이 해당 프로토콜을 사용할 수 있게 함
특수한 요구사항은 일회성 번역기로 프로토콜 보강 -> 공유 프로토콜을 단순하고 일관되게 유지
두 BC 모델 간에 이뤄지는 번역에 필요한 공통의 언어
필요한 도메인 정보를 표현할 수 있는 문서화된 공유 언어를 공통의 의사소통에 사용 이 언어로 혹은 이 언어로부터 번역 수행
변형 (Transformation): BC 에 관한 결정을 변경하는 것
번역 비용이 너무 클 때
두 CONTEXT 에서 중복되는 부분을 포함하는 규모가 작은 하위 도메인 선택
하위 도메인에 대한 공유 모델을 만들기 위해, 각 팀에서 차출
SHARED KERNEL 통합 -> 필요 없어진 번역 제거
SHARED KERNEL 이 확장 중일 때, BC 를 단일화
ANTICORRUPTION LAYER 를 거쳐 레거시와 소통하는 작은 최신 시스템으로 보완
접근을 원하는 시스템이 늘어나거나 상호작용이 이해하기 어려워지는 경우
PL 은 안정적이어야 함, 끊임없는 리팩토링을 하며 호스트 모델을 자유롭게 변경 가능
교환 언어와 호스트 모델을 동일하게 보면 안됨
모델의 컨텍스트 전략 선택
CONTEXT 관계 변경 상황