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

한빛출판네트워크

마이크로서비스 아키텍처 구축 (전면 개정판)

대용량 시스템의 효율적인 분산 설계 기법 | MSA 핵심 용어집 수록, 설계/아키텍처 분야 아마존 베스트셀러

한빛미디어

집필서

판매중

5점 (25명)
좋아요 : 14

마이크로서비스 기초부터 구현까지 사람과 조직을 고려한 실전 마이크로서비스 아키텍처 구축 가이드

 

* 설계/아키텍처 분야 아마존 베스트셀러

* 마이크로서비스 아키텍처 핵심 용어집 수록

 

“마이크로서비스 아키텍처는 매력적인 특징이 많지만, 마이크로서비스 아키텍처로 향하는 길에서 주의하지 않는

다면 고통스러운 함정에 맞닥뜨리게 된다.”   -마틴 파울러 

 

전 세계 프로그래머에게 필수 책인 『리팩터링 2판』의 저자 마틴 파울러가 극찬한 『마이크로서비스 아키텍처 구축』이 전면 개정되어 돌아왔습니다. 

 

모두가 기다려온 『마이크로서비스 아키텍처 구축(전면 개정판)』은 마이크로서비스와 관련된 모든 측면에 대해 광범위한 개요를 제공하고자 했습니다. 1판에서 마이크로서비스 개념을 주로 다뤘다면, 이번에는 그 기본 토대 위에 소프트웨어 배포 프로세스 측면과 마이크로서비스 아키텍처를 채택함으로써 발생하는 영향까지 함께 다룹니다. 초판 출간 후 지난 5년 동안 마이크로서비스의 변화와 새롭게 등장한 기술도 함께 다뤄 1판보다 2배가 넘도록 지면을 풍부하게 채웠습니다. 이 책은 총 3부에 걸쳐 마이크로서비스 아키텍처 구축에 대해 설명합니다. 1부 기초, 2부 구현, 3부 사람으로 구성되어 있습니다. 1부에서는 마이크로서비스의 핵심 아이디어를 설명하고, 2부에서는 개념에서 구현 상세로 넘어가 마이크로서비스를 활용하는 데 도움이 되는 기법과 기술을 살펴봅니다. 마지막으로 3부에서는 1부, 2부에서 배운 내용을 토대로 사람과 조직의 입장에서 기술을 구현해내는 과정을 설명합니다.

 

상세이미지_마이크로서비스 아키텍처 전면 개정판_700.jpg

샘 뉴먼 저자

샘 뉴먼

샘 뉴먼은 독립 컨설턴트, 작가, 연사로 활동하고 있다. 20년 넘게 업계에 종사하면서 다양한 기술 스택과 영역에서 전 세계의 기업들과 함께 일해 왔다. 그는 조직이 소프트웨어를 더욱 빠르고 안전하게 운영하고 환경에 적용하도록 마이크로서비스의 복잡성을 다루는 것에 관심이 많다. 또한 

『마이크로서비스 도입, 이렇게 한다』(책만, 2021)의 저자이기도 하다.

 

정성권 역자

정성권

마이크로서비스 아키텍처를 기반으로 대규모 IoT 플랫폼을 구축하고 13억 계정 플랫폼과 통신사 미디어 플랫폼의 클라우드 네이티브 전환을 리드하며, 반려견 훈련 서비스(fordong.co.kr)와 같은 새로운 고객 주도형 서비스를 작게 시도하고 있다. 최근에는 엔터프라이즈 및 IT를 변환시키는 아키텍처의 역할과 함께 스프링을 활용한 분산 시스템 설계와 클라우드 네이티브 개발, DevOps 활동, SRE, 개발 조직 문화를 구축하는 데 주목해 왔다. 세상의 작은 문제 하나는 제대로 풀고 가보자는 개똥철학을 가지고 있다. 100세 인생을 재미있게 보낼 프로그래밍과 기술에 관심이 많다. 개인 시간에는 아이들과 산책, 게임, 검도, 스쿠버 다이빙을 하며 시간을 보낸다. 『마이크로서비스 아키텍처 구축』 (한빛미디어, 2018)과 『스프링 마이크로서비스 공작소』(길벗, 2022)을 번역했고, 『ABOUT .NET XML 웹 서비스』(영진닷컴, 2002)를 집필했다.

 

PART 1 기초

 

CHAPTER 1 마이크로서비스란?

_1.1 마이크로서비스 살펴보기

_1.2 마이크로서비스의 핵심 개념 

_1.3 모놀리스

_1.4 활성화 기술

_1.5 마이크로서비스의 장점

_1.6 마이크로서비스의 고충

_1.7 마이크로서비스를 사용해야 하는가? 

요약

 

CHAPTER 2 마이크로서비스 모델링 방법

_2.1 뮤직코프 소개 

_2.2 올바른 마이크로서비스 경계를 만드는 것은 무엇인가? 

_2.3 결합 유형 

_2.4 딱 도메인 주도 설계만큼 

_2.5 마이크로서비스를 위한 도메인 주도 설계 사례

_2.6 비즈니스 도메인 경계에 대한 대안 

_2.7 혼합 모델과 예외

요약

 

CHAPTER 3 모놀리스 분해

_3.1 목표를 가져라

_3.2 점진적 마이그레이션 

_3.3 모놀리스가 적인 경우는 드물다

_3.4 무엇을 먼저 나눌까? 

_3.5 계층별 분해

_3.6 유용한 분해 패턴 

_3.7 데이터 분해에 대한 우려 

요약

 

CHAPTER 4 마이크로서비스 통신 방식

_4.1 프로세스 내부에서 프로세스 사이로 

_4.2 프로세스 간 통신을 위한 기술: 다양한 선택 

_4.3 마이크로서비스 통신 방식

_4.4 패턴: 동기식 블로킹 

_4.5 패턴: 비동기식 논블로킹

_4.6 패턴: 공통 데이터를 통한 통신

_4.7 패턴: 요청 및 응답 통신 

_4.8 패턴: 이벤트 기반 통신

_4.9 조심해서 진행하라 

요약

 

PART 2 구현

 

CHAPTER 5 마이크로서비스 통신 구현

_5.1 이상적인 기술을 찾아서

_5.2 기술 선택 

_5.3 직렬화 포맷

_5.4 스키마

_5.5 마이크로서비스 간의 변경 처리

_5.6 중단 변경 피하기

_5.7 중단 변경 관리하기 

_5.8 마이크로서비스 세계에서 DRY와 코드 재사용의 위험

_5.9 서비스 디스커버리 

_5.10 서비스 메시와 API 게이트웨이 

_5.11 서비스 문서화

요약

 

CHAPTER 6 워크플로

_6.1 데이터베이스 트랜잭션

_6.2 분산 트랜잭션 - 2단계 커밋

_6.3 분산 트랜잭션 - 그냥 안 된다고 하라

_6.4 사가 패턴

요약

 

CHAPTER 7 빌드

_7.1 지속적 통합에 대한 간략한 소개 

_7.2 빌드 파이프라인과 지속적 제공

_7.3 소스 코드와 빌드를 마이크로서비스에 매핑하기

요약

 

CHAPTER 8 배포

_8.1 논리적에서 물리적으로

_8.2 마이크로서비스 배포의 원칙

_8.3 배포 방법 

_8.4 어떤 배포가 적합할까?

_8.5 쿠버네티스와 컨테이너 오케스트레이션 

_8.6 점진적 제공

요약

 

CHAPTER 9 테스트

_9.1 테스트 유형

_9.2 테스트 범위

_9.3 서비스 테스트의 구현

_9.4 까다로운 엔드투엔드 테스트의 구현 

_9.5 엔드투엔드 테스트를 피해야 할까? 

_9.6 개발자 경험

_9.7 운영 환경 전 테스트에서 운영 환경 내 테스트로

_9.8 교차 기능 테스트

요약 

 

CHAPTER 10 모니터링에서 관찰가능성으로

_10.1 분열, 공황 그리고 혼란 

_10.2 단일 마이크로서비스, 단일 서버 

_10.3 단일 마이크로서비스, 다수 서버 

_10.4 다수 마이크로서비스, 다수 서버

_10.5 관찰가능성 대 모니터링

_10.6 관찰가능성의 구성 요소

_10.7 표준화 

_10.8 도구 선택

_10.9 기계화된 전문가 

_10.10 시작하기

요약 

 

CHAPTER 11 보안

_11.1 핵심 원칙

_11.2 사이버 보안의 다섯 가지 기능

_11.3 애플리케이션 보안의 기초

_11.4 암묵적 신뢰 대 제로 트러스트 

_11.5 데이터 보안

_11.6 인증과 권한 부여

 

CHAPTER 12 회복 탄력성

_12.1 회복 탄력성이란?

_12.2 장애는 어디에서나 발생한다

_12.3 얼마나 많아야 너무 많은 건가?

_12.4 기능 저하

_12.5 안정성 패턴

_12.6 위험 분산

_12.7 CAP 정리 

_12.8 카오스 엔지니어링

_12.9 비난 

요약 

 

CHAPTER 13 확장

_13.1 확장의 네 가지 축

_13.2 결합 모델

_13.3 작게 시작하라 

_13.4 캐싱 

_13.5 자동 확장

_13.6 다시 시작하기

요약 

 

PART 3 사람


CHAPTER 14 사용자 인터페이스

_14.1 디지털을 향해 

_14.2 소유권 모델

_14.3 스트림 정렬 팀을 향해 

_14.4 패턴: 모놀리식 프론트엔드 

_14.5 패턴: 마이크로 프론트엔드

_14.6 패턴: 페이지 기반 분해

_14.7 패턴: 위젯 기반 분해

_14.8 제약 

_14.9 패턴: 중앙 집계 게이트웨이

_14.10 패턴: 프론트엔드를 위한 백엔드(BFF)

_14.11 그래프QL 

_14.12 하이브리드 방식

요약 

 

CHAPTER 15 조직 구조

_15.1 느슨하게 결합된 조직 

_15.2 콘웨이의 법칙

_15.3 팀 규모 

_15.4 콘웨이의 법칙 이해

_15.5 소규모 팀, 대규모 조직 

_15.6 자율성에 관해 

_15.7 강력한 소유권 대 집단 소유권 

_15.8 활성화 팀

_15.9 공유 마이크로서비스

_15.10 내부 오픈 소스

_15.11 플러그 가능한 모듈식 마이크로서비스 

_15.12 고아 서비스 

_15.13 사례 연구: realestate.com.au

_15.14 지리적 분포

_15.15 콘웨이의 역법칙

_15.16 사람들

요약 

 

CHAPTER 16 진화하는 아키텍트

_16.1 이름에 내포된 것은?

_16.2 소프트웨어 아키텍트란? 

_16.3 변화를 가능하게 

_16.4 아키텍처에 대한 진화적 비전 

_16.5 시스템 경계 정의

_16.6 사회적 구조물 

_16.7 거주 가능성

_16.8 원칙적 접근법 

_16.9 진화적 아키텍처 가이드 

_16.10 스트림 정렬 조직의 아키텍처 

_16.11 팀 구축

