Post

개요

2018년 KAIST 전산학수 교수님 6분과 함께 K-MOOC에 Cloud 기반 소프트웨어 엔지니어링 묶음 과정 오픈을 계기로 위키북스 박찬규 대표님께 서적 집필 제안을 받았다. 회사에서 또 외부에서 강의나 세미나로 늘 하던 일이었지만, 오랫동안 남을(?) 책으로 정리하려고 하니 다듬고 고쳐야 할 것들이 꽤 많았다. 처음에는 3명이 같이 시작했으나, 1명이 빠지고 그 시기에 우리 팀에 합류한 2명에게 구현 영역을 담당하게 해서 최종 4명이 공동집필한 책이 나오게 되었다. 아쉽지만 빠지게 된 동료에게 아쉽고 미안한 마음을 전하고 싶다. 중간에 합류한 두분은 좋은 회사로 떠나셨지만 그때의 고마움은 아직도 남아 있다.

사설이 길었다.

이 책은 도메인 주도 설걔(DDD, Domain-driven Design) 기법이 Microservices를 설계하고 개발하는데 어떻게 활용되는지 이론 뿐 아니라, 실제 수행의 관점에서 작성했다. 도메인 주도 설계에서 이야기하는 설계의 두 축인 Strategic Design, Tactical Design을 어떻게 수행하고 연결하는지 실제 IT산업 현장에서의 적용 경험과 노하우를 담기 위채 노력했다. 2년 가까운 시간동안 집필을 했자만 몇가지 아쉬운 점이 있다. 첫번째는 특정 기술을 활용한 구현 내용이다. 당사 환경설정 내용을 책이 담기 보다 좀더 쉽게 환경을 구성할 수 있도록 JHipster를 사용했는데, 이 선택이 도구의 의존성을 높이고 도구의 버전이 바뀜에 따라 독자의 실습에 문제가 되었다. 두번째는 이 책을 쓰는 내내 늦게 합류한 두명이 도메인 주도 설계의 사상과 개념을 명확히 이해하지 못했던 것 같다. 그만큼 쉬운 것 같지만 어려운 것이 사상과 개념을 실제 개발환경으로 가져오는 것이란 것을 깨달았다.

이 책은

  • 모든 IT종사자와 IT분야로 진로를 정한 학생들을 대상이다.
  • 단순히 기술을 구현하는 역량보다는 문제를 해결하는 과정과 방법을 도메인 주도 설게 기법에 기반해서 해결하는 유연한 역량을 키우는 것을 목표로 한다.
  • 집필 당시의 기술을 기반으로 하지만 기술의 변화에도 유연한 문제 해결 방법을 제시한다.

소개

넷플릭스, 우버, 아마존, 쿠팡 등의 대규모 인터넷 서비스를 제공하는 회사들의 애플리케이션은 어떤 구조로 만들어졌을까? 가상화되고 유연하게 변경되는 클라우드 인프라에 최적화된 애플리케이션 형태는 무엇일까?

이러한 질문의 해답이 되는 애플리케이션 형태가 바로 마이크로서비스이며, 마이크로서비스는 클라우드 환경에서 가장 진화된 애플리케이션 형태다.

이 책은 마이크로서비스 개발에 입문하고자 하는 분들을 위해 전반적인 마이크로서비스 아키텍처의 개념과 주요 패턴들을 소개하고 마이크로서비스 개발 방법으로 가장 주목받는 도메인 주도 설계를 살펴본다. 특히 도메인 주도 설계의 업무 분석 및 설계 기법인 이벤트 스토밍을 통해 업무를 빠르게 분석하고 마이크로서비스를 도출 및 설계하는 방법을 소개한다.

이 책은 초심자도 쉽게 이해할 수 있게 마이크로서비스의 전반적인 개념을 설명한 후 실제 마이크로서비스 개발을 위한 아키텍처 정의, 마이크로서비스 도출, 도메인 모델 설계, 구현, 빌드 및 배포와 같은 마이크로서비스 개발 활동들을 단계별로 알아본다.

목차

  • 01장: 아마존 비즈니스 민첩성의 비밀
  • 02장: MSA의 이해
  • 03장: 마이크로서비스 애플리케이션 아키텍처
  • 04장: 마이크로서비스와 애자일 개발 프로세스
  • 05장: 마이크로서비스 설계
  • 06장: 사례 연구 - 마이크로서비스 도출과 아키텍처 구성
  • 07장: 사례연구- 백엔드 마이크로서비스 구현
  • 08장: CQRS 패턴을 활용한 백엔드 마이크로서비스 개발
  • 09장: 사례 연구 - 시연 수행
  • 10장: 애플리케이션 통합과 배포

이 책에서 다루는 내용

  • 마이크로서비스의 주요 개념과 마이크로서비스 아키텍처 패턴
  • JHipster를 이용한 마이크로서비스 아키텍처 구현
  • 이벤트 스토밍 기법을 활용한 마이크로서비스 도출
  • 도메인 모델 중심의 마이크로서비스 내부 설계
  • 카프카를 활용한 이벤트 기반 마이크로서비스 개발과 클라우드 환경 배포

성과

  • 지식과 노하우를 글로 정리하면서, 나 또한 흩어져있던 지식과 생각들을 체계적으로 잘 정리하는 계기가 되었다.
  • 공동 집필자들과 기술과 방법에 대해 깊은 얘기를 나누고 생각을 맞추는 계기가 되었다.
  • 집 집필을 통해 이 분야의 많은 전문가와 교류하게 되었고, 지식과 생각의 폭을 넓힐 수 있었다.

링크