메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

이벤트 기반 마이크로서비스 구축

대규모 조직 데이터를 활용하는 기법

한빛미디어

번역서

판매중

  • 저자 : 애덤 벨메어
  • 번역 : 이일웅
  • 출간 : 2021-05-01
  • 페이지 : 380 쪽
  • ISBN : 9791162244173
  • 물류코드 :10417
  • 초급 초중급 중급 중고급 고급
4.3점 (23명)
좋아요 : 2

실시간 데이터 활용을 위한 새로운 시스템 아키텍처 가이드

 

이벤트 기반 마이크로서비스 아키텍처를 소개하는 실무 개론서다. 구조, 통신, 통합, 배포 등 기본 개념을 그림과 함께 구체적으로 설명한다. 따라서 이벤트 기반 시스템 구축 방식을 마이크로서비스로 전환하고자 하는 입문 개발자도 쉽게 읽을 수 있다. 넷플릭스, 링크드인, 스포티파이, 우버 등 세계 IT 기업들이 도입한 실제 데이터 사용법과 서비스 접근법을 익혀보자.

 

 

추천사

 

확장을 관리하고 복잡도를 길들이는 인싸들만의 비결!

_스콧 모리슨, PHEMI Systems 최고 기술 책임자(CTO)

 

이벤트 기반 시스템에 관심 있는 모든 이에게 알짜배기 정보다. 이 책이 나오길 손꼽아 기다렸다!

_벤 스토퍼드, 컨플루언트 수석 기술자, 『Designing Event-Driven Systems』 저자

애덤 벨메어 저자

애덤 벨메어

2020년부터 쇼피파이(Shopify) 데이터 플랫폼팀에 합류한 선임 엔지니어. 2020년 전에는 플립(Flipp)과 블랙베리(BlackBerry)에서 소프트웨어 개발자로 근무하며 이벤트 기반 시스템에 처음 눈을 뜨게 됐다. 데브옵스(카프카, 스파크, 메소스, 쿠버네티스, 솔라, 일래스틱서치, HBase, 주키퍼 클러스터, 프로그램식 구축/확장/모니터링) 분야의 전문가로서 기술 리더십(회사가 데이터 통신 레이어를 구축하고, 기존 시스템과 연계하고, 새로운 시스템을 개발하고, 제품을 전달하는 일에 집중하도록 지원), 소프트웨어 개발(빔, 스파크, 카프카 스트림즈 라이브러리를 이용하여 자바/스칼라 언어로 이벤트 기반 마이크로서비스 구축), 데이터 엔지니어링(사용자 기기에서 행동 기반 데이터를 수집하여 조직 내부에 공유) 분야에 많은 노하우를 갖고 있다.

이일웅 역자

이일웅

20년 가까이 국내외 엔터프라이즈 현장에서 자바 전문 풀스택 개발자, 소프트웨어/애플리케이션 아키텍트로 프로젝트를 수행했다. 어느덧 50대를 바라보는 중년 아재가 됐지만 아직도 궁금한 기술이 많은 엔지니어이고, 20여 권의 IT 전문서를 번역하며 동료, 후배 개발자들과 지식과 경험을 나누는 일에도 힘쓰고 있다.
 

CHAPTER 1 왜 이벤트 기반 마이크로서비스인가?

__1.1 이벤트 기반 마이크로서비스란?

__1.2 도메인 주도 설계와 경계 콘텍스트

__1.3 통신 구조

__1.4 기존 컴퓨팅의 통신 구조

__1.5 이벤트 기반 통신 구조

__1.6 비동기식 이벤트 기반 마이크로서비스

__1.7 동기식 마이크로서비스

__1.8 마치며

 

CHAPTER 2 이벤트 기반 마이크로서비스 기초

__2.1 토폴로지 구성

__2.2 이벤트 콘텐츠

__2.3 이벤트 구조

__2.4 엔티티 이벤트에서 상태를 구체화

__2.5 이벤트 데이터 정의와 스키마

__2.6 마이크로서비스 단일 작성자 원칙

__2.7 마이크로서비스를 이벤트 브로커로 강화

__2.8 이벤트 브로커 대 메시지 브로커

__2.9 대규모 마이크로서비스 관리

__2.10 마이크로서비스 세금 납부

__2.11 마치며

 

CHAPTER 3 통신 및 데이터 규약

__3.1 이벤트 기반 데이터 규약

__3.2 이벤트 포맷 선택

__3.3 이벤트 설계

__3.4 마치며

 

CHAPTER 4 기존 시스템에 이벤트 기반 아키텍처 통합

__4.1 데이터 해방이란?

__4.2 데이터 해방 패턴

__4.3 데이터 해방 프레임워크

__4.4 쿼리로 데이터 해방

__4.5 CDC 로그로 데이터 해방

__4.6 아웃박스 테이블로 데이터 해방

__4.7 데이터 정의 변경을 캡처 대상 데이터 세트로

__4.8 이벤트 데이터를 데이터 저장소에 싱킹

__4.9 싱킹과 소싱의 비즈니스 영향도

__4.10 마치며

 

CHAPTER 5 이벤트 기반 처리 기본

__5.1 상태 비저장 토폴로지 구성

__5.2 이벤트 스트림 리파티션

__5.3 이벤트 스트림 코파티션

__5.4 컨슈머 인스턴스에 파티션 할당

__5.5 상태 비저장 처리 인스턴스 실패 복구

__5.6 마치며

 

CHAPTER 6 확정적 스트림 처리

__6.1 이벤트 기반 워크플로의 확정성

__6.2 타임스탬프

__6.3 이벤트 스케줄링과 확정적 처리

__6.4 워터마크

__6.5 스트림 시간

__6.6 비순차 이벤트와 지각 이벤트

__6.7 지각 이벤트 처리

__6.8 재처리 대 준실시간 처리

__6.9 간헐적 실패와 지각 이벤트

__6.10 프로듀서/이벤트 브로커 연결 문제

__6.11 마치며(더 읽을거리)

 

CHAPTER 7 상태 저장 스트리밍

__7.1 상태 저장소, 이벤트 스트림에서 상태 구체화

__7.2 체인지로그 이벤트 스트림에 상태 기록

__7.3 내부 상태 저장소에 상태 구체화

__7.4 외부 상태 저장소에 상태 구체화

__7.5 재구성 대 상태 저장소 마이그레이션

__7.6 트랜잭션과 실제로 한 번 처리

__7.7 마치며

 

CHAPTER 8 마이크로서비스 워크플로 구축

__8.1 코레오그래피 패턴

__8.2 오케스트레이션 패턴

__8.3 분산 트랜잭션

__8.4 보상 워크플로

__8.5 마치며

 

CHAPTER 9 FaaS 응용 마이크로서비스

__9.1 함수 기반 솔루션을 마이크로서비스로 설계

__9.2 FaaS 공급자 선택

__9.3 함수를 마이크로서비스로 개발

__9.4 콜드 스타트, 웜 스타트

__9.5 트리거로 함수 시동

__9.6 비즈니스 업무를 함수로 처리

__9.7 상태 관리

__9.8 함수에서 다른 함수 호출

__9.9 종료 및 중단

__9.10 함수 튜닝

__9.11 FaaS 솔루션 확장

__9.12 마치며

 

CHAPTER 10 기본 프로듀서/컨슈머 마이크로서비스

__10.1 BPC의 알맞은 용도는?

__10.2 하이브리드 BPC 애플리케이션으로 외부 스트리밍을 처리

__10.3 마치며

 

CHAPTER 11 대용량 프레임워크 마이크로서비스

__11.1 대용량 프레임워크의 간략한 역사

__11.2 대용량 프레임워크의 내부 작동 원리

__11.3 장점 및 제약

__11.4 클러스터 구성 옵션과 실행 모드

__11.5 애플리케이션 제출 모드

__11.6 상태 처리와 체크포인트 활용

__11.7 애플리케이션 확장과 이벤트 스트림 파티션 처리

__11.8 실패 복구

__11.9 멀티테넌시 이슈

__11.10 언어 및 구문

__11.11 프레임워크 선택

__11.12 예제: 클릭 및 뷰의 세션 윈도잉