_16.12 필수 기준 

_16.13 거버넌스와 포장된 길 

_16.14 기술 부채 

_16.15 예외 처리 

요약 

 

종합정리: 조언부터 향후 전망까지 

핵심 용어집

“마이크로서비스 아키텍처는 어떻게 만드는 것인가?”는 현업에서 자주 듣게 되는 질문 중 하나입니다. 이에 대한 정답을 찾기 위해 오랫동안 다양한 노력을 해왔지만 명쾌한 답변을 찾기 어렵습니다. 이는 시장이 계속 변화하면서 설계, 개발, 배포, 테스팅 등 다양한 분야를 넘나들어야 하기 때문입니다. 

2017년 초판 출간 후 전면 개정된 『마이크로서비스 아키텍처 구축(전면 개정판)』은 이러한 부분을 충족시킬 만큼 광범위한 기술 주제를 한 권에 담아 설명합니다. 마이크로서비스 아키텍처 구축에 관한 현실적인 문제를 더 구체적이고 깊숙하게 파고들면서, 마이크로서비스 아키텍처 개념을 더 쉽게 이해하고 적용하기 위한 심도 있는 가이드를 제시합니다.

2023년 06월에 출간된 따끈따끈한 한빛미디어 출판사의 <마이크로서비스 아키텍처 구축>에 대한 리뷰를 진행하겠습니다. 이 책은 2017년 3월에 출간된 <마이크로서비스 아키텍처 구축의 개정판>입니다. 2017년 버전에서는 마이크로서비스의 개념을 다뤘다면, 개정판에서는 기존 개념에 더하여 소프트웨어 배포 프로세스와 마이크로서비스의 도입 영향에 대해 다루고 있습니다.

 

원서 개정판은 2021년에 9월에 출간되었고, 아마존 평점으로 4.8점의 높은 점수를 받고 있습니다. 이렇게 좋은 책을 한글로 읽을 수 있다니 감사할 따름입니다. 

 

<마이크로서비스 아키텍처 구축>은 700여 페이지로 구성되어 있어 휴대하며 읽기는 어려울 것 같습니다. 분철하거나 전자책으로도 출간되어 있으므로 전자책 뷰어가 있으면 전자책으로 만나보는 것도 좋을 것 같습니다. 참고로 필자도 전자책으로 봤습니다.

 


한빛미디어 평가단에 참가하여 작성한 글이며, 한빛미디어에서 제공해준 책을 읽고 작성했음을 밝힙니다.


 

 

이 책의 매력 포인트


이 책은 3부 16장으로 구성되어 있습니다. 2017년 버전에 비해 분량이 약 두 배 정도 늘었는데, 각 챕터의 구성이 더 세분되어 정리가 되어 있는 느낌을 받았습니다. 

 

개인적으로 2017년 버전을 매우 만족스럽게 읽었었는데, 새로운 개정판은 더 만족스럽습니다. 저자가 책에서 다루고자 하는 내용들이 훨씬 더 명확하게 담긴 것 같습니다. 아마존 평점 4.8을 받은 이유를 알 것 같습니다. 

 

<마이크로서비스 아키텍처 구축>을 읽으면서, 기존에 쌓았던 다양한 지식을 효과적으로 정리할 수 있었고, 새로운 내용들을 찾고 고민하는 시간을 가질 수 있었습니다. 기존에 변경했던 시스템에 새롭게 배운 내용들을 반영해 보면서 관련 지식을 체계화해야 할 것 같습니다. 

 

이 책은 마이크로서비스를 처음 접하는 사람들이 읽기에는 적합하지 않을 수 있습니다. 생소한 용어부터 관련 도메인에 필요한 기본 지식이 꽤 많이 필요하기 때문입니다. 하지만 이 책을 여러 번 읽고 이해할 수 있으면 이 책은 독자에게 매력적인 책으로 남아 있을 것 같습니다. 

 

<마이크로서비스 아키텍처 구축>은 필자처럼 아키텍트가 꿈인 사람들에게 좋은 지침서가 될 것입니다. 보유 기술이 늘어날수록 이 책을 통해 얻는 가치가 더 늘어날 것이고, 새로운 통찰력을 얻을 것을 의심치 않습니다. 매우 좋은 책과 함께 한 즐거운 시간이었던 것 같습니다.

 

 

마치면서


이 책은 마이크로서비스 아키텍처 설계를 위한 책이며, 소위 이야기하는 '따라 하기' 식의 책이 아닙니다. 이 책은 여러 번 읽고, 관련 분야를 경험하고, 여러 번 복기하며 자신의 것으로 만들어 나가는 책입니다. 그래서인지 독자 등급도 중고급으로 되어 있네요. 

 

<마이크로서비스 아키텍처 구축>은 필자가 기존 모놀리식 시스템에서 마이크로서비스로 변경하며 고민했던 내용들을 잘 정리하고 있습니다. 그리고 마이크로서비스와 관련하여 기본적으로 학습해야 할 내용이 주제별로 정리되어 있습니다. <마이크로서비스 아키텍처 구축>은 저자가 마이크로서비스 아키텍처를 구축하며 얻은 지혜를 잘 녹여내고, 역자가 그것을 아주 매끄럽게 전달하는 매력적인 책이라고 생각합니다.

요즘 어떤 서비스의 아키텍처를 설계한다고 하면

당연히 "마이크로서비스 아키텍처(MSA)"를 떠올리게 될 정도로 MSA는 이제 거의 표준처럼 되어 버렸다.


그렇기에 당연히 우리는 "마이크로서비스 아키텍처(MSA)"를 공부해야 하고,

아마존에서 설계/아키텍처 부분 베스트셀러인 이 책을 살펴보는 것은 자연스러운 수순일 것이다 ^^


표지

 

2017년도에 초판으로 출간된 책인데,

빠른 변화와 신기술의 등장에 발맞춰서 얼마전에 전면 개정판으로 새로운 책으로 거듭났다!


전면 개정판

 

이 책의 저자는 특정 회사에 속하지 않고 프리랜서로 활동하시는 것 같고,

옮긴이는 포동 서비스를 언급하신 것으로 봐서 LG유플러스에서 근무하시는 것이 아닌가 싶다 ^^


지은이/옮긴이


책 제목에 "아키텍처"가 들어가있다보니

이 책의 대상독자로 제일 먼저 떠오르는 것이 "어?! 이 책은 Architect를 위한 책인가?"였다.


하지만, 뒤에 설명할 목차 등을 보면 알겠지만

이 책은 개발자부터 PL 및 C-level에게도 도움이 될 수 있는

"마이크로서비스 아키텍처(MSA)"에 대한 모든 것을 담고 있는 책이다.


대상 독자

 

이 책은 크게 "기초/구현/사람"이라는 3개의 부로 나뉘어져 있다.


응?


사람?


1부 기초

 

개인적으로는 2부 구현 부분에 가장 관심이 많이 간다.


2부 구현

 

정말 의외인 "3부 사람" ...


뭐 세상 모든 일은 다 사람하기 나름이니.... 가장 중요한 것이 사람인 것 맞지만.... 호오....!


3부 사람

 

회사를 다니고 있다면

처음부터 아무 것도 없는 상태에서 새롭게 설계하는 일 보다는

이미 모놀리스 아키텍처로 구성되어 있는 기존의 서비스를

마이크로 서비스 아키텍처로 마이그레이션하는 일이 더 많을 것이다.


그래서 "Chapter3. 모놀리스 분해" 부분에 관심이 많이 갔다.


CH3 - 모놀리스 분해

 

아마존에서 괜히 베스트셀러가 된 것은 아니기에

책 구성과 내용은 정말 훌륭한 것 같다.


다만, 개인적인 취향으로 아쉬운 것은...... 풀컬러가 아니라는 점!?

ㅋㅋ 사실 책 주제 자체가 굳이 풀컬러일 필요가 전혀 없기에 이마저도 단점이 아닌 것 같다 ^^


CH1

 

책 내용이 훌륭하다는 예시를 들어보자면,

모놀리스의 유형 중 하나인 "모듈식 모놀리스"에 대한 설명을 한 번 살펴보자.


모듈식 모놀리스

 

당연하게 보일 수도 있겠지만

개인적으로는 저렇게 모듈로 나눠서 구성하면

그것을 가지고 마치 마이크로 서비스인 것처럼 착각하는 경우가 종종 있다.

그런 부분에 대한 설명이 차분하게 잘 서술되어 있는 것을 보면 이 책의 내공이 정말 탄탄한 것 같다.


그리고 또, 개인적으로 애정하는 쿠버네티스...


K8s


마이크로서비스 아키텍처(MSA)하면 빼놓을 수 없는 짝꿍 쿠버네티스(Kubernetes) !!!



전반적으로 이 책은 정말 "마이크로서비스 아키텍처(MSA)"의 교과서라고 불리워도 무방할만큼

탄탄한 내공이 가득차 있는 정말 좋은 책이다.


쿠버네티스(Kubernetes)를 공부하는 분들도 필수 도서로 같이 공부하면 정말 많은 도움이 될 것이다!!!




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


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

 

 

요즘 설계와 리팩토링에 부쩍 관심이 생겼다.

업무를 하면서 기존 시스템과 비슷하게 짜면

admin은 2일

서비스는 4일이면 만드는데

품질은 기존에 존재하는 로직으로 짜느냐고 공장 뽑듯 작성할 수 있다.

그러나 이를 리팩토링하려면 머리가 아파온다.

폴더를 어디에 만들지 부터가 고민된다.

 

최근 회사에서 한 업무가

마케팅 이메일을 내재화 하는 것이였다.

 

이메일 템플릿, 이메일 스케쥴, 이메일 스케줄 execution, log_email_message

이렇게 크게 테이블은 4개이다.

 

3일만에 빨리 만들 수 있었던 이유는, 기존에 push 알림을 하는 기능이 만들어져 있어서 굉장히 빠르게 만들었다.

그러나 copy & paste라 기능은 굴러가지만 뭔가 중복되는 코드도 많고

기존 코드가 확장성을 염두하지 않아서 멋지지 못했다.

 

그래서 리팩토링을 하고 싶었으나

1. 이미 작동 중이 코드

2. 파일 구조가 여기저기

3. 여기까지 건들여도 되나(?)라는 고민

4. 인터페이스랑 추상 클래스를 써본 적은 있지만, 자주 쓰지 않아서 어떻게 뜯어 고칠지 모르겠는

 

=> 리팩토링은 인터페이스와 추상클래스를 가지고 회사분이 큰 골자를 바꿔주셔서 

이렇게 하면 되는구나를 깨달았다.(구조 짜주시는데 일주일 걸렸다ㅠㅠ 안 친해서 언제 끝나냐고 말하기 어려웠음)

 

1. 인터페이스로 꼭 선언해야할 함수를 선언한다

2. 공통적으로 쓴다, 오버라이딩하지 않는 함수는 추상클래스에 함수로 선언해 놓는다.

3. 폴더 구조는 message > builders, service, controllers, exceptions < senders, task

 

  

과연 마이크로 설계는 어떻게 하는 것일까?

마이크로서비스가 적합 한 곳

