반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 알고리즘
- 스프링 스케쥴러
- 스택/큐
- 쿠버네티스
- 크론 표현식
- 영속 자료구조
- 루씬 인 액션
- H-index
- 모던 자바 인 액션
- 프로그래머스
- @Getter
- @Setter
- 롬복 어노테이션
- 정렬
- 코딩 테스트
- K번째수
- 고차원 함수
- kubenetes
- 검색 기능 확장
- @Data
- 커링
- 다리를 지나는 트럭
- @configuration
- 해시
- @EnableScheduling
- 완주하지 못한 선수
- Java
- 전화번호 목록
- 기능개발
- 가장 큰 수
Archives
- Today
- Total
Today I Learned
[도메인 주도 설계] 08. 도약 본문
728x90
- 리팩터링의 효과는 선형적으로 증가하지 앟는다.
- 개발자는 개별적인 코드 개선과 모델 개선 작업을 토대로 좀 더 명확한 시각을 갖게 된다.
- 이러한 명확성을 바탕으로 통찰력을 도약시킬 수 있는 가능성이 열린다.
- 복잡성이 사라지는 바로 그 때 갑자기 모델의 융통성과 표현력이 높아진다.
- 이런 부류의 도약은 기법이 아니라 사건이다.
- 중요한 것은 무슨 일이 일어나는지 인식하고 이를 어떻게 처리할 지 결정하는 것이다.
도약에 관한 일화
- 투자은행에 사용될 대형 신디케이트론 관리 애플리케이션의 핵심적인 부분에 대한 개발 예제
- 여러 대출 회사가 모여 퍼실리티를 지원할 자금을 공동으로 출자하는 채권은행단을 구성한다.
- Loan Investment(대출 투자)는 Facility(퍼실리티) 내에서의 지분(share)에 비례하는 특정 투자자의 Loan(대출) 부담액을 표현하는 파생 객체다.
- 하지만 대출사는 항상 Facility에 포함된 지분만큼 제공하지 않는다. 다른 회사와 협의를 거쳐 더 적거나 많은 금액을 제공하기도 한다. 그래서 Loan Adjustment(대출 조정)을 추가해서 이 요구사항을 수용할 수 있었다.
- 다양한 종류의 거래 규칙으로 인해 복잡도가 점점 증가했다. 또한 복잡해지는 알고리즘 탓에 반올림 불일치 문제가 발생했다.
- 도약
- Loan의 지분과 Facility의 지분을 상호독립적으로 변경 가능하다는 것을 깨닫고 새로운 모델을 시각화할 수 있었다.
- Loan의 지분과 Facility의 지분을 상호독립적으로 변경 가능하다는 것을 깨닫고 새로운 모델을 시각화할 수 있었다.
- 더 심층적인 모델
- "투자(Investment)"와 "대출투자(Loan Investment)"는 기본적인 개념인 지분(share)의 두 가지 특수한 경우에 불과하다는 사실을 알게되었다.
- 퍼실리티의 지분, 대출의 지분, 상환액 분배 등 지분은 모든 곳에 존재하고, 분배할 수 있는 값을 의미한다.
- 분석 과정을 거쳐 Facility와 Loan의 지분은 "Share Pie(지분 총액)"라는 개념으로 통합됐다.
- 새로운 모델에서는 부적절한 제약사항을 제거해서 많은 문제점을 해결할 수 있었다.
기본에 집중하라
- 도약을 위해 프로젝트 진행을 정지한 채 마비상태에 빠져서는 안된다.
- 대부분의 시간은 단편적인 개선에 소요되고 연속적인 각 정제 과성 속에서 서서히 모델에 대한 통찰력을 얻게 된다.
- 중요한 도메인 개념을 조사하고 그러한 개념을 모델 내에 명시적으로 표현한다.
- 유연해지도록 설계를 정제하고 모델의 정수를 추출한다.
- 도약에 앞서 명확함을 늘리는 데 도움이 되는 계층을 만드는 노력을 해야한다.
728x90
'도메인 주도 설계' 카테고리의 다른 글
[도메인 주도 설계] 09. 암시적인 개념을 명확하게 (2) (0) | 2022.01.26 |
---|---|
[도메인 주도 설계] 09. 암시적인 개념을 명확하게 (1) (0) | 2022.01.20 |
[도메인 주도 설계] 3부. 더 심층적인 통찰력을 향한 리팩터링 (1) | 2022.01.11 |
[도메인 주도 설계] 07. 언어의 사용(확장 예제) (2) (0) | 2022.01.06 |
[도메인 주도 설계] 07. 언어의 사용(확장 예제) (1) (0) | 2022.01.06 |
Comments