메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

[리뷰] 마이크로서비스 아키텍처를 읽고

gong***

|

2017-03-30

마이크로서비스 아키텍처 구축

마이크로서비스, 웹 기반 분산 시스템의 디자인 패러다임을 바꾸다!

  • 저자 : 샘 뉴먼
  • 번역 : 정성권
  • 출간 : 2017-03-01

마이크로서비스 아키텍처는 작년에 처음 접한 것 같다. 요새는 너무 많은 것들이 쏟아져 나오기 때문에 어느 하나 정확하게 개념을 파악하기란 쉽지 않다.


그때는 추상적인 관점에서 개념을 익히는 수준의 지식만을 파악했었다. 작은 서비스이며, 기술적인 수평 계층보다는 비즈니스 관점에서의 수직적인 경계로 서비스를 나눈다는 사실과 SOA의 하위 영역이라는 것들이다. 그 외에 간단한 패턴 정도만 봤던 기억이 있다.


“마이크로서비스 아키텍처 구축 – Building Microservices”라는 이 책을 선택한 이유는 마이크로서비스에 대해 좀 더 깊이 있는 지식을 얻고 실제적인 구현 방향을 제시 받고 싶어서 였다.


“1장 마이크로서비스” 으로 부터 정리 편인 “12장 종합정리” 이 책은 모두 12장으로 구성되어 있다. 1장과 2장의 경우는 마이크로서비스 정의, 특성, 혜택 및 단점등을 서술하고 있다. 1,2장을 잘 읽어보면, 이 책이 일관성 있으며, 필요한 기술이나 지식을 체계적으로 서술하고 있다는 것을 금방 알 수 있다.


1장의 내용을 간략하게 정리해 보면, 마이크로서비스는 충분히 작아서 더 이상 작아질 수 없는 크기를 가지는 단일책임원칙(SRP)에 입각해야 하며, 시스템 내 다른 서비스와 독립적으로 운영되고 변경할 수 있는 “자율성”이라는 특성을 가져야 한다. 잘 구현한 마이크로서비스 아키텍처는 여러가지 혜택을 얻을 수 있는데, 기술이기종성, 회복성, 확정성, 배포용이성, 조직부합성, 조합성, 대체 가능성을 위한 최적화 등이다. 앞에 이야기한 혜택은 잘 만들어진 구조의 마이크로서비스 시스템일 경우이고 “은총알은 없다”는 유명한 격언을 인용하며 마이크로서비스의 단점에 대해서 이야기하고 있다. 사실 이 단점이란 것이 너무나도 중대해서 마이크로서비스의 다른 혜택을 모두 무효화 할 수 있을 정도이기 때문에 이 책에서는 이 단점들을 극복할 수 있는 아키텍처나 패턴, 방안들을 제시하고 있다고 보는 게 좋다.

 

2장에서는 진화적인 아키텍트라는 관점에서 아키텍트의 역할과 책임을 기술하고 있는데, 개인적으로 공감가는 내용이다. 마이크로서비스 설계 원칙에는 구역화(ZONE)를 다루는데 이 것은 이후 서비스 경계와 비슷한 개념으로 구역간의 표준화된 통신 프로토콜을 강조한다. 원칙적인 접근법에는 전챡적인 목표와 잘 작동하는 애플리케이션 작동 원칙을 다른다,  또한 좋은 마이크로서비스 필수 기준 등도 제시한다. 추상적인 내용이지만, 많은 것을 생각하게 하는 내용들이다.

 

1-2장을 읽고 이후 내용을 읽어보면 앞 두 장의 내용을 바탕으로 서술되어 있다는 것을 알 수 있다.

마이크로서비스는 단일책임원칙에 따른 경계가 있는 컨텍스트 위주로 시스템을 구분하기 때문에 하나의 모놀리식 시스템을 분해하면 다수의 마이크로서비스 가 생성되게 되고 이는 지속적인 통합(CI-Continuous Integration), 지속적인 배포(CD-Continuous Deployment), 테스팅, 보안등의 문제를 유발하게 된다. 이 책에서는 이런 문제를 해결할 수 있는 여러 방안들과 패턴, 기술 프레임워크 등을 제시하고 있다. 여기에 기술한 내용들은 마이크로서비스 아키텍처 구현에만 국한되지 않고 다양하게 적용할 수 있는 내용인 것 같다. 마이크로서비스 구축후의 관리비용의 선형 증가를 막기 위한 모니터링에 대한 내용도 기술되어 있다.

이 책은 마이크로서비스 시스템의 코딩을 통한 구현보다는 아키텍처 설계에 대한 이론과 원칙을 주로 다루고 있다. 또한 물리적인 구성이나 마이크로서비스 개발과 운영을 잘 할 수 있는 여러 오프 소스 기반의 기술들을 설명하고 있다.

 

따라서 마이크로서비스를 잘 운영하려면 상당한 환경 구축 지식과 해당 분야 기술 및 프레임워크를 사용할 수 있는 역량이 있어야 할 것으로 생각된다. 마이크로서비스는 소규모 시스템이 대상이라기 보다는 대용량 분산 환경에 맞춰진 아키텍처인 것 같다. 따라서 가상화나 클라우드 시스템에 탑재되어 사용할 때 적합한 기술인 것 같다.

 

아직 가상화나 클라우드, 이 책에서 언급하고 있는 각종 기술들에 대한 지식이 별로 없어 책을 완벽하게 이해할 수 없었고 더욱 열심히 공부해야겠다는 오기가 생기가 한 책이다. 책 내용에 대한 이해는 70~80% 정도 였는데, 여기에는 세부기술에 대한 이해 부족과 내용 중에서 번역이 이해가 되지 않는 경우로 나눌 수 있다. 대부분은 기술 이해 부족이지만, 번역 과정에서 문맥이 이상한 부분도 상당한 것으로 판단된다. 아마 너무 번역을 매끄럽게 하려고 한 것이 독이 되지 않았을까하는 생각이다.

 

글을 잘 적는 것은 아니지만, 157 페이지 마지막 문장, "특정 마이크로서비스에 대한 어떤 테스트가 수행되어야 하는지 언제든지 알 수 있도록 테스트는 마이크로서비스 소스 코드가 있는 소스 컨트롤 시스템에 있어야 한다." 라는 문장이 있는데 너무 길고 금방 이해가 안된다. 개인적으로 이렇게 바꾸면 더 쉽지 않을까 하는 생각해 보는데 "특정한 마이크로서비스에 대한 테스트는 소스컨트롤에 소스 코드와 같이 있어야 한다. 이는 특정한 서비스에 대한 테스트가 실행되는 것을 항상 인지하도록 하기 위해서이다." 처럼 두 문장으로 나눠주었으면 더 이해가 쉽지 않았을까 한다.

전반적으로 마이크로서비스 아키텍처 구축에 대한 전반적인 내용을 익히기에는 좋은 책이나, 마이크로서비스 아키텍처에 관심있는 입문자라면 “대용량 아키텍처와 성능 튜닝, 조대협”을 한 번쯤 읽고 접한다면 도움이 될 듯하다. 아키텍처나 패턴에 어느 정도 익숙한 분이라면 읽어볼 만한 책으로 추천한다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?