조직에서 더 많은 개발자가 서로 방해하지 않고 동일 시스템에서 작업하기 위해서다.

 

현재 내가 다니는 곳은 우리팀만 7명

전체 개발자는 100명 가까이 되지 않을까 싶다

 

24시간 연중 무휴 작동 -> 배포하기 어려움

마이크로 서비스는 독립적 릴리스라서 이 분야에서 힘을 발휘

 

마이크로 서비스 == 유연성

 

 

 

전체적으로 읽어보니 지금 회사 서비스를 토대로 마이크로 서비스의 경험이 있다면

회사 코드와 구조가 마이크로 서비스로 설계 되어있는거 같은데? 라는 생각이 들게한다.

(테스트, 배포까지도 포함 되기 때문)

개념적인 설명은 많은데, 예시 코드가 거의 없고, 한가지 주제로 쭈욱 큰 그림을 그려줬으면 하는 아쉬움이 든다. 

마이크로서비스 아키텍처 구축 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 마이크로서비스가 은탄환은 아닐 수 있지만 비즈니스의 변화와 빠은 대응이 더욱 필요한 지금은 기업과 개인은 준비해야만 할 주제이기는 하다. 관련한 다양한 도서들이 나오고 있지만 2017년에 국내 번역되었던 ‘마이크로서비스 아키텍처 구축’이 DT와 새로운 환경에 적응 할 수 있는 신규내용을 반영해 개정판이 출판되었다. 마이크로서비스를 이해하기에는 기본이 되는 내용으로 기초가 되는 기본 내용과 상세한 구현으로 최대한 활용하는 데 도움되는 기법과 기술을 다루고 있다. 그리고 마이크로서비스의 아이디어와 기술을 뒷받침해 줄 수 있는 조직과 사람을 어떻게 구성하고 운용하는게 좋을지도 설명하고 있다.

처음 접했을 때 신선한 충격을 주었던 마이크로서비스 아키텍처를 학습할 수 있는 책으로 도입, 설계, 구현 등에 있어 반드시 참조해야 할 필독서라 평하고 싶다.

마이크로서비스란 무엇인가?

늘 그렇듯 무언가의 정의를 내리는 것은 쉽지 않은 일이다. 추상적으로 기술하면 진실에 가까워지지만 내용이 선뜻 와 닿지를 않고 구체적으로 표현하면 이해하기는 쉽지만 정의에 가까워지기 힘들고 내용이 길어진다.

그럼에도 마이크로서비스를 처음 접하는 독자를 위한 리뷰에서는 일부분이라도 구체적으로 기술하여 독자의 이해를 돕지 않는 것이 우선이라 생각되기에 나름의 정의를 내려보려 한다.

그러한 관점에서 개인적으로는 RestAPI의 결합체 혹은 DB를 공유하지 않는 서비스들의 집합 정도로 정의를 내리고 싶다. 개발자 입장에서 그나마 가장 가시적인 정의라 생각하기 때문이다.DB

책에 등장한 예시와 같이 배송, 주문관리, 재고 등 각각 하나의 마이크로서비스를 결합하면 전자 상거래 시스템을 구축할 수 있는 개념이자 이에 필요한 아키텍처다.정의

한편 이 책에 기술된 마이크로서비스의 정의는 다음과 같다.

독립적 변경, 배포, 릴리스를 하기 위한 분산 시스템에 대한 접근 방식 중 하나.

좋은 책들이 그렇듯 이 책 또한 마이크로서비스의 개념에 대한 확실한 이해를 돕기위해 여러 장치를 사용한다. 예시, 비교, 특징, 장점, 단점 등 여러 각도에서 마이크로서비스를 살펴봄으로써 이해를 돕게 해준다.

예시의 경우 앞서 이미 언급하였고 비교의 경우 SOA나 모놀리식 아키텍처와 비교하며 개념 정의의 좌표를 조금 더 구체화한다. SOA의 태생 목적에 더욱 충실하기 위해 등장한 개념이란 것과 데이터베이스를 공유하며 프로세스 경계선으로 모듈이 나뉘는 모놀리식과의 차이점을 통해 마이크로서비스의 개념을 구체화 할 수 있게 해준다.

물론 배포를 독립적으로 수행할 수 있다거나, 기술보다는 비즈니스 모델링을 우선한다는 점, DB를 공유하지 않는 대신 자기 상태를 공유한다는 점, 하나의 서비스가 자신의 두뇌 용량을 초과하지 않을 정도로 작개 쪼갠다는 점 등의 특징도 설명하고 있어 다양한 각도에서 마이크로서비스의 본질을 생각하게 해준다.

이를 돕는 기술로 라이트스텝이나 허니코움의 제품 들이 제공하는 로그 집계 및 분산 추적 기술, 쿠버네티스, 스트리밍, 서버리스 등의 기술이 생태계를 풍부하게 한다고 소개하고 있어 보다 구체적인 감을 잡는 데 도움을 준다.

그럼에도 엄청난 변화를 수반하는 스타트업 시스템이나 보안에 민감하다거나 전통적인 RDBMS가 자랑하는 ACID를 핵심으로 하는 시스템에는 적합하지 않을 수 있다는 한계를 분명히 명시한다.

이렇듯 풍부하고 다양한 관점을 수반한 정의 및 기술은 마이크로서비스의 본질을 이해하는 데 충분하고도 넘친다는 생각이 들었고 그동안 애매하게 알고 있던 마이크로서비스의 개념 좌표를 머릿속에서 좀 더 명확하게 배치할 수 있게 많은 도움을 주었다.

한편 생각해보면 이는 단지 서비스 아케텍처에 국한되는 유행은 아닌 것 같다. 일상에서도 독립적인 영화나 드라마는 넷플릭스, Wavv와 같은 스트리밍 서비스에서 결합하고 있고 다양한 1인 기업들이 뭉쳐 거대한 서비스를 지탱하게 해주는 등의 사회적인 현상으로도 클라우드나 쿠버네티스와 같은 기술적인 영역에서도 마이크로서비스와 유사한 장점을 극대화하고자 하는 움직임은 거의 모든 영역을 장악해 나가는 듯 하다.

어쨌든 이 책은 개인적으로 처음 개념을 접했을 때 신선한 충격을 주었던 마이크로서비스가 무엇인지 이해하고 제대로 활용할 수 있는 안목을 갖추는 데 큰 도움을 준 명작이다.

이미 몇 년 전에 발간된 책이지만 이번 개정판은 그동안 이 개념이 발전하는 과도기에 있던 애매모호한 위치를 명확히 바로잡는 데 많은 도움을 준다. 가히 그동안 마이크로서비스 개념을 널리 알리고 사람을 모아 발전할 수 있게한 견인차 역할을 한 책 답게 명작이라는 생각이 들었다. 이 개념을 이해하는데 이 책을 통하지 않는다면 다른 방법으로는 너무 많은 시간과 노력을 낭비하게 될 것 같기 때문이다.

워낙 훌륭한 책임에도 그 중에서도 돋보이는 특징 몇가지를 소개해보고자 한다.

첫째, 보다 전통적이고 친숙한 모놀리식 시스템을 분해하는 과정으로 구체적으로 마이크로서비스를 어떻게 구축하고 설계해야 할지 쉽게 감을 잡을 수 있었다. 특히 동기 대 비동기 방식 구현을 어떻게 설계하는지 검토하는 과정은 본질 개념을 이해하는 데 많은 도움이 되었다.

둘쨰, DB 공유에 대한 독립성을 유지하면서 ACID를 어떻게 보장할 것인지에 대해 평소 늘 궁금했던 주제였고 데이터에 관심이 많은 사람으로써 호기심이 많은 주제였는데 명확하게 이해할 수 있었다. 특히 사가 패턴을 말로만 듣다가 구체적인 설계 방법과 원리가 소개되어 있어 인상적이었다.DB공유

셋째, 최근 트렌디한 기술이나 개념, 아키텍처를 학습하는 데 도움이 된다. 마이크로서비스 아키텍처만 다루는 것이 아닌 생태계의 관련 기술을 대부분 망라하고 있어 마이크로서비스에 관심없는 독자도 유익하게 활용할 수 있을 만한 다양한 기술들이 소개된다. 멀티태넌시와 페데레이션이나 심지어는 웹어셈블리와 같은 개념도 상세하게 소개해주고 있어 유익했다.기술스택

넷쨰, 콘웨이 법칙 등 유명 인사들의 발언이나 주장과 관련된 레퍼런스들이 다양하게 소개되고 있다. 이는 저자가 관련 분야에 정통함은 물론 긴 세월 동안 객관적인 시각을 견지하기 위해 노력해왔음을 보여주는 반증이라 생각한다.

그 외에도 보안이나 사용자 인터페이스 등 마이크로서비스를 소개하는 정도에 그치지 않고 추후 확장해서 고민하고 그 과정을 통해 시행착오와 비용을 크게 아껴줄 수 있도록 노력한 구성이 감동적이었다.

이 책은 마이크로서비스 구축을 검토한다거나 개념을 학습하는 데 있어 바이블이라 평하고 싶다. 마이크로서비스를 학습하면서 다양한 생태계의 기술 현주소를 파악하고 스스로의 지식을 업그레이드 하는 데 있어 큰 도움이 되는 양서이기에 반드시 일독을 권하고 싶다.


마이크로서비스 아키텍처 구축 (전면 개정판)

[책 리뷰] 마이크로서비스 아키텍처 구축 (전면 개정판)

이 책은 기존에 있던 ‘마이크로 서비스 아키텍처 구축’의 개정판이다. 해당 책은 본인도 소장하고 있는데, 내용 자체가 전의 책보다 풍부해진 감이 있다.

대신 아무래도 책이 다루는 주제 자체가 MSA를 다루고 있어, 어려운건 전의 책이나 지금 책이나 동일하다.

책이 두껍고 내용이 어려운만큼 완독은 하지 못했다. (차후에 차근차근 읽어볼 예정)



일단 이 책은 주제 자체가 난이도가 있기 때문에 어느정도 개발 경험이 있는 개발자가 읽는것이 좋다. MSA를 다뤄본 사람이라면 이해가 훨씬 편할듯?

책은 16장까지 구성이 되어있고 총 3부의 기초, 구현, 사람으로 나누어져 있다.

초반에는 모놀리식 서비스에 대해 설명을 진행하고 MSA에 대한 설명으로 넘어간다. 역시나 MSA를 설명하며 DDD도 같이 짚고 넘어간다.

이후에 마이크로 서비스에서 각각의 서비스의 통신방식, 데이터베이스 처리하는 분산 트랜잭션 방식, CI/CD 까지 친절히 설명해준다.

뒤쪽은 제대로 읽지 못했지만 전체적으로 운영, 보안적인 부분 외에도 차후 어떻게 시스템을 확장할 수 있는지, 어떻게 이 MSA를 개발자가 제대로 관리할 수 있는지 알려주는 것으로 보인다.

조금 아쉬웠던 점은 코드가 별로 없었던 점인데, 어떻게 보면 이론적인 부분에 조금 더 집중하고 싶다면 괜찮을 것 같다.



