jrcfore***
2023-07-23

마이크로서비스 기초부터 구현까지 사람과 조직을 고려한 실전 마이크로서비스 아키텍처 구축 가이드
마이크로 아키텍처 기반의 서비스 하나를 만들기 위해 필요한 모든 지식들을 담은 총론 집. 마이크로 아키텍처 기반의 설계 혹은 서비스를 희망하는 개발자들이라면 이 책을 통해 시작해도 무방하다.
이제껏 나름 다양한 책들의 마이크로 아키텍처 관련 책들을 읽어왔지만, 이처럼 서비스 하나를 만드는 데에 필요한 모든 기술들에 대해서 총론을 나열한 책은 상당히 오랜만인듯하다.
그만큼 해당 책에서 다루는 내용은 기본적으로 마이크로 아키텍처에서 사용하는 보편적인 지식들을 다루고 있으며 언급한 각각의 기술만으로도 적게는 한 권에서 많게는 수십 권의 책이 나올 정도로 고도화된 전문 지식들을 간단 명료하게 설명하고 있다.
딱, 서비스를 구축하는 데에 필요한 그 정도의 필요 지식들에 대해서 언급했다는 점에서 해당 책은 담백했으며, 보다 자세한 내용을 알고 싶을 경우, 그와 관련된 저서에 대해 저자가 적극 추천하고 있다는 점에서 저자가 상당히 독자들을 배려하고 있음이 느껴졌다.
또한 실무자 입장에서는 어찌 보면 당연히 고려하고 넘어갈 법한 내용들을 주니어들 혹은 이제 막 마이크로 아키텍처를 시작한 사람들의 입장에서 명확히 집고 갔다는 점이 해당 도서가 다른 도서와 구분되는 특징이라 할 수 있다.
또한 책의 끝부분에서 마이크로 아키텍처 기술이 사용하는 용어를 부록으로 정리하여 제공함으로써 잊을법한 전문용어들에 대해서 쉽게 다시 상기시킬 수 있는 접근 요소를 제공하고 있다.
【책의 구성】 "마이크로 서비스 아키텍처 구축"의 구성은?
책의 구성은 크게 세 부분으로 나뉘어있다.
기초
구현
사람
기초 파트에서는 마이크로 서비스의 정의가 무엇인지에서부터 마이크로 서비스 구축에 필요한 기본적인 상식들에 대해서 정리한 파트이다.
구현 파트에서는 기초 파트에서 배웠던 내용들을 기반으로 하여 실무에서 접할만한 내용들인 마이크로 서비스들 간의 통신, 마이크로 서비스들의 워크플로 구성, 빌드, 배포, 테스트의 내용들을 다루고 있으며 이 과정에서 k8s, ci/cd 개념 등의 내용들에 대해 첨언하고 있다.
사람 파트에서는 사용자에게 노출되는 FE를 비롯한 조직의 형태, 구성, 오픈소스 등의 내용을 다루고 있다.
각 파트에 포함된 챕터들은 제목을 근간으로 그에 해당하는 세부내용들로 분화되어 저자가 겪었던 그리고 배워야 할 내용들에 대해서 핵심 위주로 잘 나열하여 설명하고 있다.
또한 챕터 마지막에서는 해당 장에서 배웠던 내용에 대해 다시 한번 상기 시킴으로써 학습효과를 강화하는 구성을 취하였다.
1 챕터 : 마이크로 서비스란?
이 챕터에서 필자가 가장 인상 깊게 살펴보았던, 학습했던 내용은 아무 곳이나 마이크로 서비스를 사용하지 말라는 것이었다.
마이크로 서비스는 말 그대로 마이크로 + 서비스 두 단어의 합성어이다. 서비스를 잘게 나누어 마이크로하게 사람들에게 제공하는 것. 그것이 우리가 아는 마이크로 서비스이다.
이와 대조되는 군으로 모놀리스 시스템을 들 수 있는데, 요즘 대다수의 책들에서는 모놀리스는 절대로 사용해서는 안 되는 시스템 구조이며, 시대의 뒷방으로 물러난 퇴물 취급을 하는 경향이 강했다. 하지만 이 책에서의 저자는 오히려 마이크로 서비스 자체를 오용하는 경우가 많다며, 모놀리스 서비스 역시 적재적소로 사용한다면 마이크로 서비스 못지않은 훨씬 좋은 서비스 구성이 될 수 있음을 강조하고 있다.
3 챕터 : 모놀리스 분해
이 장에서는 기존의 서비스를 어떻게 마이크로 서비스로 쪼게 어 나눌지에 대해서 간략하게 정리하고 있다.
어찌 보면 이 책에서 가장 핵심이라 생각되는 부분이며, 이 책에서 가장 간단하며 명료한 챕터라 할 수 있다.
옛말에 이런 말이 있다.
'천 리 길도 한 걸음부터..'
저자는 기존의 서비스를 마이크로 서비스로 변화할 때 소소한 단위의 기능부터 마이크로 서비스로 전환하길 권장하고 있다. 실무자 입장에선 정말 극히 공감이 가는 내용이다.
본인이 프로젝트를 한번 딱 보고 조각가인 양, 필요한 부분 안 필요한 부분 단위로 척척 나눌 수 있는 능력을 갖췄다면 한 번에 전환을 해도 되지만. 보통은 그렇게 많은 양을 한 번에 전환하게 되면 반드시 장애를 겪게 된다.
가장 중요한 것은.. 차분히 그리고 꾸준히 하는 것에 있음을 잊어선 안된다.
4챕터 : 마이크로 서비스 통신 방식
보편적으로 통신 방식은 네 가지 정도가 있다. 동기/비동기/Message Broker/공용 스토리지
각각은 모두 저마다의 장단점을 갖고 있다. 어떤 통신 방법이야말로 화타가 울고 갈 치료법이다! 이렇게 말할 수 있는 것은 없다
동기의 경우, resp가 필요하고 해당 응답이 그다음 처리에 사용되는 경우에 보편적으로 사용되며
비동기의 경우, 병렬로 처리해도 되는 요청의 경우 보편적으로 사용된다.
공용 스토리지(DB, NAS)의 경우에는 대용량 파일을 주고받거나 혹은 레거시 한 환경까지 서비스를 제공하는 경우 많이 사용되며
요즘 각광받고 있는 Message Broker를 이용한 방식은 여러 workers를 배치하여 message를 구독하는 형태를 취함으로써 비동기 처리 효과 + 안정적인 서빙이 가능하게 되었다.
【 마이크로 서비스 아키텍처 구축을 읽고 나서 】
어떤 기술이든 알맞은 위치에 알맞은 형태로 사용한다면 옛날에 탄생한 것일지라도 목적에 맞게 잘 쓰일 수 있다. 최신 기술을 적용하는 것은 재미나고 신나는 일이다. 모든 새로운 것이 나오면 무엇인지 모르게 사용해 보고 싶고 들뜨는 것이 사람 심성 아니겠는가?
다만 신기술이라고 해도 결국에는 그 기본은 옛날에 만들어졌던 기술들을 토대로 쌓아 올려진 것이 태반이다. 더욱이 지금처럼 고도화된 세상에서 옛것에 기초하지 않고 완전히 새로 생겨난 기술은 없다고 봐도 무방하다.
따라서 저자가 말한 것과 같이. 옛날 접근 방식이든 최신 접근 방식이든 본인이 구축하려는 서비스의 목적에 맞게, 지금 놓인 환경에 맞게 '최신'이 아닌 '최선'의 접근 방법을 찾기 위해 분투해야 한다.