많은 기업에서 이제는 마이크로서비스 아키텍처로 애플리케이션을 개발하는 것이 필수인 시대가 된 것 같다. 하지만 여전히 마이크로서비스 아키텍처를 기반으로 애플리케이션을 개발하는 것은 어려운 일이며, 고려해야 할 사항이 많다. 이 책에서는 다양한 마이크로서비스 아키텍처 패턴을 소개하면서 각 패턴들이 어떠한 의미를 갖는지, 어떻게 구현할 수 있는지 샘플 코드로 쉽게 이해할 수 있게 제공한다. 이 책에서는 이벤트 기반 아키텍처에서 CQRS나 분산 트랜잭션, 고가용성을 확보하는 방법 등을 자세히 소개하고 있어 마이크로서비스 아키텍처, 특히 이벤트 기반 아키텍처를 도입하려고 하는 개발자나 아키텍트들에게 추천하고 싶다.
많은 기업과 개발자가 엔터프라이즈 애플리케이션을 만들 때 필수적으로 사용해오던 자바에서 부족했던 언어적인 한계를 해결하고자 코틀린을 적용해 더 손쉽게 엔터프라이즈 애플리케이션 프로젝트를 수행하는 경우가 많아지고 있다. 코틀린은 구글에 의해 안드로이드 앱을 만들기 위한 개발 언어로 공식 지정된 이후 모바일 앱뿐만 아니라 서버 사이드에서도 적용하는 사례가 점차 증가하고 있다. 이 책에서는 개발 언어로서 제공하는 코틀린의 기본 기능뿐만 아니라 다양한 부가 기능을 소개해 처음 접하는 사람뿐만 아니라 이미 알고 있는 개발자라 하더라도 코틀린을 이용해서 객체지향 프로그래밍을 하기 위한 다양한 패턴과 주의할 것들을 소개한다. 처음 이 책을 번역하고 상당히 오랜 기간이 지난 시점에서 책으로 출판이 돼 코틀린 자체에도 많은 변화가 있었으나 코틀린의 기본 개념의 변화는 없었기 때문에 객체지향에 관심이 있는 개발자는 한번 보는 것이 좋겠다.
쿠버네티스는 굉장히 방대한 플랫폼이다. 쿠버네티스 하나만 자세히 알기에도 벅차다. 하지만 쿠버네티스에 애플리케이션을 배포, 운영하려고 한다면 고민해야 할 부분이 무척 많을 것이다. 국내에 수많은 쿠버네티스 관련 서적이 나와 있기는 하지만 쿠버네티스 자체 기능과 쿠버네티스에 애플리케이션을 배포하고 관리하는 방법에만 초점을 맞추고 있다. 이 책은 저자의 다양한 경험을 통해 마이크로서비스 아키텍트(MSA) 기반 애플리케이션을 쿠버네티스에 적용하기 위한 다양한 사례를 솔직하게 이야기하고 있어서 좋았다.
한 가지 단점 아닌 단점이라고 한다면, 아직까지 국내에서는 Java를 이용해 애플리케이션을 개발하는 경우가 많다. 그러나 이 책에서는 Go를 애플리케이션 개발 언어로 사용해, Go 언어에 익숙하지 않은 개발자나 운영자에게는 고민이 될 수도 있다.
그렇지만 Go뿐만 아니라 파이썬(Python), 러스트(Rust) 등의 다양한 언어도 사용한다. 어렵게 생각하지 말고 그 부분은 과감하게 건너뛰어도 상관이 없으므로 큰 부담을 갖지 않았으면 좋겠다. 마이크로서비스 애플리케이션을 만드는 방법을 알고자 하는 독자에게는 이 책의 앞 부분이 도움이 될 것이고, 마이크로서비스 아키텍트 입장에서 쿠버네티스와 다양한 툴 (CI/CD, Serverless, 모니터링, 서비스 메시 등)을 활용하는 방법을 자세히 알고 싶다면 중반 이후가 유용할 것이다.
클라우드 네이티브 애플리케이션을 개발하고 운영하는 데는 많은 방법이 있다. 특히 마이크로서비스 아키텍처를 도입하는 경우, 더더욱 개발과 운영에 고려해야 할 것이 많다. 민첩성, 혁신성, 확장성, 유지 보수성의 장점도 있지만, 여러 개의 서비스로 인한 분산 시스템의 문제점도 있다.
최근 클라우드 네이티브 애플리케이션을 위한 플랫폼으로 거의 표준이 된 쿠버네티스가 이런 문제를 일부 해결해주지만, 모든 문제를 해소해주진 않는다. 넷플릭스(Netflix) OSS와 같은 개발자를 위한 다양한 라이브러리로 이런 문제를 일부 해결할 수 있다. 그러나 개발 언어의 제약이 있고, 개발자는 비즈니스 로직 이외에도 다양한 문제를 처리해야 한다.
이때 등장한 것이 바로 서비스 메시다. 서비스 메시를 위한 Istio, Linkerd, Consul 등과 같은 다양한 솔루션이 있지만, 가장 많이 알려지고 사용되는 것은 바로 Istio일 것이다. 이 책에서는 Istio가 등장하게 된 배경부터 아키텍처, 구성 요소까지 자세히 설명하고 있다. 쿠버네티스 환경에서 Istio를 사용해 서비스 메시를 구성하고, 세부 설정이 어떤 의미가 있는지 알게 될 것이다.
한 가지 참고할 사항이 있다면, 이 책은 Istio 1.2를 기반으로 작성됐다. 번역 당시 Istio는 1.5로, Istio의 아키텍처와 구성 요소가 변경됐다. 이 점을 유념하기 바란다. 기본 개념과 설정은 동일하기 때문에 내용을 따라 가는 데에는 크게 문제되지 않는다.