마이크로서비스 아키텍처 구축 - 대용량 시스템의 효율적인 분산 설계 기법
샘 뉴먼 지음, 정성권 옮김 / 한빛미디어 / 2017년 3월
평점 :
구판절판



키워드: MSA, Microservice, Architecture, 마이크로서비스, 한빛미디어, 아키텍처

마이크로서비스 아키텍처(Microservice Architecture)에 대해 처음 들었던 건 2015년 1월로 기억한다. 당시 T아카데미에서 <iPhone Application Programming>을 들었는데 강사님이 이에 대해 언급을 했던 것으로 기억한다.

MSA를 이해하고자 O’Reilly에서 출간한 Building Microservices를 읽으려고 했지만 당장 필요한 기술이 아니다보니 미루고 미루다 계속 읽지 못했다. 다행이랄까. IT전문서적 출판사인 한빛미디어에서 한빛리더스 과제로 Building Microservices의 번역서인 <마이크로서비스 아키텍처>가 나와 강제로 읽을 수 밖에 없었다.

1. 책의 주제

제목처럼 이 책은 요즘들어 더 주목을 많이 받는 마이크로서비스(Microservice)를 구축하는 방법을 심도있게 다룬다. 단순히 MSA(Microservice Architecture)가 뭔지 설명하는 것에서 멈추는 것이 아니라 아키텍처 정의부터, 아키텍처를 설계하는 아키텍트의 역할 그리고 시스템을 어떻게 통합, 배포, 테스트하는지 등 MSA의 A부터 Z까지 다룬다. 책에서는 뮤직코퍼레이션이라는 가상의 회사를 통해 MSA로 설계하는 방법을 설명한다.

2. 대상독자

이상적으로는 컴퓨터 아키텍처에 관심이 많은 사람이면 실력에 관계없이 도움이 될 것 같다. 다만, 여러 차례 읽어야 저자가 전하고자 하는 MSA 실현을 위한 이론을 본인의 지식으로 내재화 할 수 있다. 현실적으로는 중급 이상의 실력을 갖춘 아키텍트를 꿈꾸는 소프트웨어 엔지니어가 대상 독자라고 생각한다.

3. 마이크로서비스란 무엇인가?

마이크로서비스(Microservice)는 작고 자율적으로 협업하는 서비스를 말한다. 흔히 소프트웨어를 설계할 때 “응집력(Cohesion)은 높이고 결합력(Coupling)은 낮춰야 한다”고 하는데 이러한 소프트웨어 공학의 원리를 적용한 서비스가 바로 마이크로서비스(Microservice)다. 만약 어떤 시스템이 ‘다른 변경 없이 특정 서비스만 변경하고 배포할 수 있다’면 그 시스템은 커플링이 없는 시스템이라 할 수 있다.

좋은 마이크로서비스의 핵심 원칙 강한 응집력 느슨한 결합력이다. – 4부 통합, 79쪽

이와 반대 되는 개념의 아키텍처는 모놀리식(Monolithic) 시스템이다. 이러한 시스템은 하나의 변경으로 전체 시스템이 재빌드가 되어야 한다. 또한, 하나의 장애로 전체 시스템이 먹통이 될 수 있는 구조를 갖고 있다. 아래 그림은 Martin Fowler의 블로그에서 가져온 그림인데 두 시스템을 잘 비교하고 있어서 인용했다.

Source: https://martinfowler.com/articles/microservices.html

4. 이 책이 좋았던 점

우선 이 책의 평점을 매기자면 5점 만점에 4.5점을 주고 싶다. 이유는 다음과 같다.

첫째, 마이크로서비스의 전체 생명주기를 잘 설명해서 이해에 큰 도움이 되었다. 과거에는 MSA로 서비스를 만들려면 코드와 DB 등을 분리하면 되겠구나라고 막연하게 생각했다면 이 책을 읽고 나서는 코드, DB 뿐만 아니라 CI(Continuous Integration)/CD(Continuous Delivery), 테스트 자동화, 통합된 모니터링, 보안, 복구 등 개발부터 운영까지 전 영역을 고려해야 함을 배울 수 있었다.

둘째, 친절한 각주가 책을 읽는 데 큰 도움이 되었다. 만약 같은 내용을 영어로 읽었다면 이해하지 못할 내용이 많았다. 이는 해석이 되지 않아서가 아니라 여러 가지 기술 및 경제 용어를 저자가 친절하게 각주로 설명을 했기 때문이다. 저자의 설명 덕분에 책을 더 집중해서 읽을 수 있었다.

셋째, 이론으로 끝내지 않고 실전에 사용할 수 있는 도구를 소개해서 앞으로 나아갈 방향을 알 수 있었다. 책을 읽으면 MSA가 결코 은총알(만능도구)이 아니라는 것을 알 수 있다. 오히려 책을 읽으면 읽을수록 ‘이론은 알겠는데 현실에 어떻게 적용하지?’ 라는 고민이 늘어났다. 저자는 이에 대한 해결책으로 구글(Google), 넷플릭스(Netflix), REA(호주 부동산 업체) 등의 사례와 각종 오픈 도구를 소개함으로써 이론을 현실에 적용할 수 있는 방법을 소개한다. 비록 각 도구의 실제 사용법에 대해서는 세세히 다루지 않았지만 각 도구를 어떠한 식으로 활용할 수 있는지 소개한다.

넷째, 참고할 수 있는 문서, 영상, 도서가 많다. 근래 읽었던 기술 서적 중 참고자료가 가장 많은 도서였다. 어떻게 보면 MSA가 간단한 주제가 아니라는 것을 반증하는 것 같다. 이 책을 읽으면서 내가 어떤 도서를 봐야 MSA를 구축하는데 필요한 지식을 얻을 수 있을지 파악할 수 있었다.

다섯째, 인간의 중요성을 강조한다는 점이다. 저자는 책에서 수 차례 인간적인 요소를 강조한다. 기술을 배우면 배울수록 그리고 자신이 좋아하면 좋아할수록 기술 너머에 사람이 있음을 종종 잊는 것 같다. 저자는 사람의 중요성을 계속 강조하는데 이 점이 참 마음에 들었다.

필자는 소프트웨어는 훌륭한 사람에 의해 만들어지는 것이라고 굳게 믿고 있다. 만약 여러분이 이 방정식에서 기술적인 측면만 걱정한다면 전체 그림의 절반 이상을 놓치게 된다. – 2부 진화적 아키텍트, 60쪽

보안을 잘 다룬다는 것은 대개 사람을 잘 이해하고 사람이 시스템과 일하는 방식을 잘 이해하는 것이다. 마이크로서비스에 관해 우리가 아직 논의하지 않은 인간적인 요소와 연관된 측면 중 하나는 조직 구조와 아키텍처 자체 사이의 상호작용이다. 보안과 마찬가지로 인간적인 요소를 무시하는 것은 중대한 실수가 될 수 있음을 알게 될 것이다. – 9장 보안, 260쪽

5. 이 책의 아쉬웠던 점

이 책의 아쉬웠던 점은 MSA의 국내 사례가 소개되지 않는다는 점이다. 번역서라도 국내 사례를 소개했다면 책의 설득력이 더 올라갈 수 있었을 것 같다. 이 리뷰를 작성하는 본인은 금융공기업에 재직중인데 MSA가 아무리 좋아도 이를 성공적으로 활용하는 곳이 없다면 리스크가 크다고 생각하여 도전하지 않는 게 본인이 일하는 곳의 리더십들이기 때문이다.

또한, MSA를 실습할 수 있는 파트가 전혀 없다는 점도 아쉽다. 아주 간단한 서비스라도 함께 실습하며 실제로 만들 수 있는 예제가 있었다면 훨씬 더 좋은 책이 될 수 있지 않았을까? 하나의 책이 이론과 실습 등 모든 것을 망라하는 것은 어렵겠지만 실습이 전혀 없었던 것이 아쉬웠던 것은 사실이다.

6. 총평

이 책은 ICBM(IoT, Cloud Computing, Big Data, Mobile)과 AI(Artificial Intelligence) 시대에 사는 우리에게 과거의 Monolithic 시스템에서 작은 서비스들의 집합인 Microservice 시스템으로 옮겨가야 한다고 주장한다.

변화는 불가피하다. 그냥 받아들여라. – 12장 종합 정리, 329쪽

만약 본인이 시스템 아키텍처에 관심이 많아서 공부를 하고 싶다면 이 책은 매우 적합한 책이라고 생각한다. 비록 실습할 수 있는 코드는 없지만 이 책을 읽으면 MSA를 많이 다뤄본 저자로부터 기술적인 측면, 관리적인 측면 그리고 인간적인 측면까지 아우르는 따뜻한 조언을 얻을 수 있기 때문이다.

훌륭한 소프트웨어 개발자 혹은 아키텍처가 되려면 기술도 잘 알아야 하지만 사람도 잘 알아야 하는 것 같다. 결국 일은 사람이 하기 때문이다. 그래서일까? 경험이 많은 저자는 사람의 중요성을 계속해서 강조함으로써 독자가 기술만능주의에 빠지지 않도록 수 차례 강조한다. 사람의 중요성을 강조하는 저자의 글로 이번 한빛리더스 서평을 마무리하고자 한다.

비록 이 책이 전반적으로 기술을 다루고 있지만 사람도 반드시 고려해야 한다. 왜냐하면 현재를 만들었고 미래를 만드는 주체가 바로 사람이기 때문이다. 현 직원의 비전에 대한 생각을 고려하지 않거나 그들이 지닌 능력에 대한 고려 없이 일을 어떻게 완료하는지에 관한 비전만 생각하면 대개 나쁜 곳으로 빠지기 쉽다. – 10장 콘웨이의 법칙과 시스템 설계, 274쪽

추신. 책에 대한 상세한 설명은 <한빛미디어 공식 홈페이지> 에서 확인하실 수 있습니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo