brunch

You can make anything
by writing

C.S.Lewis

by 조인석 chris Apr 10. 2017

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

"마이크로서비스 아키텍처 구축 (한빛미디어, 2017)" 독후감

근래에 소프트웨어 아키텍처를 논할 때 항상 화자 되는 녀석이 바로 '마이크로 서비스 아키텍처'이다. 기존의 제품을 만들기 위한 모든 기술을 통일시켜 하나의 거대한 소프트웨어를 만드는 '모놀로식(Monolothic) 아키텍처' 방식에서 벗어나, 도메인의 경계를 나눠서 서비스를 분리하고, 프로젝트 표준 기술을 따르기보다는 각 서비스에 가장 적절한 기술을 선정하여 개발을 한 뒤, 서비스 조각들을 각각의 소프트웨어로 독립적으로 배포하는 개념이 '마이크로서비스 아키텍처'이다. 그리고 이는 단지 독립적인 기술 선정을 떠나서, 한 서비스의 장애 전파를 방지하거나, 소스 코드가 변경이 되었을 때 배포의 단위를 최소로 줄여서 사고가 날 확률을 줄인다거나, 개발팀의 크기를 서비스 모듈의 크기와 동일시하여 하나의 제품에 대한 오너십을 온전히 가진 개발팀을 운영하는 등의 장점을 가지고 있다.


2년 전쯤인가, 마이크로서비스 아키텍처를 상세하게 서술한 책을 구매하고 싶었다. 그 당시에 한국에는 그렇다 할 책이 없어서 결국 해외 원서를 구매했건만, 시간이 흘러도 당최 읽어지지가 않더라. 그런데, 최근에 반가운 소식이 들려왔다. 본 책이 번역되어 출판이 되었다는 것이다. 그리고 "한빛 리더스"라는 활동으로 해당 책의 리뷰를 하게 되는 기회를 잡게 되었다.

책은 전반적으로 마이크로서비스 아키텍처를 구축하기 위해 알아야 할 기본 지식들을 소개하고 있으며, 저자가 경험한 사례들을 적절하게 공유하고 있다. 단, 코드 레벨의 상세한 적용 방법은 담고 있지 않아서, 이 책을 보고 무언가를 직접 실습하는 용도로는 적절하지 않다. 다시 말하면, 어느 정도 경험 및 백그라운드 지식이 있고, 책에 있는 오픈 소스들을 직접 인터넷에서 찾아서 영문 가이드를 읽을 수 있는 수준이라면, 이 책은 좋은 가이드가 될 수 있다고 본다.

"마이크로서비스 아키텍처 구축" 원서와 번역서


이 책은 마이크로서비스 아키텍처의 핵심이 객체 지향 프로그래밍을 할 때 항상 이야기하는 "높은 응집도, 낮은 결합력"에 있다고 말하고 있다. 도메인 상의 경계를 잘 구분하여 서로 간의 의존성을 제거하여 수정이 필요할 때 관련 있는 최소 단위의 서비스만을 수정하여 재배포하여, 혹시라도 발생할 수 있는 장애 상황이 다른 서비스로 전파되는 것을 차단하고 빠른 개발 라이프사이클을 유지할 수 있게 한다.

느슨한 결합과 강한 응집력


책을 읽다 보니, 여러 서비스의 통합 관점에서 필자가 채택하고 있는 방식은 대부분 모놀리식에서 마이크로서비스로 전환하기 위한 초보 단계에 있다는 것을 알았다. 하지만, 이 방식을 책에서 제시하는 가장 성숙도가 높은 방식을 적용해보려고 하니, 과연 그럴만한 가치가 있는지 고민이 되기 시작한다.

통합의 한 가지 사례


마이크로서비스 아키텍처의 장점을 택하기 위해서는 모놀리식보다 훨씬 복잡한 전략이 필요하다. 가령, 서비스 간의 통신을 위하여 어떤 기술을 선택할 것인지, 이러한 서비스가 동적으로 확장이 되었을 때 어떻게 실시간으로 해당 사항을 인지할 수 있는지, 장애가 발생했을 때 어떤 서비스에서 장애가 났는지 쉽게 트러블슈팅을 하기 위해서 해야 할 작업들, 또한 배포 및 설정, 테스트 등이 최대한 자동화가 되어야 하기 때문에 발생하는 비용들.. 무엇이든 실제 상황에서는 들어가는 비용과 효과를 잘 파악하여 적당한 수준을 유지하고, 단계적으로 개선해 나가는 것이 무척 중요해 보인다.


책에서 설명하는 마이크로서비스의 원칙을 정리하자면 아래와 같다.

마이크로서비스의 원칙


그리고 책의 아쉬운 점 하나를 꼽자면, 아무래도 번역서이다 보니 간혹 해석 자체가 어색한 곳이 간혹 눈에 밟혔다. 필자도 책을 번역하면서 느낀 것이지만, 원서 날것의 느낌을 한글로 옮기는 것이 굉장히 어려울 때가 많았던 것 같다. 원서 저자의 말투도 한몫했을 것이다. 이 점은 감안하고 읽었으면 한다. 대신, 번역만으로 부족한 단어들이나 내용들은 역자분이 최선을 다해서 각주를 달아 놓았다. 이러한 부분들도 책을 이해하는데 큰 도움을 준다.

친절한 각주


만약 본인이 어느 정도 소프트웨어 개발 프로젝트를 경험했고, 아키텍처를 고민하고 구현까지 가능한 수준이라면, 최신 트렌드를 인지하는 수준에서 반드시 읽어야 할 필독서라고 생각한다. 그리고, 각 사례에서 언급하는 오픈소스 기술들을 하나하나씩 찾아가 보자. 책의 내용만 가지고는 깊이 이해하기 힘든 부분이 있으나, 어느 방향으로 가야 할지에 대해서는 명확하게 제시하고 있어 충분히 흥미로운 기술들을 알아가는데 도움이 된다.

다양한 아키텍처 사례


이 책을 읽다 보니, "마이크로서비스 아키텍처 실습"과 같은 Hands-on 기반의 책도 출간되면 좋지 않을까 하는 생각이 든다. 필자도 관련 경험을 쌓아서 소개하는 글을 쓰는 날이 왔으면 좋겠다.


오랜만에 좋은 기술서를 필독/완독 할 수 있었다. :)


* 본 글은 "한빛미디어"의 지원으로 작성이 되었습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari