신디와 제가 호주에 갔을 때, 저희는 퀸즐랜드 해안의 열대 우림에서 시간을 좀 보냈습니다. 이 지역 자연의 경이로움 중 하나는 거대한 '교살 무화과나무(strangler figs)'입니다. 이 나무는 다른 나무의 위쪽 가지에서 씨앗을 틔워 점차 그 나무를 타고 내려와 결국 흙에 뿌리를 내립니다. 여러 해에 걸쳐 환상적이고 아름다운 형태로 자라나는데, 그러는 동안 자신들의 숙주였던 나무를 목 졸라 죽이고 맙니다.
위 내용은 마틴 파울러라는 사람이 호주에 갔을 때, 본 무화과 나무를 보고 쓴 글이다. 무화과 나무는 다른 나무의 표면에 붙어 살다가 그 나무를 뒤덮는다. 점점 기존의 나무는 생기를 잃고, 무화과 나무는 숙주 나무 영양분을 흡수하면서 점점 위에서부터 뿌리쪽으로 반대로 자라나게 되고, 결국 모든 나무를 뒤덮게 된다.
유래가 조금 무섭지만, 마이크로서비스 아키텍처를 도입하기 위한 과정은 이 무화과 교살자 패턴과 비슷하다는 이야기를 한다. 이 책은 모놀리스 기반의 아키텍처를 마이크로서비스로 마이그레이션하는 여정을 나타낸다. 챕터는 총 다섯 개로, 다음과 같이 나누어져 있다.
- 1장 : 더도 덜도 아닌 딱 마이크로서비스
- 2장 : 마이그레이션 계획하기
- 3장 : 모놀리스 분할
- 4장 : 데이터베이스 분해
- 5장 : 마이크로서비스 도입 과정에서 직면하는 문제와 해법
각 챕터에 따라서 굉장히 주제를 잘 잡고, 해당 주제에 대해서 줄기차게 쓰여있다. 1장과 2장에서는 모놀리스 기반의 아키텍처와 마이크로서비스의 아키텍처에 대한 이론적인 부분을 설명해주며, 어떤 상황에서 마이크로서비스로 전환하는 것이 좋은지, 정말 마이크로서비스가 최선인 지 다루고, 3장과 4장에서는 본격적인 마이그레이션 방법을 설명한다. 5장은 마무리 챕터이다.
책 소개
이 책의 제목은 마이크로서비스 도입 이렇게 한다지만, 주제는 앞에 하나 더 붙여서 모놀리스에서 마이크로서비스 도입을 이렇게 한다이다. 맨 앞 부분에서는 마이크로서비스의 정의를 약간 다루다가, 모놀리스와 마이크로서비스를 비교하면서 정말 마이크로서비스가 최선인지? 많은 개발자들은 최신 그리고 드라마틱한 기술을 숭배하는 경향이 있어, 마이크로서비스에 대한 장점만 바라보고 모놀리스를 안 좋게 여긴다고 하면서, 모놀리스의 장점에 대해서 설명하면서 마이크로서비스로 넘어가기 어려운 이유들에 대해서 설명한다.
2장은 마이크로서비스 아키텍처를 설명하기 이전에, 정말 마이크로서비스로 넘어가야 하는 지?를 확인하기 위해서 다양한 질문들을 던진다. 그 과정에서 모놀리스의 장점, 그리고 마이크로서비스의 단점을 극명하게 설명하면서 마이크로서비스로 마이그레이션하는 과정은 정말 쉽지 않으며, 많은 준비가 필요하며 많은 대가가 따른다는 것을 강조한다.
가장 기억에 남았던 멘트는 '만병통치약은 없다' 라는 문구이다. 조직 내에서 느끼고 있던 비효율적인 개발 프로세스가, 마이크로서비스로 전환을 한다고 낫는 것이 아니다. 오히려 모놀리스 방식에서 뭔가를 덧대는 방식으로 프로세스를 개선하는 게 훨씬 쉽고, 빠르고, 안정적이라는 것을 계속 강조한다.
위에서는 스포티파이 모델이라는 것을 이야기하는데, 스포티파이와 같은 서비스에만 어울리는 모델이며 심지어 스포티파이조차 나중에는 이 모델을 사용하지 않았지만, 사람들은 당시 스포티파이가 썼다! 라는 것에 심취해서 모두가 이 모델을 따라했지만 많은 피의 대가를 치르게 되었다. 이러한 일이 일어나지 않으려면 답을 배끼는게 아니라 질문을 배껴야 한다고 한다.
즉, 어떤 문제들이 있을까? 어떻게 해결할까? 이러한 질문들을 계속 써나가다보면, 대부분은 모놀리스 기반의 아키텍처에 약간의 유연함을 더하는 것만으로도 해결할 수 있다는 것이다. 실제로 대부분의 케이스가 그러했지만, 다들 마이크로서비스를 사용하면 모든 것이 낫는다는 환상에 마이그레이션을 시도하다가 엄청난 대가를 치렀다는 내용이 2장을 장식한다.
이러한 2장의 내용이 끝나면 3장과 4장은 본격적으로 마이그레이션을 하는 과정을 나타낸다. 3장은 서비스 기반의 마이그레이션, 4장은 데이터베이스 기반의 마이그레이션 과정을 나타내며, 여러 패턴들을 선보인다. 이런 상황인 경우에는 이렇게 풀어간다. 등의 다양한 패턴을 선보인다.
이 책을 읽으면 좋은 대상
사람마다 개발을 언제 시작했냐에 따라서 그 당시의 문화나 풍문이 있겠지만, 내가 처음 개발을 접했을 때는 MSA(마이크로서비스 아키텍처)가 워낙 유명해서, 나는 기본적으로 MSA로부터 개발을 시작했고 모든 것들이 MSA였다. 쿠버네티스와 도커 또한 너무나 친숙해서 따로 공부를 꾸준히 하게 되었고 이를 다룰 수 있는 것이 기본적인 것인줄 알았다.
하지만, 사실 이러한 MSA 기반의 공부과정과 다르게 실제로 필드에서 일을 하게 되면서 서비스를 만드는 것보다 서비스를 만드는 문화를 만드는 게 훨씬 어렵다는 것을 느꼈고, 전해 들었다. 흔히 말하는 높으신 분들의 성과를 위해 개발팀은 주어진 프로젝트를 완수하는 것만으로도 급급한데, 최소 반년 보수적으로 잡아서 일 년이 넘는 마이크로서비스 전환 기간을 확보하는 것은 힘들다는 것을 안다. 따라서, MSA가 좋고 쿠버네티스가 좋고 이러한 것들을 모두 알지만, 사실 기술이 좋은 것과 별개로 회사에게 좋은 것은 다르기 마련이다.
따라서, 이 책을 추천하고 싶은 대상은 바로 MSA 아키텍처를 원하는 데, 특히나 정말로 MSA가 필요하다고 느껴서 원하는 사람보다 MSA가 그렇게나 좋은 아키텍처인데 왜 안하는 걸까?라고 생각하는 독자들에게 강추한다. 나도 일하면서 어느정도 MSA에 대한 숭배감이 무뎌지긴 했지만, 마음 속의 작은 불씨가 있다. 하지만 이 책을 보면서 정말 마이크로서비스는 꼭 필요할 때 도입할 수 있는 상황과 환경이 받쳐줘야하는 기술이라는 것을 알았다.
참고로, 모놀리스를 MSA로 전환하는 내용을 다루기 때문에 조금 어려울 수도 있다. 혹은 잘 알더라도 우아콘2020에서 김영한님이 발표한 배달의민족 마이크로서비스 여행기라는 세션은 정말 유용하고, 개인적으로 명강의라고 생각하기 때문에 이 책을 읽기 전에 먼저 보는 것을 정말로 강추한다.
- [우아콘2020] 배달의민족 마이크로서비스 여행기 : https://www.youtube.com/watch?v=BnS6343GTkY&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9C%ED%85%8C%ED%81%AC
이미 예전에 본 적이 있는 영상이지만, 이 책을 읽고 다시 한 번 봐보려고 한다. 꼭 읽는 것을 추천한다.
책의 장점과 아쉬운 점
개발자로서 가장 좋아하는 성격은 모든 기술에는 장단점이 있다는 느낌으로, 어떤 의견을 받아도 무조건적으로 긍정하거나 부정하는 것이 아니라, 파도처럼 잔잔하게 받아들이는 사람을 좋아한다. 나도 뭔가 확신을 가지고 말하는 편은 아니라, 그리고 내가 알지 못하는 레거시의 역사가 엄청난데, 정답처럼 생각하는 것이 아닐 가능성이 더 높다는 것을 알기에 장단점을 가지고 기술적인 개선사항을 말하는 편이다.
이 책은, 마이크로서비스 그 자체를 멀리서 조망하면서 장점과 단점을 솔직하게 이야기한다. 단순히 마이크로서비스가 엄청나게 좋고, 이러이러한 이유로 도입하면 엄청난 효율을 나타낸다라는 것을 집필한 사람은 알고 있지만, 본격적인 마이그레이션 방법이 나오기 전인 2장과 마이크로서비스를 도입하면 생기는 문제점을 나타내는 5장에서 단점을 여러 번 언급하는 것을 보면, 기술의 장점과 단점을 객관적으로 분석할 수 있는 사람이 쓴 글이라는 것을 알 수 있다.
개인적으로는 이러한 관점으로 쓰인 책을 읽어야, 특정 기술을 편협한 시각이 아니라 전체적으로 바라볼 수 있게 된다고 생각해 전체적인 문장들이 마음에 들었다.
책의 단점이 아닌 내가 느낀 아쉬운 점은, 1장 2장 그리고 5장과는 다르게 본격적으로 마이크로서비스의 마이그레이션을 다루는 3장과 4장은 모든 내용이 다 유기적으로 짜여져있다기보다는, 마치 국어사전처럼 어떤 상황에서는 어떻게 하는 것이 좋다와 같은 내용이 단순하게 열거되어 있어서 흐름이 끊기는 느낌을 받았다. 원래 오렐리 책이 그런 것 같아서, 다음부터는 다른 오랠리 책을 읽을 때 고려해서 읽으려고 한다.
그 외에는 이 책은 연식이 조금 있기 때문에, 쿠버네티스나 Istio와 같은 최신 기술들에 대한 고찰이 조금 부족하다. 물론 쿠버네티스에 대한 언급은 있지만, 이 당시에는 크게 유명세를 얻기 이전인 것으로 확인된다. 따라서 마이크로서비스 도입에 대한 장벽이 이 책이 쓰였을 때보다 많이 허물어졌다고 생각하지만, 이 부분은 책을 읽고 나서 좀 더 스스로 생각해봐야할 대목이 아닌가 싶다.
총평 및 추천 여부
개인적으로 마이크로서비스가 좋다! 라고 말하는 사람보다는 모놀리스가 구리다! 라고 말하는 사람에게 추천하는 책으로, 꼭 김영한님의 배달의민족 마이크로서비스 여행기 유튜브 영상을 먼저 보는 것을 추천한다. 직접 동영상을 통해 마이그레이션 과정의 실전적인 것을 본다면, 글을 통해 마이그레이션 과정의 이론적인 것을 볼 때 엄청난 도움이 될 것이다.
'후기 > 책' 카테고리의 다른 글
책 리뷰 : 쿠버네티스 패턴 (1) | 2025.05.18 |
---|---|
책 리뷰 : 소프트웨어 스펙의 모든 것 (0) | 2025.05.07 |