Today I Learned

[도메인 주도 설계] 08. 도약 본문

도메인 주도 설계

[도메인 주도 설계] 08. 도약

하이라이터 2022. 1. 11. 20:54
728x90

  • 리팩터링의 효과는 선형적으로 증가하지 앟는다.
  • 개발자는 개별적인 코드 개선과 모델 개선 작업을 토대로 좀 더 명확한 시각을 갖게 된다.
  • 이러한 명확성을 바탕으로 통찰력을 도약시킬 수 있는 가능성이 열린다.
  • 복잡성이 사라지는 바로 그 때 갑자기 모델의 융통성과 표현력이 높아진다.
  • 이런 부류의 도약은 기법이 아니라 사건이다.
  • 중요한 것은 무슨 일이 일어나는지 인식하고 이를 어떻게 처리할 지 결정하는 것이다.

 

도약에 관한 일화

  • 투자은행에 사용될 대형 신디케이트론 관리 애플리케이션의 핵심적인 부분에 대한 개발 예제
    • 여러 대출 회사가 모여 퍼실리티를 지원할 자금을 공동으로 출자하는 채권은행단을 구성한다.
    • Loan Investment(대출 투자)는 Facility(퍼실리티) 내에서의 지분(share)에 비례하는 특정 투자자의 Loan(대출) 부담액을 표현하는 파생 객체다.
    • 하지만 대출사는 항상 Facility에 포함된 지분만큼 제공하지 않는다. 다른 회사와 협의를 거쳐 더 적거나 많은 금액을 제공하기도 한다. 그래서 Loan Adjustment(대출 조정)을 추가해서 이 요구사항을 수용할 수 있었다.
    • 다양한 종류의 거래 규칙으로 인해 복잡도가 점점 증가했다. 또한 복잡해지는 알고리즘 탓에 반올림 불일치 문제가 발생했다.
  • 도약
    • Loan의 지분과 Facility의 지분을 상호독립적으로 변경 가능하다는 것을 깨닫고 새로운 모델을 시각화할 수 있었다.
  • 더 심층적인 모델
    • "투자(Investment)"와 "대출투자(Loan Investment)"는 기본적인 개념인 지분(share)의 두 가지 특수한 경우에 불과하다는 사실을 알게되었다.
    • 퍼실리티의 지분, 대출의 지분, 상환액 분배 등 지분은 모든 곳에 존재하고, 분배할 수 있는 값을 의미한다.
    • 분석 과정을 거쳐 Facility와 Loan의 지분은 "Share Pie(지분 총액)"라는 개념으로 통합됐다.
    • 새로운 모델에서는 부적절한 제약사항을 제거해서 많은 문제점을 해결할 수 있었다.

 

기본에 집중하라

  • 도약을 위해 프로젝트 진행을 정지한 채 마비상태에 빠져서는 안된다.
  • 대부분의 시간은 단편적인 개선에 소요되고 연속적인 각 정제 과성 속에서 서서히 모델에 대한 통찰력을 얻게 된다.
  • 중요한 도메인 개념을 조사하고 그러한 개념을 모델 내에 명시적으로 표현한다.
  • 유연해지도록 설계를 정제하고 모델의 정수를 추출한다.
  • 도약에 앞서 명확함을 늘리는 데 도움이 되는 계층을 만드는 노력을 해야한다.

 

728x90
Comments