별점 : ⭐️⭐️⭐️⭐️

한줄평 : MSA에 대한 이론적인 지식을 쌓고 싶은 개발자에게 추천

이런분께 추천 :

  1. MSA 개발에 투입되어 이론적인 부분을 좀 더 쌓고 싶으신분.


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


 기존의 모놀리스 아키텍처 환경의 단점을 극복하고자 여러 아키텍처 방법론이 세상에 등장하였고, 지금은 마이크로서비스 아키텍처(이하 MSA)가 위용을 과시하고 있는 시대를 목도하고 있다. 클라우드 사용의 보편화와 함께 컨테이너 시대가 본격적으로 개막되었고, 클라우드 네이티브를 기반으로 하는 앱 현대화(Application Modernazation)가 대세가 되어감에 따라 MSA는 명실상부하게 하나의 주류로 자리잡았다. 

 

그런데 MSA를 구축하는 과정은 지난하기만 하다. MSA에 대한 도입 타당성을 온전히 따지는 것부터 결코 쉽지 않은 문제이며, 그 이후에 어떤 식으로 어떤 과정을 거쳐 MSA를 구축해 나가야하는지에 대한 또 다른 문제를 마주하게 된다. MSA의 도입과 구축은 험난한 여정과 모험이며, 그렇기 때문에 첫삽을 잘못 뜨는 순간 지옥의 문이 열리게 될지모 도른다. 

 

하지만 제대로 된 전문가가 하나부터 열까지 세세하게 MSA 구축의 모든 과정을 가이드해 준다면 어떨까? MSA의 개념부터 등장 배경 및 MSA를 도입해야 하는 이유와 MSA를 구축해 나가는 일련의 여정을 친절하게 코칭해 준다면 어떨까? 바로 오늘 소개하는 책이 바로 여러분의 MSA 여정에 든든한 길잡이가 되어줄 서적이다.  

 

KakaoTalk_20230723_235401506.jpg

우선 이 책은 6년 만에 전면 개정되어 새롭게 출간된 서적이다. 국내에 MSA에 대한 논의가 활발하게 진행되기 이전에 초판이 발행되었었고, 당시 MSA와 관련된 서적이 드물던 시대에 새로운 기술에 대한 목마름을 해충실히 해갈해 주는 매개체였으리라. 이뿐만 아니라 개발자 세계에서 저명한 마틴 파울러가 극찬하며 품질을보장한 셈이니 MSA에 관심이 있는 독자라면 눈여겨보지 않을 수가 없다. 

 

각설하고 본 서적은 3개의 파트와 16개의 챕터로 구성되어 있고, 보너스로 MSA와 관련된 핵심 용어집이 수록되어 있다. 첫 번째 파트에서는 MSA에 대한 기초를 학습할 수 있는 환경을 제공한다. MSA의 개념부터 모델링 방법, 모놀리스 아키텍처를 분해하는 전략 그리고 마이크로서비스가 통신하는 방식에 대한 세부적인 논의가 진행되며 MSA에 대한 기초 개념을 학습하고 이해하게 된다. 

 

두 번재 파트에서는 MSA의 구현을 다루는데, 마이크로서비스의 통신 구현에 대한 세세한 가이드가 제공되고, 분산 데이터베이스 시스템에서 사용되는 2 Phase Commit 등 분산 트랜잭션의 개념을 접하게 된다. 이윽고 빌드와 배포, 테스트에 이르기까지 애플리케이션 배포 과정을 세밀하게 안내하고 옵저버빌리티로 불리는 관찰가능성에 대한 깊은 논의가 이뤄진다. 또한 흔히 비기능 요구 사항에 포함되는 속성인 보안과, 내결함성(회복 탄력성), 확장성 등에 대한 통찰을 통해 안전하고 강건한 시스템을 어떻게 설계하고 구축할 수 있는지 배우게 된다. 

 

마지막 파트가 참 인상 깊었는데, 바로 사람을 다루는 주제로 내용이 구성되어 있기 때문이다. MSA를 구축하는 것도 사람이고, MSA를 사용하는 것도 사람이며, MSA를 통해 서비스를 제공받는 최종 대상도 바로 사람이기 때문에 사람을 MSA 논의의 장에 올려 두는 저자의 식견에 감명받지 않을 수 없었다. 사용자 인터페이스를 다루는 챕터에서 UI와 관련된 다양한 패턴에 대해 학습하게 되는데, 각각의 패턴이 제공하는 기능과 특징을 제대로 이해할 수 있었다. 조직 구조를 언급하는 챕터에서는 사람과 사람이 모인 집단에서 어떻게 하면 좀 더 효율적으로 공동의 목적과 목표를 달성할 수 있는지에 대해 다시 한 번 곱씹어 볼 수 있는 시간을 가질 수 있었다. 또한 마지막 챕터에서 훌륭한 아키텍트로서 어떻게 포지셔닝하고 올바르게 소프트웨어를 설계해야하는 지에 대한 인사이트를 얻을 수 있었다. 우리 모두가 아키텍트가 될 필요는 없지만 아키텍트의 마인드를 갖추고 일한다면 보다 더 나은 사람이 될 수 있지 않을까?

 

무려 700페이지에 가까운 이 책을 단숨에 읽어 나가는 것도 쉽지 않을 뿐더러, 한 번 읽고 온전히 소화하고 이해하기는 더더욱 어렵다. 하지만 오랫동안 곁에 두고 틈틈이 내용을 곱씹으며 반복해서 다독한다면, 1회독 했을 때 놓치거나 깨우치지 못했던 부분을 발견하게 되는 자신을 발견할 수 있으리라 생각한다. 이 책은 소장해서 옆에 오래오래 두고, 다회독을 할 만한 충분한 가치가 있는 서적이다. MSA에 대한 제대로 된 학습을 원한다면 이 책과 함께 시작하길 강력히 권장한다. 

 

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

 

[BOOK] 마이크로서비스 아키텍처 구축 - 샘 뉴먼 지음 / 정성권 옮김

2023-07-23 11.43.52.jpg

 

부제: "대용량 시스템의 효율적인 분산 설계 기법"

 

요즘 서비스 어플리케이션을 만든다고하면 검토되는 것이 마이크로서비스 아키텍처(MSA, Microservices Architecture)입니다. 하나의 커다란 서비스 형태로 애플리케이션을 구현하는 모놀리식 아키텍처(Monolithic Architecture)에 대응 되는 개념으로 작고 독립적인 여러 서비스들을 조합해서 애플리케이션을 구현하는 방식입니다.

 

특히 서비스 운영 환경이 물리머신, 가상머신에서 클라우드로 변화하고, 많은 서비스를 효율적으로 관리할 수 있는 다양한 솔루션들이 나타나면서 마이크로서비스 아키텍처의 도입이 점점 늘어나고 있습니다. 이 책의 초판이 출간되었던 때는 마이크로서비스 아키텍처가 넥플릭스나 아마존 같은 빅테크 회사들을 중심으로 도입되었습니다. 마이크로서비스 아키텍처를 도입한 빅테크 회사들의 사례가 공유되고 마이크로서비스의 개념과 철학이 확산되면서 6년이 지난 현재는 대부분의 서비스가 마이크로서비스로 만들어 지고 있습니다. 그리고 6년만에 이 책이 전면 개정판으로 출간되었습니다.

 

읽어보면 초판과 같은 책인지 의심이 들 정도로 다르지만 핵심 개념은 그대로 담겨있습니다. 초판으로 마이크로서비스 아키텍처에 대한 기본 개념을 배웠는데 이번 개정판으로 마이크로서비스와 연관된 많은 기술들을 정리할 수 있었습니다.

 

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

서비스를 구축하고 운영하는 실무자라면 대부분 마이크로서비스를 구현하고 운영하는 전반에 대한 여러 가지 고민을 하고 있을 것 같다. 지금 속해있는 팀에서도 니즈를 빠르게 반영해 서비스를 수정하고 확장해 나갈 수 있도록 안정적이고 효율적으로 MSA를 도입하는 일에 관심이 있다.


MSA는 장단점이 명확하다. 즉, MSA의 도입으로 얻을 수 있는 것과 감수해야 할 것이 명확하다는 뜻이다. 마틴 파울러가 "마이크로서비스의 특징을 이해하고 특정한 상황에 적용하는 것이 현명하다"라고 언급하기도 했고, 실제로 MSA의 실패 사례도 적지 않은 만큼 이러한 내용을 충분히 이해할 필요가 있는데, 이 책의 저자가 중립적인 입장에서 필요한 내용을 설명해 주고 있어 MSA의 도입을 고민하는 과정에서 도움을 얻을 수 있었다.


이 책은 총 3부에 걸쳐 MSA 구축과 의사결정에 필요한 거의 모든 것에 관해 설명한다. 1부에서는 마이크로서비스의 핵심 아이디어를 설명하고, 2부에서는 개념에서 구현 상세로 넘어가 마이크로서비스를 활용하는 데 도움이 되는 기법과 기술을 살펴본다. 마지막으로 3부에서는 1부, 2부에서 배운 내용을 토대로 사람과 조직의 입장에서 기술을 구현해 내는 과정을 설명한다. 많은 내용이 담겨있어서 앞으로 MSA와 함께하는 시간 동안 두고두고 들여다보며 공부해야 할 책인 것 같다.

마이크로서비스 아키텍처를 둘러싼 모든 것에 관한 설명과 함께 저자의 여러 조언이 담긴 책입니다. 

 

마이크로서비스 구축에 관해서 배우며 개발적인 부분에서도 배울 것이 많았습니다.

 

저자가 언급하듯이 최선의 선택을 하려면 여러 기술과 개념의 다양한 장단점을 파악하고 있어야 한다고 생각합니다. 마이크로서비스 아키텍처에 관해 여러 고민 요소를 알고 공부해보고 싶은 분께 추천합니다. 

 

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

이 책은 2017년도에 나왔던, "마이크로서비스 아키텍처 구축"의 개정판입니다.

뭐 번역출판이 된 것이 6년만이러서 꽤 많은 내용이 개정되었습니다.

일단, 분량 자체가 이전 판이 330페이지 정도였지만, 개정된 것은 660페이지 정도로 2배 정로도 그 내용이 늘어났습니다.

물론 그만큼 가격 차이도 있었는데, 이전 판이 26000원이었지만, 개정판은 44000원이 되었습니다.

가격 차이만 보고, "6년동안 물가가 무척 높아졌네" 라고 말하기에는, 내용 자체가 많이 달라졌기 때문에, 개정판이라고 하기 보다는 그냥 새로운 책이라고 하는 것이 좋을 것 같긴 합니다.

더욱이 이전 판의 경우에는 내용도 그렇고 번역 퀄리티도 그래서, 별로 읽어봤자 도움이 되는 것이 없었는데, 이번 개정판은, 책 가격의 가치를 충분히 하는 책이었습니다.

17년도에 나왔던 책에 실망했던 사람이라도, 새로운 책이라고 보고 다시 봐도 충분히 좋은 책이었습니다.