__11.13 마치며

 

CHAPTER 12 경량 프레임워크 마이크로서비스

__12.1 장점 및 제약

__12.2 경량 처리

__12.3 상태 처리와 체인지로그 활용

__12.4 애플리케이션 확장과 실패 복구

__12.5 경량 프레임워크 선택

__12.6 언어 및 구문

__12.7 스트림-테이블-테이블 조인: 강화 패턴

__12.8 마치며

 

CHAPTER 13 이벤트 기반 마이크로서비스와 요청-응답 마이크로서비스의 통합

__13.1 외부 이벤트 처리

__13.2 자율적으로 생성된 분석 이벤트 처리

__13.3 서드파티 요청-응답 API 연계

__13.4 상태 저장 데이터 처리 및 서비스

__13.5 이벤트 기반 워크플로 내에서 요청 처리

__13.6 요청-응답 애플리케이션과 마이크로프런트엔드

__13.7 마이크로프런트엔드의 장점

__13.8 마이크로프런트엔드의 단점

__13.9 마치며

 

CHAPTER 14 지원 도구

__14.1 마이크로서비스-팀 배정 시스템

__14.2 이벤트 스트림 생성/변경

__14.3 이벤트 스트림 메타데이터 태깅

__14.4 쿼터

__14.5 스키마 레지스트리

__14.6 스키마 생성/변경 알림

__14.7 오프셋 관리

__14.8 이벤트 스트림 권한과 ACL

__14.9 상태 관리와 애플리케이션 리셋

__14.10 컨슈머 오프셋 랙 모니터링

__14.11 마이크로서비스 생성 프로세스 간소화

__14.12 컨테이너 관리 서비스

__14.13 클러스터 생성과 관리

__14.14 디펜던시 추적과 토폴로지 시각화

__14.15 마치며

 

CHAPTER 15 이벤트 기반 마이크로서비스 테스트

__15.1 일반 테스트 원칙

__15.2 단위 테스트 토폴로지 함수

__15.3 토폴로지 테스트

__15.4 스키마 진화와 호환성 테스트

__15.5 이벤트 기반 마이크로서비스의 통합 테스트

__15.6 로컬 통합 테스트

__15.7 완전 원격 통합 테스트

__15.8 완전 원격 통합 테스트 전략 선택

__15.9 마치며

 

CHAPTER 16 이벤트 기반 마이크로서비스 배포

__16.1 마이크로서비스 배포 원칙

__16.2 마이크로서비스 배포 아키텍처 컴포넌트

__16.3 기본 풀-스톱 배포 패턴

__16.4 롤링 업데이트 패턴

__16.5 중대한 스키마 변경 패턴

__16.6 블루-그린 배포 패턴

__16.7 마치며

 

CHAPTER 17 총정리

__17.1 통신 레이어

__17.2 비즈니스 도메인과 경계 콘텍스트

__17.3 공용 도구와 인프라

__17.4 스키마화 이벤트

__17.5 데이터 해방, 단일 진실 공급원

__17.6 마이크로서비스

__17.7 마이크로서비스 구현 옵션

__17.8 테스트

__17.9 배포

 

맺음말

이벤트 기반 마이크로서비스를 실무에 도입하려는 입문자를 위한 실용적인 가이드북 

 

오늘날 조직은 다양한 요구 사항과 계속 증가하는 데이터로 인해 어려움을 겪는다. 특히, 실시간 데이터 활용에 대한 수요가 증가하고 있어, 새로운 시스템 아키텍처 도입이 절실하게 요구된다. 이 책은 대규모 조직 데이터를 처리하기 위해 이벤트 기반 마이크로서비스로 전환하려는 실무 입문자를 위한 실용적인 가이드북이다. 이벤트 기반 마이크로서비스 구축 방법, 적합한 애플리케이션 패턴, 도입 시 필요한 구성 요소와 도구, 일반 마이크로서비스와의 차이점 등을 친절하게 안내하고 본인의 환경에 맞는 비즈니스 기능에 집중할 수 있는 토대를 갖추도록 돕는다. 대용량 데이터를 다루는 환경에서 기존의 데이터베이스로 데이터를 처리하려면, 여러 가지 어려움과 한계점에 맞딱뜨리기 쉽다. 이 책에서 소개하는 알짜배기 정보를 활용하면 이벤트 기반 시스템의 여러 문제를 연구하고 해결할 수 있다.

  • 통신 레이어
  • 비즈니스 도메인과 경계 콘텍스트
  • 공용 도구와 인프라
  • 스키마화 이벤트
  • 데이터 해방, 단일 진실 공급원
  • 마이크로서비스 구현 옵션
  • 테스트
  • 배포

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

현재 재직 중인 회사에서는 마이크로서비스 아키텍처를 지향하면서 프로젝트를 진행하고 있다. 마이크로서비스에 대해서는 경험이 없었기 때문에 개발 초기 설계 단계에서 공부도 많이 하고 고민도 많이 했었다. 또한 진행 중에도 서버간 통신이나 데이터 관리, 사내 다른 팀에서 개발한 API 서버와의 연동 등 많은 시행착오를 거쳐야 했다. 이벤트 기반 마이크로서비스 구축 책의 1장에서 여러 상황들에 대한 예를 들어가며 설명을 이어나가는데 너무나 공감되는 내용들이 많았다. 비즈니스 콘텍스트와 기술 콘텍스트 중 어느 것에 맞출 것인가도 프로젝트 초기에 고민을 했던 부분 중에 하나였다. 실제로 기술 적인 부분에 초점을 맞춰 개발을 진행하다보니 엔지니어 관점에서는 재미도 있었고 얻는 것도 많았지만 아키텍처의 복잡도가 올라갔고, 운영이 어려워졌었다. 또한 팀과 팀이 협업하게 되면서 서로의 의견을 이해하지 못하거나 서로의 작업 우선순위가 달라 시간이 낭비되는 등 예상치 못한 문제들이 있기도 했다. 이런 부분에 대해 책에서 언급을 해주니 우리 팀만 이런 고충을 겪는 것이 아니구나 라는 것에 안도감을 느꼈다.

 

내가 느낀 이 책의 장점은 실제 발생할 수 있는 문제들이나 내가 겪었던 그런 상황들을 떠올릴 수 있게 설명을 풀어가고 여러 해결책을 제시해주고 있다는 것이 었고 이로 인해 집중해서 읽을 수 있었다. 겪었던 이슈들에 대해서는 기억이 잊혀져 가고 있었는데 다시 한번 되새기게 해주기도 했고,  많은 인사이트를 주는 내용들을 담고 있어서 좋았다. 하지만 모든 부분을 이해하고 읽지는 못했고, 아직 내 지식 수준에서는 어려운 부분들이 많았다. 마이크로서비스를 위한 다양한 방법들과 해결책들의 액기스만을 모아놓은 것 처럼 유용한 정보가 가득한 것이 장점이라면 이 부분들을 실제 적용해보고 경험해볼 수 있는 부분은 독자의 몫이라는 것이 단점이라고 할 수 있을 듯 하다. 왜냐하면 책을 읽고나서 배운 지식을 어떻게 써먹어야할지 아직 머릿속에 정리가 되지 않은 느낌이다. 이 부분은 단기간에 해소가 될 것 같진 않고 하나씩 경험해보며 깨우쳐나가야할 것 같다. 

 

개인적으로 마이크로서비스를 처음 접하는 독자라면 책 내용이 다소 어렵고 와닿지 않을 수 있을 것이라 생각이되고, 마이크로서비스 아키텍처로 프로젝트를 진행해본 경험이 있거나 여러 시행착오를 겪고 있는 독자라면 큰 도움이 될 것이라 생각한다. 

 

 

 

 

 

SE-e4d977fb-38d3-4a8d-b450-4e8e86486f35.jpg

 

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

대상 독자

MSA 개념에 대해서 간략한 설명으로 넘어가기 때문에 해당 지식과 경험이 있는 사람을 위한 책이다.

대규모 조직 데이터를 다룰 일이 있는 사람에게 도움이 될 것으로 보인다.

 

좋은 점

