22.02.2017 Views

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

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

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

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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

창고<br />

고객 주문 발송 및 반품, 재고 수준 관리 등<br />

추천<br />

특허 출원 중이며 획기적인 우리의 추천 시스템으로 일반 연구소보다 박사 비율이 높은 팀이 매우 복잡한 코드로<br />

작성함<br />

처음 해야 할 일은 이 콘텍스트들을 대표하는 패키지를 생성하는 것이다. 그다음에는 기존 코드<br />

를 패키지로 이동시킨다. 현대적인 IDE에서 코드 이동은 리팩토링 기능을 통해 다른 작업 중에<br />

자동적이고 점진적으로 이뤄질 수 있다. 하지만 코드 이동에 따른 오류를 잡아내기 위해 여전히<br />

테스트가 필요하다. 특히 IDE가 리팩토링하는 데 더 까다로운 동적 타입 언어를 사용한다면 더<br />

욱 그렇다. 시간이 지나면서 우리는 잘 어울려 남아 있는 코드와 그렇지 못한 코드를 알아가기<br />

시작한다. 대개 끝까지 생존한 코드가 우리가 간과했을지 모를 경계가 있는 콘텍스트로 인식될<br />

수 있다!<br />

이 과정에서 우리는 패키지 간의 의존성을 분석할 수 있는 코드를 사용할 수 있다. 우리가 만든<br />

코드는 우리 조직을 대표해야 마땅하므로 경계가 있는 콘텍스트를 대표하는 패키지들은 실세계<br />

에서 도메인과 같은 방식으로 상호작용해야 한다. 예를 들어 스트럭처 101 Structure 1013 과 같은<br />

도구는 패키지 간의 의존성을 시각적으로 표현한다. 예를 들어 실제 조직에서는 창고부서가 재<br />

무부서에 전혀 의존성이 없지만 창고 패키지의 코드가 재무 패키지에 의존성이 있는 것처럼 뭔<br />

가 잘못된 것이 보이면 우리는 이 문제를 파악하고 해결할 수 있다.<br />

이 과정은 작은 코드베이스의 경우 반나절로 충분하지만, 수백만 라인의 코드를 처리하는 데는<br />

수주 또는 수개월이 걸릴 수 있다. 첫 번째 서비스를 분리하기 전에 모든 코드를 도메인에 따라<br />

나눠진 패키지들에 따라 정렬할 필요는 없으며, 그러한 노력을 우선 한 곳에 집중하는 것이 더<br />

가치 있을 것이다. 한번에 모든 것을 바꾸려는 빅뱅 big-bang 접근법을 취할 필요는 없고, 이 과정<br />

을 천천히 조금씩 진행되는 것으로 인식해야 한다. 그리고 우리에게는 이 분해 과정을 추적할<br />

수 있는 많은 도구가 있다.<br />

이제 접합부 주변으로 코드베이스의 구조를 변경했다. 다음 과정은 무엇일까?<br />

3 옮긴이_ 스트럭처 101은 애자일 <strong>아키텍처</strong> 개발 환경(Architecture Development Environment)으로, 코드베이스의 구조화를 돕기<br />

위해 다양한 IDE를 위한 플러그인을 제공한다. 자세한 내용은 https://structure101.com을 참고하라.<br />

5장 모놀리스 분해하기<br />

127

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

Saved successfully!

Ooh no, something went wrong!