einar landre넬슨 제독이 1805년 트라팔가에서 프랑스와 스페인 함대를 격파한 이후, “분할 후 정복(Divide and Conquer)”은 복잡하고 어려운 문제를 다루는 슬로건(상징)이 되었습니다. 동일한 의미를 가지는 좀더 친숙한 용어로 “걱정 거리의 분리 (Separation of Concern)”가 있습니다.

걱정 거리의 분리로부터 우리는 캡슐화를 얻게 되고, 캡슐화로부터 우리는 경계와 인터페이스를 얻게 됩니다.

아키텍트의 관점에서, 가장 어려운 부분은 동작하는 시스템을 구축하기 위해 필요한 적당한 인터페이스를 정의하고, 경계를 정하는 자연스러운 위치를 찾는 것입니다.

이것은 거대한 엔터프라이즈 시스템에서는 특히 어려운 일입니다. 이런 상황에서, “결합도는 낮추고, 응집도는 높여라”와 “정보 교환이 자주 발생하는 영역들은 나누지 말아라”와 같은 오래된 명언이 몇 가지 지침을 제공합니다. 하지만 명언들은 어떻게 쉬운 방법으로 이해당사자들에게 가능성 있는 해결방안과 문제들을 대해 소통할 수 있는지 알려주지 않습니다.

여기, Eric Evans의 책인 Domain-Driven Design (Addison-Wesley Professional)에서 설명한, bounded context(문맥 정합)와 context mapping(문맥 맵핑)의 개념이 위에서 언급한 이해 당사자들과 소통의 문제를 해결해 줍니다. Bounded Context(문맥 정합)는 모델이나 개념을 고유하게 정의하는 영역입니다.  그리고 우리는 bounded context를, 설명 부를 가진 구름 또는 거품으로 표현합니다. 이 설명 부는 도메인에 가까운 모델 또는 개념의 역할과 책임을 정의합니다.

한가지 예를 들자면, 운송 시스템은 화물 운송, 화물 일정, 항구 이송과 같은 컨텍스트(문맥)를 포함합니다. 다른 도메인에서는, 다른 이름들을 사용하는 것이 적합할 것입니다.

Bounded context(문맥 정합)들을 화이트 보드 위에 식별하고, 같이 그림으로써, Context(문맥)간에 연관관계를 그리는 것을 시작할 수 있습니다. 이러한 연관 관계들은 조직적, 기능적, 기술적 의존성을 설명하면 좋습니다.  이러한 행위의 결과로, 컨텍스트(문맥)간에 인터페이스와 동일한 의미라 인식한 컨텍스트의 집합을 나타내는, Context Map이 생기게 됩니다.

Context Map은 아키텍트에게 무엇을 같은 걸로 볼지, 별개의 것으로 볼지 초점을 맞출 수 있고, 대화 방식을 현명하게 분할 후 정복 할 수 있는 강력한 도구를 제공합니다. 이러한 기술은 현상 상황(as-is situation)을 분석하고 문서화하여 쉽게 사용할 수 있습니다. 이런 지침을 통해 약한 결합, 높은 응집, 잘 설계된 인터페이스로 특색을 나타내는 더 나은 시스템으로 재설계 할 수 있습니다.

Written By Einar Landre

이 자료는 Creative Commons Attribution 3 라이센스를 준수합니다.

Join the conversation! 7 Comments

  1. 영수님, 내일 세미나 기대합니다. 🙂

    응답
    • 효중님

      이거 부담 백배군요. 기대라니요..
      그냥 이런게 있구나 해주세요..

      주최 측에서 EA만 다루지 말라고 해서
      패턴 10분, EA 활용 10분 이렇게 다룰거 같아요 🙂

      응답
  2. 이런말 하면 저분께 예의가 아니겠지만 게임캐릭터 같은 강렬한 인상의 소유자시네요. 내용에서 나왔듯이 “적당한 인터페이스를 정의하고, 경계를 정하는 자연스러운 위치를 찾는 것”은 참 중요한 문제인것 같습니다.
    추가적으로 회사를 옮길때마다 느끼는거지만 달랑 코드만 보고 맞는 인터페이스와 경계를 정해서 확장하는건 항상 어렵더라구요.^^;

    응답
    • 아 예리하시군요.
      microsoft의 수장이니, 아무래도, 강렬한 인상이 있어야 겠지요 🙂 ㅎㅎㅎㅎ

      인터페이스를 정의하고 경계를 정의하는 것이 아마 설계의 key 이슈인것 같습니다.
      SoC 의 맥락하고도 같은거 같구요.

      조금더 경험도 많이 쌓이고, 틈틈히 간접 경험도 쌓아야 겠지요 ㅎㅎㅎ
      cevin님도 힘내시고, 꾸준히 걸어가 보자구요 🙂

      응답
  3. 아뉘~ 이분이 ms의 수장이란 말입니까??
    UFC 경기에서 뵌분 같은데~

    그나저나 ‘대화 방식을 현명하게 분할 후 정복 할 수 있는’이란 구문이 좀 어색해서 확인해보니 정말로 아래와 같네요.

    ‘enabling them to divide and conquer wisely in a communicative way’

    이런 말씀을 하시는 분들은 정말 뼈속까지 computer science의 유전자가 있어서 이러한 표현이 나오는 걸까요?

    응답
    • 하이 🙂 상정

      니가 말하고 보니
      “대화 방식을 현명하게 분할 후 정복 할 수 있는 강력한 도구를 ”

      이 부분이 좀 어색한거 같긴 같네 .. 좀더 부드러운 어휘를 찾아 볼께 🙂

      응답
  4. […] 있는 Post가 있습니다.  Microsoft 수석 프로그래머인 Einar Landre가 작성한 “아키텍트의 초점은 경계와 인터페이스에 있다“를 보시길 바랍니다.  이러한 경계를 잘 정하기 위해 DDD에서 언급한 […]

    응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.

카테고리

Articles, My Activity, Software Architecture, Software Engineering, Study

태그

, , ,