다양한 케이스들을 보여주면서 설명을 해줘서 좋고 장/단점에 대할 설명이 있어 빠르게 읽고 넘어가기 좋았다.

또한 실무에 바로 적용 가능한 내용을 다루고 있어 가볍게 따라 해보거나 바로 적용할 수 있어 보였다.

 

아쉬운 점

깊이보단 실용적인 내용으로 깊이의 부족함을 느낄 수밖에 없는 부분은 아쉬움으로 남는다.

 

총평

책 내용에서 허들이 있긴 하지만 프로젝트 리더급에 도움이 될 만한 내용이라 생각된다.

지금 운용하고 있거나 앞으로 시작할 프로젝트에 적용할 수 있는지 여부가 가장 중요한데,

책의 초입부에 이벤트 기반/비동기식 마이크로서비스의 장단점에 대한 설명으로 시작을 하는 점이 매우 좋았다.

 

새로운 기술이 쏟아지고, 비즈니스 환경이 바뀌면서 개발 방법도 그에 맞춰 바뀐다.
요즘 가장 인기있는 아키텍쳐 중 하나로 MSA(Microservice Architecture)를 꼽을 수 있다.
쉽게 말하면, 작은 서비스로 분리하여 개발하는 것을 말한다.
기존의 모노리식 아키텍처의 단점을 해결할 수 있는 방법으로 각광받고 있다.
 
 

ems.jpg

 

 
이 책은 '이벤트' 기반의 마이크로서비스에 대해 알려주고 있다.
이 책의 장점은 마이크로서비스에 대한 전반적인 내용을 모두 다루고 있다는 것이다.

이 책은 '마이크로서비스'가 무엇인지로 시작한다.
개념적인 내용이라 생소할 수 있는 서비스를 잘 설명해 주고 있다
그리고 마이크로서비스에 대한 아키텍트 설명과 구축방법을 보여준다.
사용할 수 있는 서비스, 지원도구에 대한 소개도 하고 마지막으로 테스트와 배포까지 알려준다.
마이크로서비스의 시작에서부터 끝까지, 모두를 보여주고 있다.
 
거대한 마이크로서비스를 특징별(FasS, 대용량, 경량)로 구분해서 설명해 준 것이 좋았다.
개략적으로 알고 있는 내용이였지만, 이 책을 통해 각각의 장단점과 적용범위, 유의사항에 대해 제대로 알 수 있었다.
 
이벤트 기반 통신은 기존 구현/데이터 통신 구조의 대안입니다.
요청-응답 기반 통신을 한꺼번에 대체할 수는 없지만 완전히 다른 서비스 간 통신 수단을 제시합니다.
이벤트 스트리밍 방식의 데이터 통신 구조에서는 데이터를 생산/소유하는 것과 데이터에 접근하는 행위가 철저히 분리되기 때문에 서비스는 더 이상 직접 요청-응답 API에 얽매이는 일 없이 이벤트 스트림 내부에 정의된 이벤트 데이터를 매개로 소통합니다.
 
이벤트 기반 마이크로서비스의 가장 큰 특징은 '이벤트'를 중심으로 데이터를 '매개'로 소통하는 것이다.
철저히 분리된 서비스는 확장이나 제거가 용이하다.
이는 피벗 등 비즈니스 모델의 변화가 큰 스타트업에 적합한 방법이다.
 
이벤트 기반 마이크로서비스는 비즈니스 요건에 따라 아키텍처를 모델링하는 것이 바람직하니다.
물론 코드가 여러 번 복제되거나 비슷한 패턴으로 데이터에 접근하는 서비스가 증가하는 트레이드오프는 있습니다.
개발자는 다른 제품과 데이터 소스를 공유하거나 경계를 연결하는 식으로 이런 반복을 줄이려고 애쓰겠지만, 장기적인 관점에서는 이렇게 단단히 결합될 경우 로직을 반복하고 비슷한 데이터를 저장하는 것보다 훨씬 값비싼 대가를 치르게 될 것입니다.
 
모놀리식 아키텍처와의 차이점을 잘 보여주고 있는 글이다.
이벤트 기반 마이크로서비스가 최고의 아키텍쳐는 아니다.
아키텍처를 논할 때 '최고'는 의미가 없다. 있을 수도 없다.
다만 비즈니스 모델에 맞는 '최적'의 아키텍쳐가 있을 뿐이다.
 
모놀리식, SOA(Service-oriented architecture), MSA 등 많은 아키텍쳐가 있다.
모두가 최적의 비즈니스 환경에서 잘 운영되고 있다.
비즈니스 환경이 복잡해 지면서 MSA에 대한 요구가 많아지고 있을 뿐이다.
 
코드 한 줄 없는 책이지만, 아키텍처나 관심있는 분들에게는 매력적인 책일 것이다.
특히, 마이크로서비스를 처음 접하는 분들에게 추천하고픈 책이다.

 

이번달 한빛출판사의 '나는 리뷰어다' 프로그램에서 선정된 도서는 <이벤트 기반 마이크로서비스 구축> 입니다.

 

 

전반적으로 보면 옮긴이의 말에서처럼 이벤트 기반 '마이크로서비스 구축'이 아닌 '이벤트 기반' 마이크로서비스입니다.

어찌보면 말장난일 수도 있겠지만 마이크로서비스보다는 이벤트 기반 시스템 구축에 방점이 맞춰져 있다고 생각됩니다.

 

책 구성은 다음과 같습니다.

 

총 17개 챕터로 구성되어 있습니다.

 

첫번째 챕터에서는 마이크로서비스에 대한 이야기를 하고 있는데요 마이크로서비스에 대한 이해가 없다면 이 챕터를 반드시 정독해야 합니다.

두번째 챕터에서는 이벤트 기반 마이크로서비스에 대한 기초적인 내용을 설명하고 있습니다. 마이크로서비스에 대해서는 첫번째 챕터에서 다뤘기 때문에 이 챕터에서는 이벤트 기반 서비스 구축을 중심으로 설명하고 있습니다.

세번째 챕터는 통신 및 데이터 규약에 대해 설명하고 있으며 네번째 챕터에서는 기존 시스템과 이벤트 기반 아키텍처를 통합하는 문제에 대해 얘기하고 있습니다. 

다섯번째 챕터부터는 구체적인 이야기를 하고 있는데요 다섯번째 챕터에서는 이벤트 기반 처리에 대한 기본적인 내용을 다루고 있으며 여섯번째 챕터에서는 스트림 처리, 일곱번째 챕터에서는 상태저장 스트리밍에 대해 얘기하고 있습니다. 여덟번째 챕터에서는 실제 워크플로 구축하는 방법을 설명하고 있으며 아홉번째 챕터에서는 FaaS를 응용한 마이크로서비스에 대한 얘기를 하고 있습니다.

개인적으로는 FaaS 서비스를 이용하고 있기도 하고 관심도 있고 해서 상당히 흥미롭게 본 챕터이긴 합니다.

열번째 챕터에서는 프로듀서/컨슈머 마이크로서비스를 얘기하고 있고 열한번째, 열두번째에서는 각각 대용량과 경량 프레임워크에 대한 얘기를 하고 있습니다.

열세번째 챕터에서는 이벤트 기반 마이크로서비스와 요청-응답 마이크로서비스의 통합에 대한 얘기를 하고 있는데요 이미 마이크로서비스를 구축하고 계신 상태에서 이벤트 기반의 서비스 구축으로 변경하고자 하신다면 이 챕터가 가장 큰 관심사가 아닐까 싶습니다. 어차피 기존의 요청-응답 구조의 마이크로서비스를 한순간에 이벤트 기반으로 완전히 옮기는 일이 쉬운 일은 아닐테니까요..

열네번째 챕터부터는 지원도구와 테스트, 통합 그리고 마무리를 짓는 챕터입니다.

 

사실 개발이 주업무가 아니고 마이크로서비스 시스템 구축을 해본적도 없는 저에게 결코 쉽지 않은 책이었습니다. 마이크로서비스에 대해 관심을 가져 이 책을 보긴 했습니다만 마이크로서비스도 익숙하지 않은데 너무나 생소한 이벤트 기반 서비스에 대한 내용은 상당히 어렵게 느껴진 책임에는 틀림없습니다.

 

