최신 애플리케이션은 고성능의 멀티 코어 CPU 환경을 최대한 활용하도록 개발되고 있다. 이런 환경에서는 동시성을 제대로 이해하고 고려해야 할 필요가 더욱 절실하다. 코틀린은 2017년 구글이 안드로이드의 개발 언어로 공식 지정된 후, 안드로이드 생태계에서 메인 개발 언어로 자리매김하고 있다. 또한 코틀린은 동시성을 뒷받침하기 위해 다양한 언어적 지원 기능을 제공하고 있다.
기존 Java/Android 동시성 프레임워크가 제공하는 단점들을 코루틴을 통해 훨씬 쉽고 효과적으로 처리할 수 있으며 코틀린이 언어적으로 제공하는 다양한 기본형들을 활용해 넌 블로킹, 비동기 코드를 마치 동기 코드처럼 쉽게 작성할 수 있다.
이 책은 코틀린의 동시성을 학습하기 위해 필요한 코루틴 개념과 동시성, 병렬성의 차이점을 그림으로 쉽게 설명해 코틀린에서 멀티스레드 애플리케이션을 만들기 위해 꼭 알아야 하는 기본 개념을 이해할 수 있다. 코틀린의 기본형을 활용하는 실제 예제를 만들면서 스레드와 코루틴 간의 통신 방법과 비동기 애플리케이션을 개발하면서 오류와 예외 처리하는 방법을 익히고 멀티 코어 처리를 활용하는 방법도 배울 수 있다. 코틀린의 동시성 프로그램 기법과 동시성의 내부 동작 방식에 대한 이해도를 높일 수 있는 기회가 되리라 기대한다.
어느덧 마이크로서비스는 새로운 서비스를 만들 때 실질적인 표준(de facto)이 되어 가고 있다. 이는 비단 스타트업이나 서비스 기업뿐만 아니라 전통적인 기업에서도 기존의 일체형 애플리케이션을 마이크로서비스화하기 위해 시도하고 있다는 이야기가 심심치 않게 들려오고 있다.
코틀린의 등장 이후 안드로이드 생태계의 영향이기는 하지만 어느새 자바 생태계의 주류 언어로 자리매김하게 되었고 서버측 개발 언어로도 많은 부분이 코틀린을 채택하고 있다.
마이크로서비스의 1세대가 VM 기반의 폴리그랏으로 대변되는 자치성에 기반한 서비스의 분리에 있었다면, 2세대는 컨테이너 기반의 리액티브 패러다임이라 말할 수 있을 것 같다.
이 책은 코틀린 언어를 이용해 차세대 마이크로서비스를 구축하기 위한 다양한 내용을 담고 있다.
마이크로서비스와 리액티브의 개념적인 원리와 장점으로 시작해서 스프링 부트 기반으로 마이크로서비스를 쉽게 만들어보고, 스프링 웹플럭스(WebFlux)를 사용해 넌블로킹 리액티브 마이크로서비스를 구축하는 방법에 대해 살펴본다.
그리고 이를 컨테이너 기반으로 운용하기 위한 개발, 테스트 모니터링과 배포에 이르는 영역을 다룬다. 무엇보다도 이 책의 장점은 제목에서도 알 수 있듯이 기본적인 개념에 대한 이해를 바탕으로 직접 만들어 보면서 새로운 개념과 기술을 체험할 수 있도록 구성돼 있어서 차세대급 마이크로서비스 구축에 소요되는 기술 기반을 조망해보는 데 좋은 안내서가 될 것으로 기대한다.
원서가 출간된 시점에 스프링 부트 버전은 2.0.0 M7이었으나 번역서가 출간되는 시점에는 2.1버전이 출시됐다. 그리고 인텔리제이 IDEA CE 버전도 2017.2이었으나 번역서 출간 시점에는 2018.3으로 업그레이드됐다. 번역서에는 이런 변경 사항을 반영해 예제와 책 내용을 무리없이 따라 할 수 있도록 일부 내용을 수정했으니 안심해도 좋다.
마지막으로 마이크로서비스의 배포와 운용을 위해 컨테이너를 고려 중이라면 쿠버네티스(kubernetes)를 함께 검토해볼 것을 권한다. 서비스 메시(Service Mesh)를 구성하기 위한 쿠버네티스와 이스티오(istio)의 조합은 컨테이너 기반 마이크로서비스 운용에 최상의 조합이 될 것이다.
2014년 구글이 쿠버네티스를 발표한 이래 쿠버네티스는 빠른 속도로 가장 인기 있는 기술 가운데 하나로 떠올랐다.
비즈니스 민첩성이 점점 더 강조되는 컴퓨팅 환경에서 마이크로서비스 아키텍처(MSA)는 사실상(de facto) 표준이 됐고 MSA 환경을 구현하기에 가장 적합한 기술로써 쿠버네티스가 최근 각광을 받고 있다.
이뿐만 아니라 쿠버네티스는 IoT 환경에서의 에지 컴퓨팅 영역, 데이터 과학 분야에서 머신러닝 workflow 배포(kubeflow) 지원 영역, 5G에서 통신 인프라의 가상화(VNF, Virtual Network Function) 영역, 나아가 하이브리드 또는 멀티 클라우드를 지원하기 위한 핵심 기술로 다양한 분야에서 도입, 활용되고 있다.
이런 뜨거운 열기를 반영하듯 꽤 많은 책이 출간, 번역되고 있음에도 조금은 때가 지난 것 같은 이 책의 재출간판 작업을 맡게 된 이유는 우선 저자의 적절한 시각화와 은유를 섞은 개념 설명에 매료됐고, 여러 사례를 기반한 상황 설정과 설명을 뒷받침하는 실습 그리고 쿠버네티스의 내부 구조에 대한 상세한 설명과 멀티 클라우드와 쿠버네티스 확장까지 아우르는 탄탄한 구성 등으로 가히 쿠버네티스 분야의 바이블이라 할 만한 책이기 때문이다. 이 책의 번역자들은 'Kubernetes Korea Group'에서 이 책을 기반으로 한 스터디 모임인 '100일간의 kubernetes architecture 여행'의 스터디 멤버들로 구성됐으며, 재출간판에 맞춰 최대한 독자의 입장에서 쉽고 부드럽게 읽히도록 노력했다. 용어는 최대한 쿠버네티스 한글화 팀의 용어집을 따르려 노력했고, 예제가 최신 버전의 쿠버네티스에서 실행하는 데 문제가 없는지 확인했으며, 독자의 이해를 돕기 위해 다양한 주석을 추가했다.
원서가 전체적으로 매끄럽게 구성돼 있지만, 개념을 설명하는 부분에서 번역으로 전달하기 어려운 미묘한 부분이 많았고 이런 부분을 우리말로 전달하기 위해 꽤나 많은 공을 들였다. 부디 부드럽고 매끄럽게 읽을 수 있었다는 평을 들을 수 있다면 번역자로서 더할 나위 없이 보람 있을 것 같다.