아마, 17년도에는 마이크로서비스를 소개하는 책이 별로 없었고, 또 그 개념도 새로운 상황이었기 때문에, 빨리 책을 출판해서 빨리 파는 것이 중요했다면, 지금은 관련 책들이 무척 많이 나왔기 때문에, 경쟁이 심화되어서, 그만큼 퀄리티 있는 책이 아니고서는, 팔리지 않기 때문에.. 경쟁으로 인한 퀄리티상승이 반영된 것이 아닌가 하는 생각이 들기도 했습니다.

뭐 각설하고,

책의 내용은 3부로 구성되어 있으며,

1부에서는 마이크로 서비스의 기본 개념들을 설명하고 있습니다.

기존의 모놀리식 아키텍처와의 차이점을 위주로 어떤 단계를 거쳐서 모놀리식에서 마이크로서비스로 발전해 왔는지를 설명하며, 동시에, 이 발전이 "그래서 모놀리식은 옛날 것이다" 라는 이야기를 하는 것은 아니었습니다. 어디까지나, 닭 잡는 칼과 소잡는 칼의 차이로, "마이크로서비스가 적합한 문제를 적절하게 적용해야 한다" 라는 것을 이야기하고 있습니다.

2부에서는 실제 구현을 하는 과정에서 따라야 하는 내용들을 설명하고 있습니다.

세부적으로는, 서비스들 사이의 협업을 원활하게 구현하기 위한 통신과 워크플로우, 그리고 마이크로 서비스의 핵심이 되는, 보안과 확장성, 또한 구현우 배포를 위한, 빌드/테스트/로그관리에 관한 이야기를 하고 있습니다.

3부에서는 마이스로서비스를 운영하기 위한 운영조직과 실 운영자의 성숙도 향상을 위해 고려해야 하는 내용들을 설명하고 있습니다.

마이크로서비스 구축을 위해 필요한 기본과 적용과정에서의 고려사항들을 잘 정리한 책입니다.

하지만, 그 난이도가 배경지식이 없는 초급자를 위한 내용은 아니었습니다.

일단, 책에서 다루고 있는 범위가 너무 넓고 (마이크로서비스의 모든 내용을 다 담으려고 하고 있지만, 그러기엔 책 한 권으로는 담아내기 힘들긴 하죠), 초급자와 중급자 사이의 개념 설명의 난이도 갭이 있습니다.

아마 가장 적합한 독자로는

1) 마이크로서비스에 대한 기본 개념을 갖고 있고

2) 현재 실무에서 모놀리식 서비스를 마이크로서비스로 마이그레이션 하려고 하다가 실패해 본 경험이 있어서, 어떤 문제들이 발생했고, 그것을 어떻게 풀어야 했는지에 대한 경험이 있거나

3) 아니면, 세미나 등을 통해서 경험 많은 사수나 교수같이 책의 내용을 설명해주고, 가이드해줄 수 있는 선배가 있는 사람

이런 사람이 볼때 최적의 효율을 낼 수 있는 교재라고 생각합니다.

최근 오라일리 책이 초급자를 위한 배려가 많아지고 있어서, 친절해지고 있다는 생각이 들었지만, 원래 오라일리 책이 이런 느낌이긴 했습니다. 완전 초급자가 볼 만한 책은 아니고, 어느정도 입문을 하고 난 후의 중급자 수준의 독자를 위한 책 말이죠.

이전 판본에 비하자면, 천지개벽의 수준으로 친절해진 책입니다만, 그럼에도 불구하고, 완전 초급자가 볼만한 책은 아니었습니다.

기존 레가시 혹은 모놀리식 시스템을 마이크로 서비스로 바꿔보기 위해 삽질을 해보고, "이렇게 하면 안된던데, 어떻게 해야 하지?" 라는 고민을 해본 사람을 위한 책이었습니다.

-----

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

-----

이 책은 대상 독자는 시스템의 설계, 개발, 배포, 테스트, 유지 관리 측면에 관심이 있는 모든 분들을 위한 책이라고 할 수 있습니다.

처음부터 개발하는 그린필드 애플리케이션이나 기존의 모놀리식 시스템을 분해하는 과정에서 이미 세분화된 아키텍처를 향한 여정을 시작하는 분들에게도 매우 유용한 책입니다.

 

책은 당신의 시스템 설계와 노력을 하는데 있어서 도움을 줄 수 있고, 기존의 지식을 토대로 한 단계 더 발전시키는데 도움을 줄 수 있는 책입니다.

1부 마이크로서비스에 대해서 무엇인지 알려주는 기초로 시작해서 2부에는 마이크로서비스를 최대한 활용하는데 도움이 될 수 있는 기업과 기술에 대해서 알려주는 구현, 3부에서는 이 서비스를 활용하고 개발하는 사람과 조직에 대한 사람이라는 주제로 구성되어 있습니다.

 

 책에서 사람이라는 주제를 다루는 데 있어서 사람이라는 주제를 선택한 것도 흥미로웠지만 조직과 사용자 인터페이스 부분까지 포함된 구성은 정말 흥미롭도 독특한 부분이었습니다.

 

책이 얇은 책은 아니기 때문에 처음부터 읽어가는 것보다는 내가 흥미로운 부분을 찾아서 읽어 가면서 한 챕터씩 배워가는 방식도 괜찮을 것 같습니다. 

 

책을 읽으면서 가장 도움이 된 부분은 마이크로서비스의 필요성과 적용 시기에 대한 설명입니다. 특히, 예시를 통해 구체적으로 설명하는 부분은 매우 유용했습니다. 마이크로서비스를 적용해야 하는 이유와 어떤 상황에서 해당 서비스를 활용해야 하는지에 대한 설명은 이해하기 쉽게 전달되어, 개념을 잘 이해하는 데 큰 도움이 되었습니다. 책 리뷰에서도 언급했듯이, 이런 실질적인 내용이 많이 담긴 부분은 독자들에게 큰 가치를 제공하는 것 같습니다.

 

 하지만 위에 언급한것과 같이 기술서적이기 때문에 한 번에 이해가 되는 것은 아니어서 필요할 때마다 하나씩 찾아가면서 읽어야 더 도움이 될 수 있을 것 같습니다.

 

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

이번에 서평 할 책은 마이크로 서비스 아키텍처 구축입니다.

책 앞표지에는 벌집이 그려져 있네요 마이크로서비스를 의미하는 것 같네요

뒷면에는 무려 마틴 파울러의 서평까지 있습니다. 마틴 파울러가 서평 남긴 책이라서

신뢰가 많이 가는 책이네요.

 

​책 뒷면의 이정인님이 남기신 서평이 딱 알맞은 것 같습니다.

주니어 개발자에게는 이 책을 통해서 마이크로서비스 아키텍처에 대한 이해를 높일 수 있다고 생각하네요

다만 책이 난이도가 있기 때문에 어느 정도 MSA를 다뤄본 주니어부터 읽어보는 게 좋다고 생각이 드네요

 

책은 1장부터 16장까지 구성이 되어있습니다.

총 3부로 기초, 구현, 사람으로 나눠져있습니다.

책은 읽기 편하게 되어 있습니다.

적재적소에 그림도 잘 배치되어 있고

소제목도 잘 나눠놓아서 읽기 편하네요.

 

​초반에는 모놀리스 서비스에 대해서 설명을 하고

뒤에서 MSA에 대해서 설명을 합니다.

MSA에 대해서 얘기할 때 빠지지 않는 게 DDD인데

여기서도 DDD를 어느 정도 설명하고 넘어갑니다.

DDD에서 많이 쓰는 용어부터 정리를 하고 그 뒤에 자세하게 알려줍니다.

 

4장에서는 마이크로서비스에서 어떻게 통신을 하는지 여러 방식을 알려줍니다.

요즘은 이벤트 기반 통신을 많이 사용하고 있어서 이 부분을 봐보았습니다.

구현 부분에서는 코드는 없긴 합니다만

어떻게 해야 되는지 글로 풀어서 설명을 해줍니다.

 

구현도 중요하지만 서비스를 어떻게 빌드하고 배포하는 지도 매우 중요한 요소인데

이 부분에 대해서도 설명을 해줍니다.

 

마지막 장에서는 처음부터 끝까지 한 번 쓱 정리를 해주고 향후 전망까지 이야기해줍니다.

 

​책에 코드는 없고 글로만 되어 있기에 

MSA를 코드로 배우고 싶으신 분들에게는 적합하지 않을 수 있습니다.

다만 MSA에 대한 이론적인 설명은 글로 충분히 설명이 되어있다고 

생각이 들기에 어느 정도 MSA에 대한 학습이 되어있으신 분들이 읽으면 

많은 인사이트를 얻을 수 있다고 생각이 듭니다.

 

​MSA에 대해서 더 깊게 배워보고 싶으신 분들에게 추천합니다.

 

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

마이크로서비스가 아키텍처가 대유행하는 현재.

안 쓰면 뒤쳐지는 것 같아 무작정 도입하는 프로젝트가 많다. 이러한 이유로 도입을 하다보니 엉망진창으로 구성이 되는 경우가 상당하다.

이 책은 마이크로서비스를 도입해야 하는 경우와 아닌 경우,  모놀리틱서비스에서 전환하는 방법들과 서비스 단위, 통신, CI/CD, 보안 등 많은 내용을 다루고 있다. 단순 나열이 아닌 해당 방식들간 비교와 장단점, 도입이 적절한 경우들도 예시로 들고있어 마이크로서비스 구축을 앞둔, 전환을 앞두고서 읽으면 상당한 도움이 되는 책이다.

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

 

 

 

2010년대에 등장한 마이크로서비스 아키텍처(MSA)는 현재 소프트웨어 생태계에서도 많은 영향력을 끼치고 있는 것 같습니다. 실제로 우리가 알고 있는 유명한 서비스들은 MSA로 아키텍처를 전환하는 과정을 겪기도 했습니다. 아키텍처를 MSA로 구성하려는 목적이 있거나, 관심이 있다면 많은 통찰을 얻을 수 있는 책이라고 생각합니다.

 

 

책은 총 3부로 구성됩니다.

1부에서는 MSA의 핵심 아이디어를 설명하여 중요 개념들을 이해할 수 있게 도와줍니다.

2부에서는 MSA의 구현부를 다루고 있고 도움이 되는 기법과 기술들을 소개하고 있습니다.

3부에서는 사람과 조직에 대해 다루고 있습니다.

 

이 책은 기술적인 것만 다루는 것 이상으로 사람과 조직에 대한 내용까지 넓게 다루고 있어 실제 개발팀에서 MSA를 도입하기에 시행착오를 많이 줄일 수 있다는 생각이 듭니다. MSA를 잘 모르고, 처음 들어본 사람이라도 이 책을 통해 MSA가 무엇인지 이해하고, 시니어 소프트웨어 엔지니어들에게는 다양한 사례를 통해 실무에 적용하기에 큰 도움이 될 것이라고 생각합니다.

 

 

현재 회사에서 프론트엔드 개발을 진행하고 있어 MSA에서 UI를 다루는 부분은 더욱 재밌게 읽을 수 있었습니다.

 

