진화하는 소프트웨어 아키텍처, 대규모 분산 시스템 구축을 위한 마이크로서비스 아키텍처 구축 리뷰
created: 2017.04.16
내게 꼭 필요한 책이 나왔다고 생각했다. 실무에서 마이크로서비스 아키텍처를 사용하고 있지만 기저에 있는 이론이라던가 모범사례 또는 쉽게 빠지는 함정들에 대해서는 알지 못하고 있었다. 모놀리식 아키텍처는 수백명에 달하는 개발 조직의 커밋을 바로바로 수용하여 실제 제품에 적용하고 테스트 한 뒤 배포하는 데에 적절하지 않다. 그래서 서비스를 각 팀이 나눠서 개발하고 배포한다. 여기까지가 내가 아는 전부이다. 책에서는 마이크로서비스 아키텍처의 장점, 단점에서 시작하여 개발 원칙, 팀 구성, 배포, 모니터링, 보안 등 여러 방면에 걸쳐 고려할 사항들을 설명하고 있다.
1장은 도입부라고 할 수 있는데, 각주가 많이 달려 있었다. 간단히 용어에 대해 설명하는 것부터 관련된 링크까지 다양하게 있다. 레퍼런스가 다양하게 있으니 모두 꼼꼼하게 읽는다면 책의 내용을 더 잘 이해할 수 있을 것이다. 그런데 솔직히 너무 많아서 양에 압도당했다. 나중에(개발자가 나중에 한다고 하면 안한다는 말일수도 있지만) 한 권씩 읽어야 겠다.
마이크로서비스가 모든 것을 해결해 주지 않는다! 책에서 가장 중요한 구절 중 하나라고 생각한다. 어떤 기술이든 장단점이 있으니 우리에게 적합한지 살펴본 뒤에 적용해야 할 것이다. 관련하여 재미있는 글이 있으니 관심 있으신 분은 링크 참조.
비록 내공이 부족해서 책의 내용을 100% 흡수하진 못하였지만 많이 배웠다. 콘웨이의 법칙, 기술 프로세스 관점이 아니라 비즈니스 관점에서 팀 나누기, 높은 응집성, 낮은 결합도, Blue/Green, 카나리아 등 너무 많다. 테스트, 모니터링 쪽은 말할 것도 없다. 그렇지만 '장애는 어디에서나 발생한다'는 말이 가장 와닿았다. 소프트웨어 장애, 네트워크 장애, 하드웨어 장애 등 마이크로서비스 아키텍처에서 염두에 둬야할 요소들이 많다는 것을 제대로 깨달았다. 넷플릭스나 구글에서 시행하는 장애 복구 테스트나 유인원 부대같은 것을 우리 회사에도 도입할 수 있을지 궁금하다. 또, 깨알같지만 AWS에서 EC2 인스턴스를 생성하고 테스트를 위해 일부 인스턴스를 종료시켰는데 다시 살아나서 테스트를 못한 경험이 있다. 그런데 그 사례가 AWS의 Failover전략 때문에 그런 것이라고 언급해서 깜짝 놀랐다.
웹 개발에 입문한지 거의 1년이 다 되어 가는 내게 이 책은 솔직히 좀 어려웠다. 한빛미디어에서 대상 독자를 중고급으로 매겨놨는데, 고급이어도 상관없을 것 같다. 아키텍처에 관한 책이라 코드는 없다. 대신에 다이어그램이 여러번 등장한다. 대규모 분산시스템을 개발해보신 분들이나 현재 아키텍트로서 마이크로서비스 개발을 이끌고 있을 분들이라면 읽으면서 무릎을 탁 칠 내용들이 정말 많은 듯 하다. 반면에 나 같은 주니어 개발자, 톱니바퀴라고 느끼는 개발자들이 읽으면 상투적이지만 나무를 보다 숲을 보는 느낌을 가질 수 있을 거라고 생각한다. 덧붙여, 오탈자를 거의 찾아볼 수 없을 정도로 편집이 잘 됐고 번역도 매끄럽게 잘 됐으니 원서보다 번역판을 추천한다.