22.02.2017 Views

마이크로서비스 아키텍처 구축 : 대용량 시스템의 효율적인 분산 설계 기법_맛보기

샘 뉴먼 저/정성권 역 | 한빛미디어 | 2017년 03월 26,000원

샘 뉴먼 저/정성권 역 | 한빛미디어 | 2017년 03월
26,000원

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

스의 나머지 코드에 영향을 주지 않고 배포할 수는 없다. 따라서 반드시 전체 시스템을 재배포<br />

해야 한다.<br />

마이클 페더스의 『레거시 코드 활용 전략』(에이콘출판사, 2008 ) 2 에서는 접합부 seam 의 개념을<br />

‘코드베이스의 나머지 부분에 영향을 주지 않는 격리된 코드 부분’이라고 정의한다. 우리는 접합<br />

부를 찾아내기 원한다. 그러나 코드베이스를 정리할 목적으로 접합부를 찾기보다는 서비스의 경<br />

계가 될 수 있는 접합부를 발견하기 원한다.<br />

그렇다면 무엇이 좋은 접합부를 만들까? 우리가 이전에 논의했던 것처럼 경계가 있는 콘텍스트<br />

bounded context 는 훌륭한 접합부를 만든다. 경계가 있는 콘텍스트의 정의가 조직 내의 응집력 있고<br />

느슨히 결합된 경계를 잘 표현하기 때문이다. 따라서 첫 번째 단계는 우리 코드에서 이 경계를 인<br />

식하는 것이다.<br />

대부분의 프로그래밍 언어는 유사한 코드를 그룹화하는 네임스페이스 개념을 제공한다. 자바의<br />

package 개념은 아주 적절한 예는 아니지만, 우리가 필요로 하는 많은 점을 시사한다. 다른 대<br />

부분의 주류 언어도 package와 유사한 개념을 내장하고 있지만 자바스크립트는 논란의 여지가<br />

있으니 예외로 하자.<br />

5.2 뮤직코퍼레이션 분해하기<br />

뮤직코퍼레이션 온라인 <strong>시스템의</strong> 아주 많은 행동양식 behavior 을 구성하는 거대한 모놀리식 서비<br />

스 백엔드가 있다고 가정하자. 우선 3장에서 논의했듯이 우리 조직에 존재한다고 생각되는 상<br />

위 수준의 경계가 있는 콘텍스트를 인식해야 한다. 그러면 모놀리식 백엔드가 매핑하고 있는<br />

경계가 있는 콘텍스트를 이해하고 싶어질 것이다. 모놀리식 백엔드가 포함하고 있다고 생각되는<br />

4개의 콘텍스트를 초기에 파악했다고 하자.<br />

제품 목록<br />

판매하는 제품에 대한 모든 메타데이터<br />

재무<br />

계정, 결제, 환불 등의 보고<br />

2 『Working Effectively with Legacy Code』(Prentice Hall, 2004)<br />

126 <strong>마이크로서비스</strong> <strong>아키텍처</strong> <strong>구축</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!