하지만 아키텍처는 꾸준히 발전하고 있고 클라우드의 발전과 함께 다가온 마이크로서비스 아키텍처의 대중화 물결 속에서 또 개발의 범위가 무한히 확장되고 있는 속에서 기존의 요청-응답 방식에서 벗어난 이벤트 기반의 서비스 구축을 고민해보고 있다면 쉬운 책은 아닐지라도 개발에서 한발 벗어나 있는 제가 볼만하다고 느낀 책이니만큼 실제 개발하면서 머릿속에서나마 현장을 접목시켜볼 수 있는 수많은 엔지니어에게는 많은 도움이 될 수 있는 책이 아닐까 싶습니다.

 

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  

현재 IT는 혁신의 시대를 맞이하고 있습니다. 하루를 멀다하고 새로운 개념과 기술 그리고 이를 지원할 수 있는 하드웨어가 쏟아져 나오고 있습니다. IT 서비스들도 이러한 변화하는 환경에 맞게 기능을 추가 변경하거나 갑작스러운 서비스 요청량 증가에 대응할 수 있는 유연한 시스템 구조의 필요성이 대두되게 되었고, 이러한 요구 사항을 해결하기 위해 마이크로서비스 시스템 구조가 등장하게 되었습니다.

 

이 책은 이벤트 기반 마이크로서비스를 이해하고 실제 구성하는데 알아야할 전반적인 내용을 포함하고 있습니다. 마이크로 서비스 구축에 사용되는 기술의  구체적인 사용법은 이 책의 범위에 포함되지 않으므로 각 기술들에 대한 구체적인 내용은 책에 포함된 url을 참고하여 별도 학습이 필요합니다.

 

* 이벤트 기반 마이크로서비스의 특징  

* 이벤트 설계 및 사용 방법

* 기존 시스템과의 통합

* 다양한 형태의 마이크로서비스 소개

* 설계, 구현, 테스트, 배포 시 유의 사항

* 이벤트 기반 마이크로서비스 구축에 필요한 기술 및 지원 도구 소개

 

기존 서비스를 구축를 하면서 발생하는 문제들 (기능 변경 및 추가, 갑작스런 사용자 증가, 조직 변경에 따른 서비스 관리 경계 모호)을 경험한 개발자나 PM들을 이 책을 >통해 이벤트 기반 마이크로서비스를 공부하고 실무에 적용하면 많은 도움을 받을 것으로 기대합니다. 마이크로 서비스에 대한 기본적인 지식이 없는 분들이 읽고 이해하기에는 조금 어려운 책이라는 생각이 들지만 개인적으로는 독자의 이해를 돕기 위한 이론적 설명, 실서비스 예제, 비교, 그림 들이 많이 포함되어 있어 내용을 이해하는데  많은 도움이 되었습니다.

 

마이크로서비스를 구축하면서 서비스간의 결합도를 낮추고 컨슈머쪽 스케일 아웃을 위해 AWS MQ, SQS 같은 메세지큐를 사용하곤 했는데, 이 책은 아파치 카프카 같은 이벤트 브로커를 단순한 서비스간 메세지 전달에서 나아가 마이크로서비스를 위한 데이터 통신 구조와 이벤트 스트림을 단일 데이터원천으로서의 활용방법등을 설명한다.

이벤트는 어떻게 정의/설계하는 것이 좋을까 같은 기본적인 것부터 스트림처리에 대한 다양한 방식과 이벤트 기반 마이크로서비스의 테스트등 구축에 필요한 전반적인 내용을 모두 포함하고 있다. 그림을 잘 활용해서 개념을 설명하고 있지만, 따라하기 식의 책은 아니어서 마이크로서비스에 대한 구축경험이 없다면 그 활용에 공감하기 힘들 수도 있다.

개인적으로는 그동안 서비스 위주의 시각에서 마이크로서비스를 개발하면서 봤던 이벤트 스트림을 이벤트 기반의 마이크로서비스 관점에서 바라보면서 문제해결을 위한 조금 더 다양한 시각을 가지게 된 것 같아 마음에 든다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성한 서평입니다.

"이벤트 기반 마이크로서비스 구축"이라는 가벼운(?) 제목에 혹해서 보게 되었다.  
하지만 기대와 달리 매우 심도 깊은 주제를 다루는 교재 같은 느낌이었다.  
MSA를 구현보다는 그 이면의 사상과 이슈들을 다루고 있다.  
 
실용적인 책은 아니며, 아키텍터 혹은 리더급 개발자에게 새로운 시각을 제공할수 있으리라 생각한다.  
실체를 제시하거나 만들어 보는 것이 아니라, 저자의 경험을 바탕으로 실무에서 고려해봐야 할 내용들을 집어주는 형식이다.  
아키텍처 및 도메인 기반 설계, 스트리밍, 메시징, API 등등 책을 읽어 나가기에 상당한 허들이 있다.  
MSA의 기초나 DDD 등 관련 내용이 매우 적기 때문에 다른 기본서로 어느정도 지식을 갖추어야 이해가 될만한 책이다.  
그리고 많은 주제를 다루는데 비해 꽤 얇다.  
세부 주제만 놓고 보면 다소 깊이가 부족한 느낌도 있다.  
 
결론적으로 MSA나 event-driven에 대해 공부하고 싶은 초보자라면 다른책으로 선행학습하고 보길 권한다.

 

이번 읽은 책은 "이벤트 기반 마이크로서비스 구축"입니다.

 

대상독자

초보는 아직 읽지마세요.

마이크로서비스 아키텍쳐를 구현해본적 있거나 관심이 있어서 구현하고 싶으신분, 그리고 상급자를 설득하고 싶으신분에게 어울리는 책입니다.

 

난이도

실습보다는 개념서입니다.

쉽지는 않습니다.

본인의 의지만 있으면 사전을 찾아가며 영문소설을 읽는 느낌으로 모르는 기술을 가지처럼 공부 하게 되면

아키텍쳐에 대한 지식을 넓힐 수 있는 기회가 될듯합니다.

 

처음부터 어려운 내용을 말하지는 않습니다.

그리고 실습서가 아닙니다.

"기존에 사용 하던 방법은 이렇지만 이벤트기반으로 바꾸면 이런 모습으로 설계하고 동작하게 됩니다"라는 식으로 진행하게 됩니다.

이와 같이 개념과 이론을 가르쳐주고 있습니다.

그렇기 때문에 아키텍쳐의 패러다임이 바뀌지 않는다면 언제든 궁금하거나 막히는 부분을 찾아 볼 수 있는 책입니다.

 

 

그 외...

사내 프로젝트를 진행 하면서 가장 생각을 많이 하고 고민 하면서 개발 했던것이 서버였습니다.

마이크로서비스를 배우고 정보를 수집하고 만만하게 달려들었습니다.

처음 구축 하다보니 막히는 부분도 너무 많고 새로 엎길 반복 하면서 만족 할 수 없지만 서비스를 하고 있습니다.

이 책은 우리 프로젝트에 맞는 내용은 아니였지만 추후에 우리 서비스가 대박이 난다면... 그래서 대용량 트래픽이 발생 하게 된다면... 그래서 서버를 다시 개발해야 하는 상황이 온다면...

그 때 다시 한번 깊게 공부 할 수 있는 키워드 역할이 될것 같습니다.

 

한줄평

넷플릭스, 링크드인, 스포티파이, 우버의 아키텍쳐가 궁금합니까? 그렇다면 읽어보세요.

 

* 이 책은 한빛미디어의 나는 리뷰어다 이벤트를 통해 제공받았습니다

 

※해당 내용은 한빛미디어의 2021년 나는 리뷰어다의 활동 기반으로 작성한 글 입니다.

이달의 책은 바로 이벤트 기반 마이크로서비스 구축 리뷰이다!

 

SE-b201ae65-6a73-491e-bdfe-9bbbdaba48e5.jpg

 

