도메인 스토리텔링 응용 7
DDD 에서 소개된 표현이고 MSA 채용에 있어 필수적이라고 할 수 있는 느슨한 연결(loosely coupled)을 가능하게 하는 핵심 개념이 Bounded Context 이다.
<MSA를 대하는 개발자의 필수 마음자세>에서 인용했듯이 DDD 책에서 Bounded Context 정의는 아마도 영어권에서는 긴 설명이 필요하지 않는 용어라 할 수 있다.
An individual BOUNDED CONTEXT still does not provide a global view. The context of other models may still be vague and in flux.
맥락(context)에 경계가 있다는 의미일 뿐이다.
그런 탓에 영어권이 아닌 우리나라 개발자에게는 더 익히기 어려운 개념이 되기도 한다.
나는 최근에 동료의 도메인 스토리텔링 결과물로 관계자들과 소통을 하면서 그림 안에 자기가 염두하고 있는 내용과 그렇지 않은 내용을 동시에 발견하는 광경을 목격했다. 마치 참여자들 관심사의 합집합과 같은 도면을 보면서 다양한 쟁점을 논의하자 소통이 훨씬 나아진다는 사실을 깨달은 것이다.
릴리즈 속도나 개발팀 구분과 같은 다른 변수도 있었지만 무엇보다 매장에서 일하는 두 종류의 사람과 본사의 기존 시스템 입장을 구분하기 위해 접수기라는 개념을 소개했다. 현재는 접수기가 별도의 앱이 되었지만, 최초 논의 시점에서는 아래 그림에서 파란색으로 표시한 영역의 사용자 인터페이스를 지칭했다. 개선한 사용자 경험을 실현하는 객체의 이름이 바로 접수기였다.
이러한 구분이 전형적인 맥락 나누기의 사례다. 이렇게 나눠진 맥락이 바로 Bounded Context라고 할 수 있다. 우리 말로 맥락 구분이라 말해도 되고, 더 나은 방법은 각 맥락에 이름을 붙여주는 일이 될 수도 있다.[1]
어색함은 새로운 일이란 증명일 뿐이다. 세상에 유익한 소프트웨어를 제대로 고안하려면 이런 부드러운 경계 만들기에 익숙해져야 한다. 이렇게 경계를 만들면 좋아지는 점이 입장이 확연히 구분되고 이인삼각처럼 발목이 묶인 논의가 아니라 두 개의 서로 다른 입장으로 소통할 수 있다는 점이다. 조금 시적으로 표현하면
소프트웨어 공학에서 추구하는 Loosely Coupled 의 씨앗이 마련된 것이다.
해당 도메인에 대한 긴 설명을 할 수 없어 맥락 구분의 근거에 대해 약간의 부연 설명을 하고 예시를 마친다. 매장은 기부자와 활동천사라는 두 가지 유형의 사용자 경험이 중요하다. 반면에 붉은 색으로 보여지는 영역에서는 매니저가 보통 다수로 벌어진 기부 기록을 추적하고 누락한 정보나 확인 사항(메모)에 대한 판단들을 할 수 있도록 설계하고 만들어져야 한다.
둘을 하나로 묶으면 한쪽의 입장만 지지하는 사람들 사이에서 경합이 일어나고 종종 아무도 행복하지 않은 기계적인 중간값으로 소프트웨어가 만들어지고는 한다. 이렇게 만들어진 소프트웨어가 과거에 굉장히 많았다는 사실을 10여년 전에 봤던 책 제목이 유쾌하게 표현했다.
다시 Bounded Context를 도식화 한 그림을 보자. 도메인 안쪽에 BoundedContext를 그려뒀다. 그 안에 들어있는 알맹이(내용)은 Ubiquitous language 이다. Ubiquitous language의 우리말 해석은 단어 그대로 번역하기보다는 우리팀의 언어와 같은 전용의 언어를 지칭하는 말이 적합하다.
우리팀 언어의 맥락을 안전하게 경계를 만들어 둔 사고의 틀을 바로 BoundedContext라고 한다. 설사 단어가 같다고 해도 우리팀 언어와는 구분된다. 그렇게 맥락을 구분하는 수단이 바로 BoundedContext 이다. 다시 자주 인용하던 그림을 또 보자.
이렇게 입장에 따라 구분지은 맥락 안에서 우리의 전용 언어(Ubiquitous Language)를 정의(개발)한다면 소통이 보다 안전해진다.(오해 소지가 줄이들고 전달력이 높이진다.) 그래서 개발자와 영업, 사용자가 같은 가치관으로 노력(혹은 사용)하는 것이 우리가 흔히 말하는 비전의 효과다.
6. 도메인 모델, Ongoing 설계 그리고 정원관리
[1] 이런 부드러운 정의와 활용에 대해 대부분 어색해한다. 나는 이런 현상이 아직 우리 사회가 소프트웨어 활용에 익숙치 않다는 증거라 생각한다. 반면에 아직 사회경험이 없고 디지털 네이티비인 우리집 꼬맹이들은 이런 사고가 편안하다)