0w0

Ddd 도입을 위해 한 것

DDD 사례로 커버할 수 있는 것, 할 수 없는 것

전제지식: DDD의 목적

  1. 소프트웨어 기능성 상승 => 기능성 = 고객에게 도움되는 것

  2. 소프트웨어 보수성 상승 => 보수성 = 긴 시간이 지나도 기능 확장이 용이한 것

DDD의 목적: 고객에 도움이 되는 소프트웨어를 빈번하게 갱신할 수 있도록 한다.

부드럽게 진행된 것

테스트코드 양을 늘었을 때, 모델링하고 싶은데 같이 몹 프로그래밍해주실 수 있나요? 들으면 변화를 실감함

고전한 것, 시도한 것

DDD를 도입 후, 제품 기능성을 높히는 것이 힘들었다 하더라.

제품을 활용하기 위한 구조

정리

거대 레거시 시스템의 전략평가와 리팩토링에 의한 DDD 활용사례

DDD를 사용해 레거시 시스템의 품질상승에 대한 이야기

DDD 도입이유1 코어 도메인을 결정해 개발 비용 대비 효과 상승을 위해

코어도메인: 시스템 경쟁우위성을 발휘해서 더욱 부가가치를 높힐 수 있는 영역

시도한 것

예시: 해결하고 싶은 문제 등...

사업영역을 명확히 하고, 코어 도메인을 특정할 수 있었다.

고전한 것

DDD 도입이유2 레거시 시스템의 기술적 부채 해소

이런 목적으로 설계개선을 했다.

그러나 개발조직 전체에 의도, 목적이 공유되지 않으면 혼란을 일으킬 가능성이 있다.

실제로 초기에는 다른 멤버가 Rails스러운 개발을 해서 부채를 해소할 수 없었다.

고전한 것

기반 시스템 변경을 편하고 안전하게 한다

위의 케이스는 비교적 젊은 케이스지만 이번 케이스는 전통적인 대규모 기업에 의한 DDD 실전을 다름

계획한 안건

계획한 안건의 주제

현장에서 하고 있는 것

결과

DDD 도입으로 시스템 사양 관리가 막대한 Excel 시트에서 업무 매뉴얼 + 소스코드로 변경할 수 있었다.

또한 비즈니스 로직이 도메인 오브젝트로 집약되서 기능 개선에 따른 코드 변경량이 감소되었다.

감상

DDD를 무조건 도입하는 것이 아니라, 소규모한 곳부터 시작해 팀 멤버에 장점을 실감시키는 것이 중요하다 생각한다.

DDD는 소프트웨어 가치를 높히는 수단이며, 가장 중요한 시스템의 코어 도메인을 관계자와의 교류에서 확인하는 것이라는 사실을 도입하면서 알 수 있었음.

엔지니어라 하여, 시스템이 다루는 사업에 무관심할 수 없다는 것을 재확인함.