이 책을 처음 봤을때 이벤트 기반 마이크로서비스 구축이라는 단어가 너무 낯설었다. 사실 마이크로서비스라는 단어는 들어 봤지만 어떤건지 잘 몰랐다. 지금까지는 프로그래밍 언어나 디자인 패턴, 리팩터링같은 개발 방법론 까지만 알고 있었다면, 이 책은 시스템 구축을 위한 책이기 때문이라고 생각한다. 프로그램을 개발하기 위한 언어의 문법이나 기법들도 중요 하지만 규모가 제법 있는 프로그램을 아무런 설계도 없이 개발하다 보면 언젠간 한계가 오게 되고, 결국 실패한 프로젝트로 끝나게 될 것이다. 마침 신규 프로젝트를 진행함에 있어 PM역할을 하게 됐는데, 규모는 크진 않지만 이 책을 참고하면서 도움이 많이 될 것 같다는 생각이 들었다.​ 책을 한번 읽고 난 소감은 뭔가 많이 어렵다. 처음 들어보는 단어 투성이라서 아하! 보단 아~ 그렇구나... 하면서 넘겼다. 내가 아직 경험이 부족해서 그렇다. 그래서 대상 타깃은 아마 초-중급 보단 어느정도 연차가 쌓이신 팀장님급 개발자 분들이 대상이지 않을까 싶다. 아무래도 대용량 데이터를 다뤄본 경험도 부족하고 프로젝트를 했던 규모들도 작다보니 현재 나의 상황과는 많이 달라서 이해하기 조금 부족했다. 그러나 언젠간 대용량 데이터에 대해 다룰 기회가 생길 것이고 빅데이터는 요즘 가장 핫한 주제이기도 하니 두고두고 보는게 좋을 것 같다.그래서 이번 리뷰는 좀 많이 짧다... ㅎㅎ​대상 독자실무에서 마이크로서비스 구축을 앞두고 있는 관리자급 개발자, 마이크로 서비스 구축에 관심이 있는 개발자.​

 

 

 

 

이번년도에도 한빛 미디어의 나는 리뷰어다에 선정되어 매달 책 한 권씩을 읽을 수 있게 됐다. 5월 미션으로 나온 책 중에 하나인 이벤트 기반 마이크로서비스 구축을 받게 됐고, 이번 달에 읽어보게 됐다. 이 글은 이 책에 대한 간단한 리뷰이다.

 

최근 마이크로 서비스와, 이벤트 기반 아키텍처에 대한 관심과, 그를 뒷받침 해주는 기술들의 큰 발전이 있었다고 생각한다. 그에 따라 많은 자료, 방법, 아키텍처 등이 등장했는데, 이 책은 그러한 여러 패턴 및 자료를 집대성해둔 책이라는 생각이 들었다. 본인은 이벤트 기반 서비스를 개발해보거나, 잘 알지 못헤서, 읽는데 굉장히 어려움이 많았다. 그러나 책 자체가 이벤트 기반 마이크로서비스를 잘 모르더라도 어느 정도 이해할 수 있도록 기본 개념도 함께 설명해준다. 다만, 책 안에는 특별한 예시 상황에 대해서는 다루지 않는다. 그러나 만들 수 있는 패턴, FaaS에 대해서도 소개하고 알려주며, 어떤 상황에서 사용해야 하는지에 대해서도 챕터로 나누어 다루고 있다. 책을 읽으면서 페이지를 넘기기 어려웠던 건 사실이지만, 꼭 몇 번을 읽어서 숙지하고 싶은 책이다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다

 

이번에 리뷰하게 된 책은 "이벤트 기반 마이크로서비스 구축"입니다.

과거에도 SOA(서비스 지향 아키텍처) 같은 것을 통해 (상태변화같은) 이벤트가 발생시 여러 서비스 간에 메시지를 
주고 받는 기술은 존재했습니다.
현대의 이벤트 기반 마이크로서비스 아키텍처에서는 이벤트 수신 대상(마이크로서비스)이 동적으로 수십수백개 등으로 확장될 수가 있습니다.

pub/sub를 통해 이벤트를 발행하고, 이벤트는 일회성으로 소비되는게 아니라  같은 메시지를 다른 서비스에서도 수신할 수 있도록 보존되어야 합니다.
코레오그래피 패턴이나 오케스트레이션 패턴등을 활용해 워크플로를 구성해야 합니다.
중복이벤트를 방지하기 위한 노력도 해야하구요.
서로 독립적인 마이크로서비스들의 분산트랜잭션등을 지원하기 위해 어떤 이벤트가 정상완료 되었는지 확정처리할 것인지
잘못되었을때 DB의 redo/undo 로그처럼 체인지 로그를 기록하고 특정 시점부터 다시 시도할 것인지 아니면 보상서비스를 실행시킬 것인지 등도 고려해야합니다.
이벤트의 포맷변경에 따른 버전처리 및 관련 직렬화 역지렬화도 고려해야 합니다.
테스트와 배포에 대해서도 고민해야 합니다.

이 책은 구조, 통신, 통합, 배포등에 대해 그림과 함께 개념을 설명하고 있습니다만, 초보자(혹은 실무자가 아닌) 사람이 읽기에는 좀 어렵습니다. 용어도 낯설고 카프카같은 어떤 구체적인 제품에 대한 실습이 있는 책은 아닙니다. 그래도 이벤트 기반 마이크로서비스에서 고려해야할 용어나 개념이나 시나리오 에 대해 전반적으로 다뤘다는 점은 좋았습니다.

이벤트 기반 마이크로서비스

 

이 책을 읽으면 좋은 사람

- 서비스 구축 아키텍처에 관심이 많은 사람

- 서비스 구축을 하려고 하는데 고민이 있으신 분

 

책의 난이도

- 비전공자라면 조금 어려울 수 있습니다. (개념이 익숙지 않아서)

- 중니어 이상의 난이도라고 개인적으로 생각합니다.

 

책 자체의 설명은 최대한 쉽게 풀어쓰려고 노력한 느낌이 많이 들며, '이벤트'라는 개념과 관련 개념들이 추상적이어서 쫓아가기가 어렵지만, 이해를 돕기위한 플로우 그림들이 많이 있으므로 느낌적인 느낌으로 읽어내려가기는 좋은 책입니다.

다만 완전히 이해하고 실제 서비스에 도입함에 있어서는, 아키텍처 관련한 깊이있는 이해가 있지 않은 이상 고민을 할 수 밖에 없을 것 같습니다. (시간적 여유등이 있다면 차분히 연구해서 도입해도 되겠지만, 실 서비스를 구축할 때 그렇게 시간적 여유가 있지는 않은 경우가 많으니까요)

 

개인적으로는 여러번 읽고 소화해서 언젠가 실제로 도입해보고

제 것으로 만들어봐야겠다는 목표를 만들게 한 책이었습니다 :)

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

Msa  대해서 솔직히  몰랐습다단순히 모놀리틱 반대되는 것이 msa   알았습니다그런데 그게 아니구나 하는 것을  책을 통해 느낄  있었습니다.

  읽는 꿀팁을 알려드린다면 장을 읽을 때마다  장의 마지막 장에 있는 ‘마치며’ 부분을 먼저 읽고 다시 앞으로 가서 찬찬히 보는 것을 추천합니다

최근에는 처리해야 할 서비스들을 도메인별로 나누어서 마이크로 서비스로 구축하는 경우가 많아졌다. 그러다 보니 서비스들 간에 서로 통신을 해야 할 일들이 많아지게 되고 이런 처리를 어떻게 해야 할지 고민이 많아졌다. 그중 하나의 방법으로 이벤트 기반으로 정의를 해서 정보를 가져올 수 있는 기법들이 나오게 되었다. 

먼저 이벤트를 정의 를하고 프로듀서는 이벤트를 생성하게 된다. 그리고 그 이벤트를 필요로 하는 컨슈머들은 해당 이벤트를 소비함으로써 프로세스를 처리하게 된다. 간단하게 말하긴 했지만 이벤트를 생산하고 소비하는 과정에서 처리해야 할 일을이 많다. 특히 정상처리 상태에서는 괜찮지만 비정상적으로 처리가 잘못될 경우에 대한 생각들을 많이 해야 한다. 