MSA에서의 가장 중요한 점은 정말로 우리의 서비스에 MSA를 도입할 가치가 있는지를 판단하는 것이라고 생각하는데요. 여러 복잡함을 이겨내고 기존의 아키텍처보다 MSA가 가치있다고 판단이 된다면 도입하는 과정에 있어 많은 도움을 줄 수 있는 책으로 추천을 드리고 싶습니다.

 

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

 

마이크로 아키텍처 기반의 서비스 하나를 만들기 위해 필요한 모든 지식들을 담은 총론 집. 마이크로 아키텍처 기반의 설계 혹은 서비스를 희망하는 개발자들이라면 책을 통해 시작해도 무방하다.

이제껏 나름 다양한 책들의 마이크로 아키텍처 관련 책들을 읽어왔지만, 이처럼 서비스 하나를 만드는 데에 필요한 모든 기술들에 대해서 총론을 나열한 책은 상당히 오랜만인듯하다.

그만큼 해당 책에서 다루는 내용은 기본적으로 마이크로 아키텍처에서 사용하는 보편적인 지식들을 다루고 있으며 언급한 각각의 기술만으로도 적게는 권에서 많게는 수십 권의 책이 나올 정도로 고도화된 전문 지식들을 간단 명료하게 설명하고 있다.

, 서비스를 구축하는 데에 필요한 정도의 필요 지식들에 대해서 언급했다는 점에서 해당 책은 담백했으며, 보다 자세한 내용을 알고 싶을 경우, 그와 관련된 저서에 대해 저자가 적극 추천하고 있다는 점에서 저자가 상당히 독자들을 배려하고 있음이 느껴졌다.

또한 실무자 입장에서는 어찌 보면 당연히 고려하고 넘어갈 법한 내용들을 주니어들 혹은 이제 마이크로 아키텍처를 시작한 사람들의 입장에서 명확히 집고 갔다는 점이 해당 도서가 다른 도서와 구분되는 특징이라 있다.

또한 책의 끝부분에서 마이크로 아키텍처 기술이 사용하는 용어를 부록으로 정리하여 제공함으로써 잊을법한 전문용어들에 대해서 쉽게 다시 상기시킬 있는 접근 요소를 제공하고 있다.

【책의 구성】 "마이크로 서비스 아키텍처 구축"의 구성은?

책의 구성은 크게 부분으로 나뉘어있다.

기초

구현

사람

기초 파트에서는 마이크로 서비스의 정의가 무엇인지에서부터 마이크로 서비스 구축에 필요한 기본적인 상식들에 대해서 정리한 파트이다.

구현 파트에서는 기초 파트에서 배웠던 내용들을 기반으로 하여 실무에서 접할만한 내용들인 마이크로 서비스들 간의 통신, 마이크로 서비스들의 워크플로 구성, 빌드, 배포, 테스트의 내용들을 다루고 있으며 과정에서 k8s, ci/cd 개념 등의 내용들에 대해 첨언하고 있다.

사람 파트에서는 사용자에게 노출되는 FE 비롯한 조직의 형태, 구성, 오픈소스 등의 내용을 다루고 있다.

파트에 포함된 챕터들은 제목을 근간으로 그에 해당하는 세부내용들로 분화되어 저자가 겪었던 그리고 배워야 내용들에 대해서 핵심 위주로 나열하여 설명하고 있다.

또한 챕터 마지막에서는 해당 장에서 배웠던 내용에 대해 다시 한번 상기 시킴으로써 학습효과를 강화하는 구성을 취하였다.

 

 

1 챕터 : 마이크로 서비스란?

챕터에서 필자가 가장 인상 깊게 살펴보았던, 학습했던 내용은 아무 곳이나 마이크로 서비스를 사용하지 말라는 것이었다.

마이크로 서비스는 그대로 마이크로 + 서비스 단어의 합성어이다. 서비스를 잘게 나누어 마이크로하게 사람들에게 제공하는 . 그것이 우리가 아는 마이크로 서비스이다.

이와 대조되는 군으로 모놀리스 시스템을 있는데, 요즘 대다수의 책들에서는 모놀리스는 절대로 사용해서는 되는 시스템 구조이며, 시대의 뒷방으로 물러난 퇴물 취급을 하는 경향이 강했다. 하지만 책에서의 저자는 오히려 마이크로 서비스 자체를 오용하는 경우가 많다며, 모놀리스 서비스 역시 적재적소로 사용한다면 마이크로 서비스 못지않은 훨씬 좋은 서비스 구성이 있음을 강조하고 있다.

 

3 챕터 : 모놀리스 분해

장에서는 기존의 서비스를 어떻게 마이크로 서비스로 쪼게 나눌지에 대해서 간략하게 정리하고 있다.

어찌 보면 책에서 가장 핵심이라 생각되는 부분이며, 책에서 가장 간단하며 명료한 챕터라 있다.

옛말에 이런 말이 있다.

' 길도 걸음부터..'

저자는 기존의 서비스를 마이크로 서비스로 변화할 소소한 단위의 기능부터 마이크로 서비스로 전환하길 권장하고 있다. 실무자 입장에선 정말 극히 공감이 가는 내용이다.

본인이 프로젝트를 한번 보고 조각가인 , 필요한 부분 필요한 부분 단위로 척척 나눌 있는 능력을 갖췄다면 번에 전환을 해도 되지만. 보통은 그렇게 많은 양을 번에 전환하게 되면 반드시 장애를 겪게 된다.

가장 중요한 것은.. 차분히 그리고 꾸준히 하는 것에 있음을 잊어선 안된다.

 

4챕터 : 마이크로 서비스 통신 방식

보편적으로 통신 방식은 가지 정도가 있다. 동기/비동기/Message Broker/공용 스토리지

각각은 모두 저마다의 장단점을 갖고 있다. 어떤 통신 방법이야말로 화타가 울고 치료법이다! 이렇게 말할 있는 것은 없다

동기의 경우, resp 필요하고 해당 응답이 그다음 처리에 사용되는 경우에 보편적으로 사용되며

비동기의 경우, 병렬로 처리해도 되는 요청의 경우 보편적으로 사용된다.

공용 스토리지(DB, NAS) 경우에는 대용량 파일을 주고받거나 혹은 레거시 환경까지 서비스를 제공하는 경우 많이 사용되며

요즘 각광받고 있는 Message Broker 이용한 방식은 여러 workers 배치하여 message 구독하는 형태를 취함으로써 비동기 처리 효과 + 안정적인 서빙이 가능하게 되었다.

마이크로 서비스 아키텍처 구축을 읽고 나서

어떤 기술이든 알맞은 위치에 알맞은 형태로 사용한다면 옛날에 탄생한 것일지라도 목적에 맞게 쓰일 있다. 최신 기술을 적용하는 것은 재미나고 신나는 일이다. 모든 새로운 것이 나오면 무엇인지 모르게 사용해 보고 싶고 들뜨는 것이 사람 심성 아니겠는가?

다만 신기술이라고 해도 결국에는 기본은 옛날에 만들어졌던 기술들을 토대로 쌓아 올려진 것이 태반이다. 더욱이 지금처럼 고도화된 세상에서 옛것에 기초하지 않고 완전히 새로 생겨난 기술은 없다고 봐도 무방하다.

따라서 저자가 말한 것과 같이. 옛날 접근 방식이든 최신 접근 방식이든 본인이 구축하려는 서비스의 목적에 맞게, 지금 놓인 환경에 맞게 '최신' 아닌 '최선' 접근 방법을 찾기 위해 분투해야 한다.

22222222222.jpeg

 

마이크로서비스 아키텍처는 하나의 기술 트렌드로 자리잡혀 가고 있다. 

서비스를 도메인별로 분리하여 각 도메인별 독립적 변경, 배포를 가능하게 하고, 다른 서비스에 영향을 주지 않기에 

좀 더 안정적인 서비스를 운영할 수 있다는 장점도 있다.

 

그래서 아직도 레거시를 많이 운영하고 있는 개발자가 시스템을 MSA로 전환을 한다고 아래와 같은 2가지의 선택지가 있을 것 같다.

  1. 레거시를 점진적으로 마이크로서비스로 구축
  2. MSA 로 신규 구축 

 

말로만 들으면 MSA로 서비스를 구축을 하면 안정적이고, 기존 모놀리스보다 장점이 많아 보이는데, 과연 그럴까 하는 의문도 든다.

기존 레거시가 과연 MSA로 구축할 만큼 사용자나 비용적인 측면에서 타당한지?

MSA로 전환을 하면서 생기는 문제들이 오히려 안정성을 낮추는 건 아닌지?

여러 도메인별로 서비스가 나뉘면서 관리할 포인트가 많이 생기지는 않는지?

아니면 MSA로 전환할 전문 지식이 있는지?

 

마이크로서비스 아키텍처를 잘 모르고, 막상 MSA로 전환을 하면 여러가지 문제에 닥치게 될텐데, 이 때 필요한 책이 

‘마이크로서비스 아키텍처 구축’이란 책인 것 같다.

 

우선 다른 책들과 다르게 마이크로서비스를 구축하는 실습을 위주로 다루지 않는다. 우리가 마이크로서비스 구축을 하기위해 

시작 단계에서부터 이게 과연 우리 서비스와 맞는지까지 모든 것을 다시 생각해보게 해주는 책이다.

 

전면 개정판으로 나오면서 내용도 많이 최신화 되었고, 책을 읽으면서 기존 레거시를 마이크로서비스로 전환을 하려고 하는 

사람들에게 많은 도움이 될 것 같은 책인 것 같다.

 

MSA를 도입부터 기술까지 전반적인 이론적인 내용과 경험을 담고 있는 책이기 때문에 꼭 한 번 읽어보면 좋은 책이라 추천한다. 

 

 

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

마이크로서비스 아키텍처 구축(전면 개정판)

 

대용량 시스템의 효율적인 분산 설계 기법

샘 뉴먼 저/정성권 역 | 한빛미디어 | 원제 : Building Microservices 2e

 

『마이크로서비스 아키텍처 구축』 전면 개정판은 마이크로서비스 아키텍처(MSA)가 이제 소프트웨어 개발 분야에서 대중화된 아키텍처 방법론으로 자리를 잡았다는 것으로, 기업 및 개발자들에게도 많이 알려진 익숙한 기술이 되었다는 것을 증명하고 있다 하겠다.

 

마이크로서비스는 독립적 변경, 배포, 릴리스를 하기 위한 분산 시스템에 대한 접근방식 중 하나이다.

마이크로서비스를 사용하면 시스템을 구축하는 데 다양한 선택지를 갖고 사용자 요구에 맞게 시스템을 변경하는 유연성을 갖출 수 있다는 장점이 있다.

하지만 마이크로서비스는 분산 시스템으로 많은 복잡성을 수반하고 많은 숙련 개발자들에게도 생소한 것들이 있다는 단점이 있다.

새로운 소프트웨어개발 기술의 등장과 함께 개발자들의 경험은 마이크로서비스 사용 방식에 더 많은 영향을 주고 있다.

이 책은 각 각의 프로젝트를 진행할 때 적용할 수 있는 실제 사례를 제공하고, 마이크로서비스가 자신의 프로젝트에 적합한지를 이해하는 데 도움이 될 것이다.

 

