전체 글
-
도메인 주도 설계 - 11. 분석 패턴의 적용디자인 패턴 2024. 5. 23. 09:55
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다.이해가 어려우시다면 댓글 부탁드립니다. 도메인 문제들을 관찰하면서 익숙한 책임이나 관계들이 발견되는데 이러한 익숙한 것들은 패턴 형식으로 기록되어 문제를 해결하는데 도움을 준다. 경험으로 축적되어 기록된 패턴을 사용하는 방식이 분석 패턴의 적용이다. 이 패턴은 특정 개념을 표현하는 객체를 사용해서 더 높은 수준에서 특화된 영역을 다룬다. 곧바로 사용할 수있는 해결책은 아니고 특정 도메인의 모델을 개발할 떄 유용한 지심서에 해당한다. 최상의 분석패턴은 과거의 프로젝트에서 유용한 경험을 전달하고 모델에 대한 통찰력을 제공한다.
-
도메인 주도 설계 - 10. 유연한 설계디자인 패턴 2024. 5. 10. 10:50
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다.이해가 어려우시다면 댓글 부탁드립니다.INTENTION-REVEALING INTERFACE(의도를 드러내는 인터페이스) 객체를 효과적으로 사용하는데 알아야할 정보를 구현 로직의 이해 필요없이 인터페이스로만 얻을 수 있게 설계한 인터페이스를 뜻한다. 컴포넌트의 구현 세부사항을 고려해야 한다면 캡슐의 가치는 사라진다. 설계에 포함된 모든 공개 요소가 조화를 이뤄 인터페이스를 구성하고 각 요소의 이름을 토대로 설계 의도를 드러낼수 있어야 한다. 오직 결과와 목적만을 표현하도록 클래스의 연산의 이름을 부여해야 한다. 이렇게하면 클라이언트 개발자가 내부를 이해할 필요성이 줄어든다. 그 의미를 쉽게 추측하기 위해 UB..
-
도메인 주도 설계 - 9. 암시적인 개념을 명확하게디자인 패턴 2024. 5. 2. 09:35
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다.이해가 어려우시다면 댓글 부탁드립니다. 개발자들이 토의 중에 단서를 얻거나 설계상 암시적으로 존재하는 개념을 인지하면 도메인 모델과 관련 코드를 대량으로 바꾸게 된다. 하나 이상의 객체와 객체간 관계를 활용해 모델 내에 해당 개념이 명확하게 표현된다. 암시적 개념을 명확한 개념으로 변환하는 작업 역시 심층 모델로의 도약에 해당된다.개념 파헤치기언어에 귀 기울여라 도메인 전문가가 사용하는 언어에 귀 기울여야 한다. 복잡하게 얽힌 개념들을 간결하게 표현하는 용어가 있거나 개발자가 사용하는 단어를 적절하게 고쳐주는 등이 모델에 기여하는 개념의 실마리가 된다. 하지만 이것이 "명사는 객체다" 라는 개념을 표현하는 ..
-
도메인 주도 설계 - 8. 도약디자인 패턴 2024. 4. 26. 11:59
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다.이해가 어려우시다면 댓글 부탁드립니다.심층 모델 기존 전통적인 방식의 객체 분석 방식은 요구사항 문서의 명사와 동사를 식별하고 명사는 초기 객체 이름, 동사는 메서드로 사용하는 것이다. 초보자를 가르치기에는 유용하지만, 실제 도메인 초기 모델은 얄팍한 지식에 기반을 둔 무의미한 모델인 경우가 대부분이다. 심층 모델(DEEP MODEL)이란 도메인의 피상적인 측면은 배제하고 도메인 전문가와 주요 관심사를 중심으로 도메인 지식을 알기 쉽게 표현한 것이다. 추상화를 의미하진 않는다.발견 과정 해결해야 하는 문제에 적합한 설계(심층 모델)를 만들려면 먼저 도메인 중심 개념을 담고 있는 모델을 확보해야 한다. 이는 ..
-
도메인 주도 설계 - 6. 도메인 객체의 생명주기(AGGREGATE, FACTORY, REPOSITORY)디자인 패턴 2024. 4. 24. 09:44
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다. 이해가 어려우시다면 댓글 부탁드립니다. AGGREGATE(집합체) AGGREGATE는 데이터 변경의 단위로 다루는 연관 객체의 묶음 개념이다. 복잡한 연관관계를 맺는 객체를 대상으로 일관성을 보장한다. 각 AGGREGATE에는 루트(root)와 경계(boundary)가 있고 루트는 단 하나만 존재하고 특정 ENTITY를 가리킨다. 경계안에 객체는 서로 참조 가능하다. 경계 바깥 객체(또 다른 AGGREGATE)는 루트만 참조 가능하다. 지역 식별성은 AGGREGATE내에서만 구분하면 된다. 예를 들어, 자동차는 전역 식별성을 가진 ENTITY이다. 네개의 바퀴는 식별할 수 있다면 지역 식별성을 가진다. 그..
-
도메인 주도 설계 - 5. 소프트웨어에서 표현되는 모델(ENTITY, VO, ...)디자인 패턴 2024. 4. 19. 09:51
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다. 이해가 어려우시다면 댓글 부탁드립니다. ENTITY(엔티티, 참조객체) 어떤 객체를 일차적으로 해당 객체의 식별성으로 정의되는 것으로 ENTITY의 생명주기 동안에 내용이나 속성이 바뀌어도 연속성이 유지되는 것을 말한다. ENTITY에 포함된 속성보다는 정체성(식별성)에 초점을 맞춘 객체이다. 예시 1: 경기장 좌석이 지정석인 경우 좌석은 ENTITY이다. 좌석의 식별자는 좌석 번호이고 경기장에서 유일하다. 예시 2: 경기장 좌석이 빈 좌석을 찾아 앉는 일반석인 경우 좌석은 ENTITY가 아니다. 전체 좌석의 개수가 중요하고 좌석번호가 물리적으로 새겨져 있더라도 소프트웨어에서는 그 번호를 관리할 필요는 ..
-
도메인 주도 설계 - 4. 도메인의 격리디자인 패턴 2024. 4. 15. 09:44
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다. 이해가 어려우시다면 댓글 부탁드립니다. LAYERED ARCHITECTURE(계층형 아키텍처) 도메인코드가 도메인과 관련이 없는 다른 코드와 같이 섞일 경우 도메인 코드를 이해하기가 굉장히 힘들어진다. 도메인 코드와 UI가 같이 섞일 수 경우 UI를 변경하는 것이 실직적으로 업무 로직을 변경하는 것으로 이어질 수 있다. 복잡한 소프트웨어의 경우 관심사의 분리가 필요하다. 소프트웨어 시스템을 분리하는 방법 중에 하나인 LAYERED ARCHITECTURE는 널리 사용되고 있다. LAYERED ARCHITECTURE는 몇개의 일반화된 계층으로 나눈 방법이다. 한 계층의 모든 요소는 오직 같은 계층에 존재하는 ..
-
도메인 주도 설계 - 3. 모델과 구현의 연계디자인 패턴 2024. 4. 9. 09:55
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다. 이해가 어려우시다면 댓글 부탁드립니다. MODEL-DRIVEN DEGISN(모델 주도 설계) 도메인 주도 설계에서는 초기 분석 단계에 도움될 뿐 아니라 설계의 기반이 되는 모델이 필요하다. 이 모델 주도 설계는 도메인 주도 설계에서 필요로 하는 모델링 접근법이다. 설계가 도메인 모델과 대응하지 않는다면 그 모델은 가치가 앖고 소프트웨어의 정확함도 의심스러워진다. 또한 모델과 설계 기능 사이의 복잡한 대응은 이해하기 힘들고 유지보수가 불가능해진다. 분석과 설계가 분리된다. 모델 주도 설계는 도메인 모델을 있는 그대로 반영해서 설계와 모델의 대응시키는 방법론이다. UBIQUITOUS LANGUAGE(보편 언..