#1 도메인 주도 설계 첫걸음

99·2023년 9월 23일
0
post-thumbnail

도메인 주도 설계 방법론은 크게 두 가지 주요 부분으로 나눌 수 있다.

바로 전략적 설계와 전술적 설계다.

DDD의 전략적인 측면은 '무엇'과 '왜' 라는 질문에 대한 정답을 찾는 것이다.

즉 우리가 어떤 소프트웨어를 만드는지, 그리고 왜 그 소프트웨어를 만드는지에 대한 해답을 찾는 것이다.

다음으로 전술적 측면은 '어떻게?' 라는 방법에 대한 것이다.

즉, 소프트웨어 각각의 구성요소가 구현되는 방법을 찾는 것이다.

비즈니스 도메인이란?

비즈니스 도메인은 기업의 주요 활동 영역을 정의한다. 일반적으로 말하자면 회사가 고객에게 제공하는 서비스를 말한다. 예를 들면 다음과 같다.

  • 페덱스는 배송서비스를 전송한다.
  • 스타벅스는 커피로 가장 잘 알려져 있다.
  • 월마트는 가장 널리 알려진 소매업체 중 하나다.

기업은 여러 비즈니스 도메인을 운영할 수 있다. 회사가 비즈니스 도메인을 자주 변경할 수 있다는 점도 주목해야 한다.

하위 도메인이란?

비즈니스 도메인의 목표를 달성하기 위해 기업은 여러가지 하위 도메인을 운영 해야 한다.
하위 도메인은 비즈니스 활동의 세분화된 영역이다.하위 도메인은 전체 시스템에서 하나의 구성요소일 뿐인다.
각각의 하위 도메인은 회사의 비즈니스 도메인에서 목표를 달성하기 위해 서로 상호작용해야 한다.
소프트웨어 시스템이 다양한 아키텍처 구성요소로 이뤄진 것처럼, 하위 도메인은 서로 다른 전략적 비즈니스 가치를 가진다.
도메인 주도 설계에서 하위 도메인은 핵심, 일반, 지원의 세 가지 유형으로 구분한다. 이 세 유형이 회사의 전략 관점에서 어떻게 다른지 살펴보자.

핵심 하위 도메인

핵심 하위 도메인은 회사가 경쟁 업체와 다르게 수행하고 있는 것을 말한다. 가령 새로운 제품이나 서비스를 발명하거나 기존 프로세스를 최적화하여 비용을 줄이는 것이 그렇다.
경쟁력을 유지하기 위한 핵심 하위 도메인에는 발명이나 스마트 최적화, 비즈니스 노하우, 또는 다른 지적 재산이 포함된다.

- 복잡성

구현하기 쉬운 핵심 하위 도메인은 일시적인 경쟁 우위만을 제공할 수 있다. 따라서 핵심 하위 도메인은 자연스럽게 복잡해진다.
회사의 핵심 비즈니스는 높은 진입장벽이 있어야 한다.
경쟁사가 회사의 솔루션을 모방하거나 복제하기가 어려워야 한다.

- 경쟁 우위의 원천

핵심 하위 도메인에 반드시 기술이 들어가야 하는 것은 아님을 알아야 한다.
모든 비즈니스 문제가 알고리즘이나 기술 솔루션으로 해결되지 않는다.
회사의 경쟁 우위는 다양한 원천에서 나올 수 있다.

일반 하위 도메인

일반 하위 도메인은 모든 회사가 같은 방식으로 수행하는 비즈니스 활동을 말한다.
핵심 하위 도메인과 마찬가지로 일반 하위 도메인은 일반적으로 복잡하고 구현하기 어렵다. 그렇나 일반 하위 도메인은 회사에 경쟁력을 제공하지 않는다.
이미 실무에서 검증된 솔루션으로 널리 이용 가능하며, 모든 회사에서 사용하고 있어서 더 이상 혁신이나 최적화가 필요 없다.

지원 하위 도메인

지원 하위 도메인은 회사의 비즈니스를 지원하는 활동을 말한다. 그러나 핵심 하위 도메인과 달리 지원 하위 도메인은 어떠한 경쟁 우위도 제공하지 않는다.

회사가 해결할 수 있는 문제가 더 복잡해 질수록 더 많은 비즈니스 가치를 제공할 수 있다.

복잡한 문제는 소비자에게 서비스를 제공하는 것에 국한되지 않는다. 예를 들어, 복잡한 문제를 해결하면 비즈니스를 더욱 최적화하고 효율적으로 만들 수 있다. 또한 경쟁업체와 동일한 수준의 서비스를 더 낮은 운영 비용으로 제공하는 것으로 경쟁 우위를 얻을 수 있다.

핵심 하위 도메인은 복잡하다.

회사의 수익성이 좌우되기 때문에 경쟁업체가 최대한 모방하기 어려워야 한다.
그래서 회사는 전략적으로 핵심 하위 도메인으로 복잡한 문제를 해결하려고 한다.

핵심 하위 도메인은 자주 변경 될 수 있다.

한 번의 시도로 문제가 해결될 수 있다면 경쟁자들도 빠르게 따라잡을수 있기 때문에 아마도 경쟁 우위에서 좋은 위치는 아닐 것이다. 핵심 하위 도메인에 대한 개선 작업은 끝이 없다. 기업은 지속적으로 혁신하고 발전한다. 경쟁사보다 앞서기 위해서 핵심 하위 도메인의 지속적인 진화는 필수적이다.
핵심 하위 도메인과 달리 지원하위 도메인은 자주 변경되지 않는다. 지원 하위 도메인은 기업에 어떠한 경쟁 우위도 제공하지 않ㄴㄷ기 때문에 지원하위 도메인의 개선은 핵심 하위 도메인에 투자한 동일한 노력에 비해 아주 작은 비즈니스 가치를 제공한다.

핵심 하위 도메인은 가장 중요하고, 변동성이 있고, 복잡하다. 따라서 가능한 한 많이 정제하는 것이 중요하다.

이러한 노력은 우리가 일반 및 지원 기능 모두를 추출하고, 훨씬 더 우리가 집중하고 있는 기능에 시간을 투자할 수 있게 한다.

하위 도메인은 소프트웨어 설계 의사결정을 내리는 프로세스의 어려움을 쉽게 해결하도록 돕는 도구다.

모든 조직에는 경쟁 우위를 제공하지만 소프트웨어와는 아무 관련이 없는 비즈니스 기능이 꽤나 많다. 하위 도메인을 찾을 때 소프트웨어와 관련되지 않은 비즈니스 기능을 식별하고, 그 자체로 인정하며, 작업 중인 소프트웨어 시스템과 관련된 비즈니스에 집중하는 것이 중요하다.

profile
이동의 새로운 패러다임 turtle입니다.

0개의 댓글