특히, 프로젝트에 참여하는 개발자들에게 단편적인 기술을 제공하는 것이 아니라 소프트웨어개발에 필요한 전반적인 부분을 사례를 중심으로 이해 할 수 있도록 제공함으로 전체를 아우를 수 있도록 안내한다.

특히, 아키텍처, 코드 작성, 테스트, 운용 방식, 네트워크, 보안, 배포, 릴리스 등 필수적인 과정을 설명하고 있다.

 

개정판에서는 개념을 더 잘 설명하고자 명확한 예제를 공유하는 데 공을 들였다는 점이 독자들에게 많은 도움이 될 것이다.

 

소프트웨어 개발 프로젝트에 참여하는 모든 개발자들이 마이크로서비스 아키텍처 구축을 검토해 보고 적용해 볼 수 있는 기회가 더 넓어지기를 기대한다.

 

역자의 노고에 고마움을 전한다.

독자들이 쉽게 이해할 수 있도록 전문용어와, 관련 참고도서에 대한 소개를 꼼꼼히 챙겨 주었다.

 

 

 

책소개

마이크로서비스 기초부터 구현까지

사람과 조직을 고려한 실전 마이크로서비스 아키텍처 구축 가이드

 

* 설계/아키텍처 분야 아마존 베스트셀러

* 마이크로서비스 아키텍처 핵심 용어집 수록

 

“마이크로서비스 아키텍처는 매력적인 특징이 많지만, 마이크로서비스 아키텍처로 향하는 길에서 주의하지 않는 다면 고통스러운 함정에 맞닥뜨리게 된다.” - 마틴 파울러

 

전 세계 프로그래머에게 필수 책인 『리팩터링 2판』의 저자 마틴 파울러가 극찬한 『마이크로서비스 아키텍처 구축』이 전면 개정되어 돌아왔습니다.

모두가 기다려온 『마이크로서비스 아키텍처 구축(전면 개정판)』은 마이크로서비스와 관련된 모든 측면에 대해 광범위한 개요를 제공하고자 했습니다.

1판에서 마이크로서비스 개념을 주로 다뤘다면, 이번에는 그 기본 토대 위에 소프트웨어 배포 프로세스 측면과 마이크로서비스 아키텍처를 채택함으로써 발생하는 영향까지 함께 다룹니다. 초판 출간 후 지난 5년 동안 마이크로서비스의 변화와 새롭게 등장한 기술도 함께 다뤄 1판보다 2배가 넘도록 지면을 풍부하게 채웠습니다.

이 책은 총 3부에 걸쳐 마이크로서비스 아키텍처 구축에 대해 설명합니다.

1부 기초,

2부 구현,

3부 사람으로 구성되어 있습니다.

1부에서는 마이크로서비스의 핵심 아이디어를 설명하고,

2부에서는 개념에서 구현 상세로 넘어가 마이크로서비스를 활용하는 데 도움이 되는 기법과 기술을 살펴봅니다.

마지막으로 3부에서는 1부, 2부에서 배운 내용을 토대로 사람과 조직의 입장에서 기술을 구현해내는 과정을 설명하고 있다.

 

 

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

 

 

#마이크로서비스 #아키텍처 #구축 #대용량 #시스템의 #효율적인 #분산 #설계 #기법

#샘_뉴먼_저 #정성권_역 #한빛미디어

 

SCR-20230723-pvsf.png

 


느낀 점 

 

이번 책은 파트 1, 2에서 궁금한 부분만 찾아서 읽었다. 지금 회사에서 마이크로서비스를 적용할 계획은 없지만 개인적으로 궁금했던 내용이어서 재미있게 읽었다.기본적으로 모놀리스에서 마이크로서비스로 넘어가게 되는 배경 지식과 관련 기술들을 소개하고 이를 통해 해결하고자 하는 문제점, 실제로 프로젝트에 적용하는 다양한 기술적 방식들을 자세하게 소개해주고 있다. 

 

책의 전반적인 부분에서 작가가 객관성을 잃지 않으려고 노력한 부분들이 많이 보인다. 최대한 다양한 관점에서 내용을 소개하고 작가가 선호하는 방식은 어떤건지 정도만 이야기하고 넘어간다.

 

아쉬웠던 점은 번역이 매끄럽지 않은 부분들이 종종 보였다. 특히 이 책과 동시에 한국인 저자가 쓴 다른 책을 같이 읽다보니까 이런 번역서 특유의 부자연스러운 문장 구조가 더 많이 느껴졌다. 번역서에서 많이 보이는 모든 영어 단어 하나하나를 전부 다 그대로 옮긴 듯한 느낌이라고 해야하나. (몇몇 군데는 하도 답답해서 나였으면 어떻게 번역했을지 생각하게 만들었다.)

 

내용 자체는 많이 배울 수 있어서 좋았다. 소프트웨어 아키텍처를 공부할 때 항상 모든 강의와 책에서 이야기하지만 유일한 정답이란 없다. 현재 상황에 맞는 가장 적합한 아키텍처와 관련 기술을 선택하기 위해서 다양한 방식을 알고 각 방식들의 장단점을 파악하고 있어야 내가 현재 직면하고 있는 문제 해결을 위한 최적의 방법을 선택할 수 있다. 그리고 종종 시간이 지나면서 그때는 옳았던 방식이 지금은 틀리게 될 수도 있다. 

 

여담: 구글 북스 후기

 

이번엔 조금 두꺼운 책을 고르게 되면서 전자책으로 받아보았다. 600쪽이 넘는 책을 매일 가지고 다니는 게 힘들기도 하고, 계속 늘어나는 종이책을 보관하는 것도 조금 부담스러워서 그랬는데 결론적으로는 나에게는 영 별로인 선택이었다.

 

가지고 있던 아이패드가 고장나버려서 출퇴근길에는 주로 핸드폰으로 보고 집에서는 노트북으로 봤는데 구글북스 인터페이스가 편하지 않았다. 그리고 전자책이니까 당연히 될 거라고 생각했던 TTS 기능이 없는게 제일 아쉬웠다. 핸드폰으로 계속 글씨를 보기에는 화면도 작고, 이동중에 폰을 계속 보는게 위험하기도 해서 이게 안되면 앞으로도 전자책으로는 안받아볼 것 같다. 

 

yes24 북클럽에도 기본 탑재되어 있던 기능이었는데 구글 북스가 영 별로인 것 같다. 

마이크로서비스에 대한 내용을 접한 후 그 간결함에 이끌려 신규로 진행하는 프로젝트에 실험적으로 적용 해보기도 했다. 하지만 서비스의 간결함 뒤에는 기반 기술의 복잡함이 숨어있었다.

마이크로서비스 아키텍처의 경우 각 기능이 독립적으로 개발되고 배포될 수 있어서, 빠른 개발과 배포가 가능하다. 또한, 각 마이크로서비스의 관리가 쉽고, 장애 발생 시 해당 서비스만 디버깅하고 배포할 수 있어 다른 서비스에 영향을 최소화하는 점에서도 큰 이점을 느꼈다.

 

그러나, 이 책에서 서술한 것처럼 시스템 자체를 운영하고 관리하기 위해서는 기술적인 지식과 높은 수준의 전문 기술력이 필요하다. 각 마이크로서비스 간의 연동과 통신을 관리하는 것은 쉽지 않았고, 분산 시스템의 복잡성에 대한 이해가 요구된다. 따라서, 프로젝트에서 이러한 인력과 기술 지식을 확보하기 위한 추가적인 비용이 발생하게 된다. (시간 or 현금)

 

이 책은 개발자들에게 마이크로서비스 아키텍처에 대한 시각과 인사이트를 제공한다. 하지만, 모든 프로젝트에 적합한 것은 아니다. 팀 규모가 작고 단순한 프로젝트에는 오히려 기술 및 비용 부담이 커지므로, 적용을 고려할 때에는 신중한 판단이 필요하며 점진적인 전환이 필요하다.

 

이 책은 현업에서 얻은 경험을 바탕으로 하는 뛰어난 설계와 개발 원칙을 제시하고 있으며, 기존의 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 전환을 고려하는 개발자들에게 많은 도움이 될 것 같다. 다만, 비용 측면에서 신중한 고려가 필요하며, 기술적인 부분에서는 팀의 역량을 고려하여 적용 여부를 결정하는 것이 좋을 것 같다.

 

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

KakaoTalk_20230723_135020075.png

KakaoTalk_20230723_135020075_06.png

KakaoTalk_20230723_135020075_05.png

KakaoTalk_20230723_135020075_01.png

KakaoTalk_20230723_135020075_02.png

KakaoTalk_20230723_135020075_03.png

 

1230722.jpg

 

 

마이크로서비스 아키텍처는 2010년대 초반부터 등장한 소프트웨어 접근 방식입니다.

 

애플리케이션을 작은 독립적인 단위로 나누어 개발하고 운영하는 방법인데요.

초기에는 혼합된 반응이 있었지만, 유연성과 확장성으로 인해 점점 더 많은 기업에서 도입하고 있습니다.

 

마이크로서비스의 바이블 같은 책을 살펴보도록 하겠습니다.

 

살펴볼 책은 ‘마이크로서비스 아키텍처 구축’입니다.

 

주로 대규모의 복잡한 애플리케이션을 만들 때 마이크로서비스로 구축합니다.

 

마이크로서비스 아키텍처 구축을 도입하기 전 고충이 있으실 텐데요.

마이크로서비스 분리의 어려움을 느끼는 분들도 계실 겁니다.

 

어려운 이유는 기존의 모놀리식 애플리케이션을 마이크로서비스로 전환하는 것은 비용과 시간이 많이 들기 때문입니다.

 

도입 시의 장단점을 고려하여 적절한 상황에서 적용하는 것이 중요합니다.

 

마이크로서비스의 핵심 개념과 회복 탄력성에 관해 살펴보도록 하겠습니다.

 

 

3230722.jpg

 

 

◆ 소프트웨어 개발에 필요한 회복 탄력성

회복 탄력성은 시스템이 예기치 않은 장애에도 빠르게 복구되고 안정성을 유지하는 능력입니다.

 

장애는 언제든 발생할 수 있는데요.

이 문제를 해결하려면 여러 안정성 패턴과 기법을 적용하여 위험을 분산시키고 기능 저하를 고려해야 합니다.

 

또한, 카오스 엔지니어링을 통해 시스템을 테스트하고 비난보다는 문제 해결에 초점을 두어야 합니다.

 

CAP 정리를 이해하여 시스템 설계에 적절한 선택을 해야 합니다.

 

이를 통해 시스템의 회복 탄력성을 향상할 수 있습니다.

 

 

2230722.jpg

 

 

◆ 마이크로서비스의 핵심 개념

마이크로서비스의 핵심 개념 중 하나는 독립적 배포성입니다.

 

각각의 마이크로서비스는 독립적으로 개발, 테스트, 배포되며, 다른 서비스와 무관하게 운영될 수 있습니다.

 

이로 인해 시스템 전체의 안정성과 확장성이 향상되며, 개발과 배포가 더욱 빠르고 유연해집니다.

 