이 책은 이벤트 기반 마이크로 서비스에 대해서 무엇이 필요하고 각각은 어떤 역할을 해야 하는지 알려주고 있다. 각 레이어 별로 구간구간 처리에 대한 방법, 이론적인 내용들을 잘 설명해 주고 있다. 

하지만 읽으면서 느꼈던 점은 아무래도 이론적인 내용들이 많다보니 이런 이벤트 처리에 대한 경험이 있는 상태에서 읽으면 더 도움이 될것 같다는 생각이 들었다. 그저 막연하게 마이크로 서비스가 무엇이다, 이벤트가 무엇이다 정도 알고 있다면 내용을 이해하기가 좀 어려울수도 있을것 같다. 입문자도 읽을수 있다고는 하지만 내용이 머릿속에 잘 그려지지 않았다. 그래서 프로그래밍 레벨에서 관련 내용을 구현해보거나 운영중인 사람들이 읽기에 더 적합한것 같다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


레거시 시스템을 변경하는 아키텍쳐 고민 중이라면 읽어야 할 책

마이크로서비스는 현 시점에서 새로운 화두라고 보기엔 어려운면이 있습니다. 왜나면, 너무 오랜 시간동안 언급되어왔기 때문이죠. 저 또한 백엔드 환경을 직접 조작하거나 구축하는 일을 하지 않지만, 지속적으로 마이크로서비스아키텍트에 대해서 들어왔으니까요.

하지만 MSA를 우리 회사 시스템에 안착시켜보겠다는 생각을 하기 시작하면서는 상당히 많은 질문을 가지게 됩니다. 디테일에는 악마가 숨어 있다고 하는데, MSA를 구축하는 초보적 입장에서 그 악마가 정말 한둘이 아닐것같다는 짐작이 충분하거든요.

그 중에 가장 문제가 되어 보이는 건, 정말 MSA를 하면 우리 회사의 서비스가 더 나아지고 더 소비자들에게 필요한 서비스를 잘 할 수 있게 되는지 확신이 서지 않는다는 겁니다. 어떤 방식으로 컨테이너를 만들고 구축할지, 그 컨테이너들을 연결하는 네트웍 환경이나 토폴로지는 어떻게 그려야하는지, 이런 저런 판단을 나름 대로 해 낸다음 지속적인 통합 과정까지 해 내고 나면, ... 그많은 노력이 정말 필요할 거라는 확신이 솔직히 없습니다. 지금 이대로도 그리 많이 불편하지 않거든요.

게다가, 그렇게 복잡하게되고나면, 관리가 정말 제대로 이루어질 지도 또 큰 의문이 듭니다.

이 책은, 이 부분에 대해서 다루고 있습니다. 이벤트 기반으로 마이크로 서비스를 구축하여, 마이크로 서비스 아키텍트의 구조를 관리가능하고 유지보수하기 쉽게 만들어내는 방법을 이야기 하고 있습니다.

세세한 부분에서 무얼 어떻게 해야 하는가를 설명하기 보다, 짧은 지면을 통해 효율적으로 방향성을 알려주는 방식으로 이해를 도모하고 있습니다. 이 책을 읽고 나니, MSA를 하면 정말 괜찮아 질까? 라는 의문이 드는 그 근본적 질문에 대답을 들은 느낌을 받았습니다.

다시 말해서, 우리 회사의 서비스 구조를 마이크로서비스아키텍트로 서비스 구조를 재편하겠다는 결정을 내리고 무얼 어떻게 해야할지를 선정하고, 방향성을 잡아나갈때 그리고 실무적으로 디테일을 만들어갈때 방향성을 잡기에 좋은 책인것 같습니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

세상에 이런 것도 있구나 'ㅅ') 하는 생각이 들 때가 있다.데이터를 전통적인 데이터베이스에 저장하는 개발 방식과는 다르게, 공유 데이터를 모두 이벤트 스트림 세트에 발행하는, 단순한 작업부터 복잡한 레코드까지 거의 모든 것을 이벤트로 주고 받는 '이벤트 기반 통신 구조'를, 나는 이 도서를 통해 처음 알게 되었다.

 

도서의 저자와 역자의 소개 글을 읽으며 나의 기대감은 한층 높아졌다.

이름만 들어도 어렵게 느껴지는 '이벤트 기반 마이크로서비스 아키텍처'가 얼마나 어떻게 내 아둔한 머리 속에 안착할 수 있을 것인가.

 

도서 초반에는 주로 개발되는 동기식 마이크로서비스의 이슈들을 살살 꼬집어주면서, 일반적인 마이크로서비스 관리에 대한 짧은 소개를 거쳐, 이 도서의 핵심 주제인 '이벤트'에 대한 정의와 관련 개념들, 이벤트 기반 데이터를 다루기 위한 규약과 명시적 데이터 스키마, 상태 저장 테이블의 구체화, 이벤트 브로커의 개념과 역할에 대해 다룬다.

 

페이지를 넘길수록 이 도서는 단순한 개발서가 아닌, 비즈니스와 도메인 이슈, 서비스 설계에 대한 고민이 담겨 있는 도서로 생각되었다. Back-end 와 아키텍처, 패턴 이슈에 대해 다루지만, Front-end 영역과 직접적으로 관련된 이슈들은 마이크로프론트엔드 아키텍처 관련 소개 외에는 다루지 않고 있으니 참고하시길 'ㅅ')

 

도서를 읽을수록 어렵게 다가오는 도서이다. 개인적으로는 흡사 상당한 양의 기술 논문을 읽는듯한 기분이 들었다. 'ㅅ'); 아쉬운 부분은 모든 페이지에 걸쳐 실제 코드를 사용한 직접적인 설명보다는 이론/도표/개념에 대한 정리가 계속해서 이어지는 흐름으로, 도서의 내용이 마치 포카리스x트처럼 내 몸 안에 솨아아 흡수되는 느낌으로 이해하기에는 어려운 점이 분명히 존재한다. 특정 언어나 프레임워크를 사용하여 구현 예시가 기술되었다면 실용서로서의 가치가 더해졌을 것이다.

 

하지만, 그럼에도 불구하고 이 도서는 구입할 가치는 충분하다고 생각된다.

이 주제에 대해 출간된 국내 도서가 현재 희귀하며, 이 도서의 내용은 분명히 읽어볼만한 가치가 있다. 'ㅅ')

 

.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이벤트 기반 마이크로서비스 구축

 

 

지금은 그저 동작하는 시스템을 만드는 시대가 아니다.

한순간 잠깐 얼마정도의 사용량만을 해결하면 되는 시대가 아니다.

 

한 번 잘만들어놓은 시스템을

언제 어느때고, 어느 상황에서고 잘 사용할 수 있기를 바란다.

 

그러기 위해서는 100% 최대 최선의 구조를 고민해서

만족하는 시스템을 만들수도 있겠지만

처음부터 그런 시스템을 만들기는 쉽지 않다.

 

더군다나 이미 운영중인 Legacy System이 존재하고 있다면

그것을 확장시켜야 하고

확장시키는 과정에서 발생하는 복잡도를 감안해야한다면

더더욱 개발과정과 그에 따른 난이도는 높아질 수 밖에 없다.

 

이런 여러 고민거리들과

더욱 복잡해지고 사용량이 증가하는 시스템들에

확장성과 복잡도를 해결할 수 있는

미래지향적인 서비스가 바로

이벤트를 기반으로 하는 마이크로서비스이다.

 

 

이벤트기반마이크로서비스구축.jpg

 

 

이책은 이벤트를 기반으로 하는 마이크로서비스를 구축하기 위한

이벤트 스트리밍 개념에서부터

주요한 토픽들은 물론

개발, 테스트, 배포까지를 다루고 있어서

구축 전/후로 오래도록 참고할 수 있는 책인 듯 하다.

 

하지만, 따라하기 식의 책이 아니라서

뚝딱하고 이벤트 기반 마이크로서비스의 맛을 보고자 하는 사람에게는

계속해서 파고들어가야 하는 이론서의 무게가

많이 무겁게 느껴질 수도 있고

가도가도 계속되는 오르막같은 느낌일 수도 있어서

천천히 여유를 가지고 보기를 추천한다.

 