또한, 도메인 중심의 모델링 유연성은 각 서비스가 특정 비즈니스 도메인에 집중되어 독립적으로 발전할 수 있습니다.

 

기술 스택이나 데이터베이스 선택에 대한 자유도가 높습니다.

 

이러한 특징으로 인해 마이크로서비스 아키텍처는 현대적인 애플리케이션 개발에 많은 관심을 받고 있습니다.

 

 

4230722.jpg

 

 

끝으로 마이크로서비스 아키텍처에 대한 기업들의 관심이 커지고 있습니다.

 

1판도 많은 관심을 받았지만, 저자는 그때 담지 못한 이야기까지 이번 책에 담기 위해 노력했는데요.

모든 장을 다 검토하고 문장을 다듬으면서 독자들의 이해를 도우려고 힘썼습니다.

 

1~2부에서는 마이크로서비스의 알아야 할 핵심 아이디어와 구현할 수 있는 도움 되는 기법과 기술을 알려줍니다.

 

3부에서는 마이크로서비스 조직 구조와 아키텍트의 방향에 대한 주제를 다룹니다.

 

마이크로서비스 전문가의 핵심 조언과 아키텍처 구축 시 올바른 의사결정을 할 수 있도록 도와줍니다.

 

책의 목차를 보면 주제별 형식으로 구성되어 있습니다.

 

자신이 원하는 주제를 보고 싶을 때 낯선 용어가 있을 수 있는데요.

그럴 땐 책의 뒤쪽에 용어집이 수록되어 있으므로 참고하고 읽어보시길 바랍니다.

 

마이크로서비스 아키텍처를 도입 중이거나 고민 중이신 분들에게 이 책을 추천합니다.

 

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

 

MSAS는 유명 IT회사 혹은 대기업들에서 많이 사용하는 아키텍처입니다.

그래서 많은 개발자나 아키텍처들은 MSA를 지향하고 있지만, 정작 MSA를 제대로 이해하는 사람들은 많지 않을 것입니다.

MSA의 바이블이라는 별칭 그대로 사용하기 좋은 책입니다.

IT서비스가 주류가 아닌 전통적인 대기업들은 SAP 환경을 많이 쓴다.

대기업 개발자로써 익명성을 빌려 말한다.

나는 SAP이 정말 싫다!

아니 정확히 말하면 확장성을 고려하지 않고 SAP이 만능통치약으로 생각하여 도입한 책임자가 밉다.

SAP 생태계에서 일부분 솔루션을 도입하기 보다 생태계에 있는 많은 솔루션을 사용하게 만들어 의존성이 장난 아니고 확장성도 제한된다. 

이런 점 때문에 시스템을 전환할 때, 아무래도 점진적 오픈이 아닌 빅뱅방식으로 전환을 할 수 있다.

(그렇다. 그렇게 한 곳이 우리 회사다..)

 

난리다... 현업들로부터 수많은 컴플레인 전화를 받게 된다. 빅뱅 방식으로 오픈했다가 빅뱅 화를 당하는 것이다. 

끔찍하다. 이게 마이크로 서비스 아키텍처를 논하고 있는 시대에 벌어지고 있는 일이다. 

 

그래서 나는 마이크로 서비스 아키텍처에 관심이 많다.

왜냐하면 마이크로 서비스 아키텍처는 느슨한 결합으로 아키텍처를 짜기 때문이다.

정말 느슨하게 무슨 말인지 모를 수 있다. 

하지만 다행히 이 책은 마이크로서비스가 어떤 탄생 배경을 가지고 있고,

현재 구성된 시스템을 어떻게 마이크로 서비스로 적용할 수 있을지 알려주고

마이크로 서비스를 만들기 위해 구현하는데 어떤 방식들이 있고 각 관점마다 어떤 것을 신경 써야 하는지

그리고 구체적으로 어떤 기술들을 사용할 수 있는지 알려준다.

 

만약, 빅뱅방식으로 오픈하지 않고, 트렌드에 맞게 마이크로 서비스를 적용하고 싶다면 이 책을 추천한다. 

적어도 기존에 어떤 방식들에 문제가 있어 왔고 이것을 해결하기 위해 마이크로서비스가 어떤 것을 제공해줄 수 있는지 그 해결서가 될 것이다. 

 

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

시스템  운영에 대한 모든 부분을 다룬 책이다.

마이크로 서비스의 장점

마이크로 서비스의 단점

마이크로 서비스를 사용해야 하는가?  에 대한 답을 준다.

빌드,배포,테스트,관찰가능성,보안,조직까지 다룬다.

 

 

이 책은 기초, 구현, 사람의 3개의 부로 나누어져 있다~

 

1부 기초

1장 마이크로 서비스란?

2장 마이크로 서비스 모델링 방법

3장 모놀리스 분해

4장 마이크로 서비스 통신 방식

 

 

2부 구현

5장  마이크로 서비스의 통신 구현

6장 워크플로

7장 빌드

8장 배포

9장 테스트

10장 모니터링에서 관찰 가능성으로

11장 보안

12장 회복 탄력성

13장 확장

 

 

3부  사람

14장 사용자 인터페이스

15장 조직 구조

16장 진화하는 아키텍트

 

 

 

1부 기초

<1> 마이크로 서비스란?

<2> 마이크로 서비스의 핵심 개념?

<3> 모놀리스

<4> 마이크로서비스 장점

<5> 마이크로 서비스의 고충

<6> 마이크로 서비스를 사용해야 하는가?

 

 

 

<1> 마이크로 서비스란?

 

비즈니스 도메인에 따라 모델링 된 독립적으로 릴리스 가능한 서비스.

기능을 캡슐화하고 네트워크를 통해 다른 서비스들을 액세스 하게 해 준다.

마이크로서비스라는 작은 빌딩 블록을 사용해 더욱 복잡한 시스템을 구축할 수 있다.

 

 

 

<2> 마이크로 서비스의 핵심 개념?

 

1

독립적 배포성.

독립적 배포성은 다른 마이크로 서비스를 배포하지 않고도 마이크로서비스를 변경하고, 배포하고, 사용자에게 릴리지 할 수 있다는 개념이다.

 

2

비즈니스 도메인 중심의 모델링

 

3

자기 상태 소유

마이크로서비스가 공유 데이터베이스 사용을 피해야 한다.

정말 필요한 경우가 아니면 데이터베이스를 공유하지 말아라.

데이터 베이스 공유는 독립적 배포성을 발생하는 데 가장 나쁜 것 중 하나이다.

 

4

크기

 

5

유연성

 

6

아키텍처와 조직의 정렬

 

 

<3> 모놀리스

 

1

단일 프로세스형 모놀리스

 

2

모듈식 모놀리스

 

 

3

모놀리스의 장점?

단순한 배포 토폴로지

개발자 워크로드가 단순해지며 , 모니터링, 문제 해결, 엔드투엔드 테스트도 간소화 가능하다.

 

 

<4> 마이크로서비스 장점

 

1

기술 이질성

다수의 협력하는 마이크로 서비스들로 구성된 시스템이라면 각 마이크로서비스에 서로 다른 기술을 사용할 수 있다.

 

2

견고성

벌크 해드이다.

시스템의 구성요소 중 하나가 조장 날 수 있지만, 그 고장이 연속적으로 발생하지 않는 한 문제를 격리하고 나머지 시스템은 계속 작동할 수 있다.

 

3

확장성

대규모 모놀리식 서비스에서는 모든 것을 함께 확장시켜야 한다.

더 작은 서비스를 사용하면 확장이 필요한 서비스만 확장할 수 있다.

시스템의 다른 부분을 더 작고 성능이 낮은 하드웨어에서 실행하게 된다.

 

4

배포의 용이성

 

5

조직적 정렬.

더 작은 코드베이스로 일하는 더 작은 팀이 생산적인 경향이 있다.

 

6

조합성

분산 시스템과 서비스 지향 아키텍처가 보장하는 핵심 효용 중 하나는 재사용할 기회가 많다는 것이다.

 

 

 

 

 

<5> 마이크로 서비스의 고충

 

1

개발자 경험

더 많은 서비스가 생기면 개발자의 고된 경험이 시작된다.

 

2

기술 과다

새로운 기술들은 과도한 무게를 가질 수 있다.

마이크로 서비스는 각 마이크로 서비스를 다른  프로그래밍 얹지로 작성하거나, 다른 런타임을 실행하거나 , 다른 데이터베이스를 사용할 수 있는 선택지를 제공한다.

이것은 선택이다.

 

3

비용

단기적으로 여러 요인으로 비용이 증가할 가능성이 높다.

더 많은 프로세스, 더 많은 컴퓨터, 네트워크.

또한 팀이나 조직의 변경이 발생하면 단기적으로 속도가 느려진다.

 

4

리포팅

모놀리식 데이터베이스는  분석하길 원하는 이해 관계자는 보고서를 실행하ㅣ 위해 미리 만들어즌 스키마를 갖고 있다.

 

5

모니터링과 문제 해결

 

6

보안

 

7

테스팅

 

 

 

<6> 마이크로 서비스를 사용해야 하는가?

 

// 와 ~  이건 꼭 알고 싶었던 것이다!!!  책에서  자세히 설명해 준다.

 

1

마이크로 서비스가 적합하지 않은 곳?

새로운 제품이나 스타트업 기업에는 적합하지 않은 선택이다.

작업 중인 도메인은 구축하려는 기본 사항을 반복하면서 토양 엄청난 변화를 겪고 있다.

도메인 모델이 변화하면 서비스 경계가 더 많이 변경되며, 많은 작업 비용이 든다.

 

 

2

마이크로 서비스가 적합한 곳?

더 많은 개발자가  서로 방해하지 않고 동일한 시스템에서 작업하기 위해서다.

아키텍처와 조직의 경계를 올바르게 설정하면 더 많은 사람들이 서로 독립적으로 작업하도록 전달 경합 문제를 줄일 수 있다.

 

// 예전에  모놀리식 아키텍처로 구성된 , 게임 개발 DB를 재 부팅할 일이 있었다.  모두  개발 중이라  합의를 얻어야 했다.

// 작업하는데 50여 명이 모두 디비가 부팅될 때까지 아무 일도 못했다.

// 이 처럼 모놀리식으로 구성되고 하나의 디비로 구성된 경우는 많은 사람이 독립적으로 일할 수 없는 구조가 된다.

 

 

 

1부 기초를 알아보았다.

 

이 외에

 

2부 구현  , 3부  사람에서 많은 인사이트를 제공해 주는 책이다.

 

2023년 개발자가 꼭 봐야 하는 책중 하나로 추천한다.

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

배송료 안내

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

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

닫기

리뷰쓰기

닫기
* 도서명 :
마이크로서비스 아키텍처 구축 (전면 개정판)
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

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

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

오탈자 등록

닫기
* 도서명 :
마이크로서비스 아키텍처 구축 (전면 개정판)
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
마이크로서비스 아키텍처 구축 (전면 개정판)
구입처*
구입일*
부가기호*
부가기호 안내

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

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

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

닫기

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

자료실