기존 시스템에 이벤트 기반 아키텍처를 통합하는 내용부터

이벤트 기반 처리의 기본을 지나고

여러 응용 마이크로서비스들에 대해 이해하다보면

본인이 그리고 싶은 이벤트 기반 마이크로서비스에 대해

어느 정도의 윤곽을 찾을 수 있지 않을까 생각해본다.

 

쉽지 않을 여정이지만, 잘 이겨내서

무궁무진한 가능성을 가진 이벤트 기반 아키텍처를 적용한

멋진 시스템을 만들 수 있기를 바라본다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이 책은 이벤트 기반의 시스템 구축 방식이 처음인 이들을 위한 실무적인 개론서라고 합니다.

 

한 마디로 '이벤트 기반 아키텍처 입문자'를 위한 책이라고 하죠.

 

이벤트 기반 마이크로서비스가 무엇이고 기존 서비스와의 차이와 이점이 무엇인지

이 책을 통해 알 수 있다고는 하나 솔직히 제게는 어려웠습니다.

문장이 쉽게 읽히지 않고 이해하기도 어려웠죠.

 

앞서 이 책은 '개론서'라고 했습니다.

시스템 구축을 예제와 함께 따라해보는 식의 전개가 아니죠.

이것이 또한 어려움에 한 몫 하고 있지 않나 하는 생각이 듭니다.

 

옮긴이와 같은 실무자는 익숙할지 모르지만 실무 경험이 없는 입문자는

이 책을 선택함에 있어 신중해야 할 것 같네요.

 

DSC_4145.jpg

 

[나는 리뷰어다] 시간 데이터 활용을 위한 새로운 시스템 아키텍처 가이드, 한빛미디어 이벤트 기반 마이크로 서비스 구축 


글 / 사진 : 서원준 (news@toktoknews.com



이 포스팅은 한빛미디어 [나는 리뷰어다] 에서 도서를 제공 받아 정성스럽게 작성된 후기입니다. 


시작하기 이전에 먼저 말해야 할 부분이 있다. 필자가 이 달 중순까지 여러 사정으로 마음이 싱숭생숭해서 일이 손에 잡히지 않았다. 그래서 5월 가정의 달 기획을 뭘로 해야 할 지 감이 오지 않아 고생했다. 지금 글을 올리는 이 순간도 사실 싱숭생숭하다. 거의 몇 페이지만 읽은 상태에서 도서 서평을 등록할 생각을 하니 머리가 띵해졌다고 해도 과언이 아닐 것이다. 이 점 송구스럽게 생각한다. 


최근 빅데이터와 데이터센터에 대한 관심이 높아지면서 이벤트 기반의 마이크로 서비스에 대해서도 관심이 고조되고 있다. 특히 코로나19 이후 인터넷 활동이 활발해지면서 데이터들이 점점 쌓여가는 느낌이 강해지고 있다. 이런 시점에서는 대규모로 조직화된 데이터를 잘 활용해야 하는데 여기에 대해서 자세한 사례를 곁들여 설명한 책이 있어 소개하고자 한다. “이벤트 기반 마이크로 서비스 구축” 이라는 책이 바로 그것이다. 


“이벤트 기반 마이크로 서비스 구축” 은 이벤트 기반 마이크로서비스 아키텍처를 소개하는 실무 개론서가 되겠다. 구조, 통신, 통합, 배포 등 기본 개념을 그림과 함께 구체적으로 설명한 책이다. 따라서 이벤트 기반 시스템 구축 방식을 마이크로서비스로 전환하고자 하는 입문 개발자도 쉽게 읽을 수 있다. 넷플릭스, 링크드인, 스포티파이, 우버 등 세계 주요 IT 기업들이 도입한 실제 데이터 사용법과 서비스 접근법을 이 책을 통해서 익힐 수 있다는 점이 특징이 되겠다.



이벤트 기반 마이크로 서비스 구축의 표지. 표지가 모양이 특이한 새인듯. 



이벤트 기반 마이크로 서비스 구축의 뒷표지. 



이벤트 기반 마이크로 서비스 구축 내용의 일부분. 


“이벤트 기반 마이크로 서비스 구축” 서평을 마치면서


최근 코로나19로 인해 인터넷에서 활동이 활발해짐에 따라 다양한 종류의 데이터들이 쌓이고 있다. 이렇게 되고 보니 대규모로 조직화된 데이터 역시 방대해 질 수밖에 없는 상황이다. “이벤트 기반 마이크로 구축”은 대규모 조직 데이터를 처리하기 위해 이벤트 기반 마이크로서비스로 전환하려는 실무 입문자를 위한 실용적인 가이드북이다. 물론 PC와 프로그래밍, 데이터센터 입문자가 보기에 이 책은 어려울 수 있지만 호기심을 가진 유저라면 한번쯤 읽어볼 만한 책이라고 생각한다. 

그리 친절한 책은 아니군

이벤트 기반이 뭔지, 마이크로서비스가 뭔지 1도 모르는 본인의 입장에서 그리 친절한 책은 아니었다. 책에 나오는 용어와 뉘앙스?를 이해하는데 구글링을 반복해야 했다. 외국 저자라 그런지 번역을 잘 했음에도 뭔가 말이 어렵다.

 

뭐, 그럼에도 읽는 이유라면 요즘 서비스 운영을 하는 입장에서 하나의 돌파구가 될 수 있지 않을까 싶어서다. 지푸라기라도 잡는 심정이랄까? 문제들은 쌓여가고 뒷처리는 해야하는데 도무지 감?이 안 오는 그런 형국이라... 현재 진행중인 아키텍처를 좀 뜯어 고쳐야하겠는데 내가 통찰력이 없다... 이런 바보탱구... 책을 통해 인사이트를 얻을 수 있지 않을까??

 

마이크로서비스는 뭐여?

소프트웨어 개발을 위한 마이크로서비스 스타일의 아키텍처(microservice-style architecture)를 말한다. 그럼 마이크로서비스 스타일은 뭐냐? 서비스를 마이크로하게 즉 잘게 쪼개어 만든 아키텍처를 뜻한다. 이렇게 서비스를 분리해놓으면 여러모로 좋은점이 많다~ 일단 많다~

 

그리고 이벤트 기반이란?

Event Driven 즉 이벤트를 기반으로 해서 통신하고 시스템을 통합하는 아키텍처를 말한다. 이거 맞나?? 어렵네.. 아직 이해가 덜 되었나봐... 뭔가를 이해하면 간단하게 설명해야 하는데 말이지. 일단 이런식으로 더디게 내용 따라가다 보니 너무 더디다 더뎌....

 

세번은 읽어야 할 듯

책이 내게는 좀 많이 어렵다. 주변 배경지식이 없어서 그런가보다. 어느정도 배경지식을 갖고 읽으면 얻는 지식이 남다를듯 하지만 지금의 내게는 좀 벅찬 책.... 그래도 한 세번정도 읽으면 좀 이해가 되면서 좀 얻는게 있지 않을까 싶기는 하다.

 

 

20210518_220621.jpg

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

책 소개


실시간 데이터 활용을 위한 새로운 시스템 아키텍처 가이드

 

이벤트 기반 마이크로서비스 아키텍처를 소개하는 실무 개론서다. 구조, 통신, 통합, 배포 등 기본 개념을 그림과 함께 구체적으로 설명한다. 따라서 이벤트 기반 시스템 구축 방식을 마이크로서비스로 전환하고자 하는 입문 개발자도 쉽게 읽을 수 있다. 넷플릭스, 링크드인, 스포티파이, 우버 등 세계 IT 기업들이 도입한 실제 데이터 사용법과 서비스 접근법을 익혀보자.

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B6410605208 

 

 

이벤트 기반 마이크로서비스 구축

이벤트 기반 마이크로서비스 아키텍처를 소개하는 실무 개론서다. 구조, 통신, 통합, 배포 등 기본 개념을 그림과 함께 구체적으로 설명한다. 이벤트 기반 시스템 구축 방식을 마이크로서비스로

www.hanbit.co.kr

 

 

리뷰


 DDD(Domain-Driven Design), EDD(Event-Driven Design) 등 많은 시스템 설계 방법들이 존재하고 있습니다. 저도 실무에서 EDD, DDD를 모두 적용한 시스템을 구축하여 사용하고 있어서 이번 책을 통해 다시 한번 정리하고차 책을 읽어보았습니다.

 

이벤트 기반 마이크로서비스란 무엇일까요?

 

책에서는 '이벤트 기반 마이크로서비스 아키텍쳐에서는 시스템이 이벤트를 생산/소비하는 식으로 서로 통신합니다. 이벤트를 소비해도 메시지를 전달한 시스템에서 바로 사라지는 건 아니고 같은 메시지를 필요로 하는 다른 컨슈머도 가져갈 수 있도록 보관됩니다.' 라고 정의하고 있습니다.

 

Kafka, Pulsar, RabbitMQ 등 많은 메시징 시스템들이 존재하는데요. 이런 시스템들은 메시지를 발행하는 Producer(프로듀서), 메시지를 소비하는 Consumer(컨슈머)로 나누어져있습니다. 컨슈머는 프로듀서의 존재를 알 수 없기 때문에 느슨한 결합을 가지게 됩니다. 이러한 특징은 메시징 시스템의 장점이라고 할 수 있습니다.

 

 이벤트 기반 마이크로서비스(event-driven microservice)는 특정한 경계 콘텍스트를 구현하기 위해 개발된 작은 애플리케이션입니다. 서비스는 상태 비저장 서비스(5장)와 상태저장 서비스(7장)가 있고, 동기식 요청 응답 API(13장)가 포함된 서비스도 있습니다.

 

 이벤트 브로커 시스템은 다음과 같은 필수적인 기능을 제공합니다.

확장성(scalability) : 이벤트 브로커의 인스턴스를 추가하면 클러스터의 생산/소비 및 데이터 스토리지 용량을 늘릴 수 있습니다.

보존성(durability) : 노드 간에 이벤트 데이터가 복제되므로 어느 한 브로커에 장애가 발생해도 데이터는 보존되며 서비스도 계속 할 수 있습니다.

고가용성(high availability) : 이벤트 브로커를 클러스터링하면 한 브로커에 장애가 발생해도 클라이언트는 다른 노드에 접속할 수 있어서 풀 가동 상태를 유지할 수 있습니다.

고성능(high-performance) : 여러 브로커 노드가 생산/소비 부하를 분담합ㄴ디ㅏ. 초당 수십만 회 정도의 쓰기/읽기를 처리하려면 각 브로커 노드 성능이 우수해야 합니다.

 

3장에서는 통신 및 데이터 규약에 대해서 다룹니다. 주고 받을 데이터의 포맷과 그 생성 로직을 정하는 것을 의미하며,  데이터를 생산하는 프로듀서와 이를 소비하는 컨슈머가 모두 준수하는 일종의 계약서인 셈입니다.

 

규약의 호환성에는 3가지가 존재합니다.

정방향 호환성(Forward Compatibility) : 새 스키마로 생성한 데이터를 마치 옛 스키마로 생성한 것처럼 읽을 수 있습니다.

역방향 호환성(Backend Compatibility) : 옛 스키마로 생성한 데이터를 새 스키마로 생성한 것처럼 읽을 수 있습니다.

양방향 호환성(Full Compatibility) : 정방향 호환성과 역방향 호환성의 조합이야 말로 가장 강력한 보증 수표입니다. 나중에 호환성 요건을 완화하기는 어렵지만 반대로 높이는 것은 훨씬 더 어렵기 때문에 양방향 호환성은 가능한 한 항상 적용하는 것이 좋습니다.

 

책의 내용을 읽다보면 이벤트 처리에 대한 자세한 내용들을 알 수 있습니다. 데이터를 저장하기 위한 파티셔닝 내용, 파티션 할당에 있어서의 전략(라운드 로빈, 정적 할당, 맞춤할당)등에 대한 내용들도 다루고 있습니다.

 

또한, 스트림에 대한 내용을 다루면서 아파치 Kafka Streams, 아파치 Samza 등에 대해서도 다루고 있고 추가적으로 컨슈머가 소비하지 못하는 이벤트 메시지를 어떻게 모니터링 할 것인지 등엘 대한 내용을 다루면서 Burrow에 대한 내용을 다루고 있습니다. 실제로 Kafka Consumer Lag를 모니터링 하기 위해 Burrow를 많이 사용하고 있습니다.

 

책 전반적에서 이벤트를 통한 마이크로서비스에 대한 내용을 너무나도 잘 다루고 있어서 놀랐습니다. 파티셔닝에 대한 내용들, 추가적으로 전략 등에 대한 내용들도 자세히 다루고 있습니다. EDD를 이해하기 너무나도 좋은 책이 아닐까 생각됩니다. 기회가 된다면 책을 통해 Event-Driven Microservices에 대해 경험해볼 수 있었으면 좋겠습니다.

 

Microservice architecture는 이미 널리 쓰이고 있다. 개인적으로 기록하는 노트를 보니 microservice에 대해 처음으로 기록한 게 2017년 12월이었다. 새로운 기술을 유용하다고 판단하면 짧은 시간에 많은 회사들이 뛰어들어 채택하고 성과를 내거나 실패한다. 성공이 더 많으면 더 확산되고 또 하나의 defacto standard가 된다. 동기식microservice는 이미 그렇게 되었다. 하지만 이전의 많은 표준들이 그렇듯 장점과 함께 단점을 가지고 있고, 그 단점을 해결하기 위해 event-driven microservice가 나왔다.

Microservice는 말 그대로 service를 micro하게 나눴다. 하나의 service는 그 자체로 완결되어야 한다. 각 service끼리는 최소한의 필요한 정보를 주고받으면 되고, data는 각 service의 DB에 저장된다. 각 service의 성격에 따라 RDB나 nosql이나 필요한 최적의 storage를 선택하면 된다. 하지만 실제 product에서는 이렇게 이상적으로 loosely coupled service를 만드는 건 매우 힘든 일이다. 여러 종류의 DB를 쓰면 DBA가 관리하기 어려울 수도 있고 최적의 환경을 만들기 불가능할 수도 있다. 트랜잭션이 어렵거나 불가능할 수 있고, join을 할 수 없으니 각 data를 통합해서 보기 위해 application에서 처리를 해야 하거나 서로 다른 DB에 중복 저장해야 할 수도 있다.

이 책은 event-driven microservice의 기초부터 기존 서비스와의 통합, 지원 도구나 테스트 배포까지 전반적인 모든 부분을 설명한다. 다만 책에서도 설명하듯이, 또 언제나 그렇듯 event-driven microservice 역시 silver bullet은 아니다. 데이터 트랜잭션을 DBMS가 아니라 application에서 처리하기 때문에 분산 환경에서 트랜잭션을 처리할 수 있고, 각 service는 성격에 맞는 최적의 DB를 선택할 수 있지만, 그만큼 application에서 신경써야 하는 일이 늘어난다. 동기식 microservice는 일관된 commit이나 rollback을 할 수 없지만, event-driven microservice는 해당 event를 발행해서 실패한 service부터 requeue나 dead letter queue 기능을 사용해 retry를 할 수 있다. 하지만 그만큼 실시간성은 떨어질 수밖에 없고 그래서 eventual이라는 용어를 사용하게 된다. Message queue를 사용해 loosely coupled service를 구현할 수 있고 서비스 흐름을 단순화시킬 수 있으나 message 전달의 신뢰성 문제가 발생할 수 있다. 즉 언제나 그렇듯 비즈니스 요구사항과 개인/조직의 역량에 따라 architecture 설계가 필요하다. Oreilly의 책이 언제나 그렇듯 읽어서 바로 적용할 수 있는 설명보다는 좀 더 기본에 가까운 설명을 하기에 바로 이해하기 어려울 수 있지만 이 책을 여러 번 읽으면 event-driven microservice를 이해하는데 큰 도움이 될 거 같다.

  • 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
이벤트 기반 마이크로서비스 구축
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
이벤트 기반 마이크로서비스 구축
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
이벤트 기반 마이크로서비스 구축
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실