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

한빛출판네트워크

마이크로서비스 아키텍처 구축

마이크로서비스 아키텍처 구축

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

한빛미디어

번역서

절판

  • 저자 : 샘 뉴먼
  • 번역 : 정성권
  • 출간 : 2017-03-01
  • 페이지 : 340 쪽
  • ISBN : 9788968483417
  • 물류코드 :2341
  • 개정판정보 :개정판이 새로 출간되었습니다. 개정판 보기
  • 초급 초중급 중급 중고급 고급
4.6점 (18명)
좋아요 : 31

 

마이크로서비스 입문에서 구축과 활용까지! 

 

마이크로서비스는 기존 대용량 시스템의 복잡성과 운영·배포·유지보수의 문제점을 해결할 새로운 대안이다. 이 책은 마이크로서비스 아키텍처를 구축, 관리할 때 고려할 문제와 이에 관한 포괄적 시각과 실용적인 조언을 제공한다. 지속적 통합을 통해 개별 마이크로서비스를 배포하는 과정을 설명하고, 실제로 마이크로서비스를 도입한 기업들의 구체적 사례를 소개한다. 

 

 

주요 내용

  • 마이크로서비스 아키텍처 소개란? 
  • 조직의 목표에 맞게 시스템 설계하기
  • 모놀리식 코드베이스의 점진적 분리 방법
  • 운용 중인 레거시 시스템과 서비스의 통합 방안
  • 지속적 통합으로 개별 마이크로서비스 배포
  • 분산 서비스 테스팅과 모니터링의 복잡성 고찰
  • <사용자-서비스>와 <서비스-서비스> 모델의 보안 관리
  • 마이크로서비스 도입 기업의 구체적 사례
  • 마이크로서비스 아키텍처 확장을 위한 도전

 

 

대상 독자

  • 기업 시스템 아키텍트 및 프로그래머, 프로젝트 관리 담당자
  • 시스템 배포 및 테스팅, 유지 보수에 관심 있는 IT 업계 종사자
  • 대용량 시스템의 효율적 분산 설계에 관심 있는 기업 CEO 및 경영진 

 

undefined

 

샘 뉴먼 저자

샘 뉴먼

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

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

 

정성권 역자

정성권

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

 

1장. 마이크로서비스

__1.1 마이크로서비스란

__1.2 주요 혜택

__1.3 서비스 지향 아키텍처란

__1.4 기타 분해 기술

__1.5 은총알은 없다

__1.6 마치며

 

2장. 진화적 아키텍트

__2.1 부정확한 비교

__2.2 아키텍트에 대한 진화적 관점

__2.3 구역화

__2.4 원칙적인 접근법

__2.5 필수 기준

__2.6 코드를 통한 통제

__2.7 기술 부채

__2.8 예외 처리

__2.9 중앙에서의 거버넌스와 지휘

__2.10 팀 만들기

__2.11 마치며

 

3장. 서비스 모델링하기

__3.1 뮤직코퍼레이션 소개

__3.2 무엇이 좋은 서비스를 만드는가?

__3.3 경계가 있는 콘텍스트

__3.4 비즈니스 능력

__3.5 거북이 밑에 거북이

__3.6 비즈니스 콘셉트 관점에서의 커뮤니케이션

__3.7 기술적 경계

__3.8 마치며

 

4장. 통합

__4.1 이상적인 통합 기술 모색

__4.2 고객과의 인터페이싱

__4.3 공유 데이터베이스

__4.4 동기와 비동기

__4.5 오케스트레이션과 코레오그래피

__4.6 원격 프로시저 호출

__4.7 REST

__4.8 비동기 이벤트 기반의 협업 구현

__4.9 상태 기계로서의 서비스

__4.10 반응형 확장

__4.11 마이크로서비스 세계에서 코드 재사용의 위험과 DRY

__4.12 참조에 의한 접근

__4.13 버전 관리

__4.14 사용자 인터페이스

__4.15 외부 소프트웨어와 통합

__4.16 마치며

 

5장. 모놀리스 분해하기

__5.1 접합부가 중요하다

__5.2 뮤직코퍼레이션 분해하기

__5.3 모놀리스를 분리하는 이유

__5.4 뒤엉킨 의존성

__5.5 데이터베이스

__5.6 문제에 대처하기

__5.7 예: 외부 키 관계 깨뜨리기

__5.8 예: 공유된 정적 데이터

__5.9 예: 공유 데이터

__5.10 예: 공유된 테이블

__5.11 데이터베이스 리팩토링

__5.12 트랜잭션의 경계

__5.13 리포팅

__5.14 리포팅 데이터베이스

__5.15 서비스 호출을 통한 데이터 추출

__5.16 데이터 펌프

__5.17 이벤트 데이터 펌프

__5.18 백업 데이터 펌프

__5.19 실시간을 향해

__5.20 변경 비용

__5.21 원인 파악

__5.22 마치며

 

6장. 배포

__6.1 지속적 통합이란

__6.2 지속적 통합을 마이크로서비스로 매핑하기

__6.3 빌드 파이프라인과 지속적 배포

__6.4 플랫폼별 산출물

__6.5 운영 체제 산출물

__6.6 커스텀 이미지

__6.7 환경

__6.8 서비스 환경 구성

__6.9 서비스와 호스트 매핑

__6.10 자동화

__6.11 물리 머신에서 가상화로

__6.12 배포 인터페이스

__6.13 마치며

 

7장. 테스팅

__7.1 테스트의 종류

__7.2 테스트의 범위

__7.3 서비스 테스트 구현하기

__7.4 까다로운 엔드 투 엔드 테스트

__7.5 엔드 투 엔드 테스팅의 단점

__7.6 신뢰할 수 없고 취약한 테스트

__7.7 스토리가 아닌 테스트 여정

__7.8 우리를 구할 소비자 주도 테스트

__7.9 엔드 투 엔드 테스트를 사용해야 하는가?

__7.10 출시 후의 테스팅

__7.11 교차기능 테스트

__7.12 마치며

 

8장. 모니터링

__8.1 단일 서비스, 단일 서버

__8.2 단일 서비스, 다수 서버

__8.3 다수 서비스, 다수 서버

__8.4 로그, 로그, 더 많은 로그...

__8.5 다수 서비스 간의 측정지표 추적

__8.6 서비스 측정지표

__8.7 합성 모니터링

__8.8 상관관계 ID

__8.9 전파

__8.10 표준화

__8.11 관객 고려하기

__8.12 앞으로

__8.13 마치며

 

9장. 보안

__9.1 인증과 권한부여

__9.2 서비스 대 서비스 인증과 권한부여

__9.3 보관 중인 데이터 보호하기

__9.4 심층 방어

__9.5 시범 예제

__9.6 절약하라

__9.7 인적 요소

__9.8 황금률

__9.9 보안 탑재

__9.10 외부 검증

__9.11 마치며

 

10장. 콘웨이의 법칙과 시스템 설계

__10.1 증거

__10.2 넷플릭스와 아마존

__10.3 이것으로 무엇을 할 수 있을까?

__10.4 의사소통 경로 적응

__10.5 서비스 소유권

__10.6 공유된 서비스의 추진

__10.7 내부 오픈 소스

__10.8 경계가 있는 콘텍스트와 팀 구조

__10.9 방치된 서비스

__10.10 사례 연구: RealEstate.com.au

__10.11 콘웨이의 역법칙

__10.12 사람

__10.13 마치며

 

11장. 대규모 마이크로서비스

__11.1 장애는 어디에서나 발생한다

__11.2 얼마나 많아야 너무 많은 건가?

__11.3 기능 분해

__11.4 아키텍처 안전 조치

__11.5 안티프래질 조직

__11.6 멱등성

__11.7 확장

__11.8 데이터베이스 확장

__11.9 캐싱

__11.10 자동 확장

__11.11 CAP 정리

__11.12 서비스 발견

__11.13 동적 서비스 레지스트리

__11.14 문서화 서비스

__11.15 자기 기술 시스템

__11.16 마치며

 

12장. 종합 정리

__12.1 마이크로서비스의 원칙

__12.2 언제 마이크로서비스를 사용하지 않아야 하는가?

__12.3 이 책을 마치며

마이크로서비스 관련 도서 리뷰


<Building Microservices - 마이크로서비스 아키텍처 구축>

 

책의 구성된 각 부분은 마이크로서비스 구축을 위해 필요한 세부적인 내용들로 구성되어 있습니다.

 

1장 - 마이크로서비스

 

 아직 마이크로서비스가 구체적으로 어떤 것인지 모르는 저와 같은 사람들을 위해 마이크로서비스에 대한 개괄적인 내용들과 더불어 마이크로서비스가 만능은 아니라는 점에 대한 따끔한 이야기까지 다루어주고 있습니다.
즉 마이크로서비스가 규모가 큰 서비스를 잘게 나누어 유지관리를 기민하게 할수 있는 것이기도 하지만 어떤 경우에는 나누지 않느니만 못한 아키텍처가 될수도 있음을 이야기 하는 부분도 있습니다.

 

2장 - 진화적 아키텍트

 

 마이크로서비스의 아키텍처를 정하는데 있어서 원칙과 필수로 필요한 기준들과 필수 요건들을 이야기 하는 부분입니다.

 

3장 - 서비스 모델링하기

 

 마이크로서비스 아케텍처를 만들기 위한 원칙들과 필수적인 선결 요소들을 구성하였다면 실제적인 모델링이 들어가야 하는 법이기에
마이크로서비스를 모델링하는데 필요한 부분인 좋은 서비스를 만드는 데 필요한 것들을 이야기 하고 있습니다.

 

4장 - 통합

 

 마이크로서비스라는 것이 대규모의 서비스를 작게 나누어 구성하는 것이기에 필요한 부분이 바로 통합이 아닐까 합니다.
이 부분에서는 그런 여러개의 서비스를 어떻게 통합할 것인지 고객과의 인터페이싱, 동기와 비동기 방법,
오케스트레이션과 코레오그래피와 같은 방법들을 통해 통합을 이루는 방법들을 구체적으로 살펴보는 부분입니다.

 

5장 - 모놀리스 분해하기

 

 마이크로서비스와 반대되는 개념으로 모놀리식 서비스라는 말이 있는데 이 말은 한덩어리로 구성된 서비스라는 의미입니다.
기존에 이렇게 한덩어리의 서비스로 구성된 아키텍처를 마이크로서비스 아키텍처로 분해하는 방법을 설명하며
일어날 문제에 대한 해결책도 사례를 들어 설명해 주는 부분입니다.

 

6장 - 배포

 

 어떤 서비스이든 수정해야 될 경우가 생기고 그에 따라 기존 서비스를 수정해서 다시 시스템에 배포하는 일이 빈번하게 일어나는 경우도 있기에
쉽게 간과하기 어려운 부분인 배포에 대해서 설명하여 주는 부분이고 여기에는 가상화에 관련된 이야기와
요즘 화두로 오르고 있는 컨테이너에 대한 내용들과 아울러 자동화에 대한 내용도 들어 있습니다.

 

7장 - 테스팅

 

 배포를 한다면 따라오는 내용인 테스팅에 대한 내용입니다.
자동화 테스팅을 이야기하며 테스트의 종류와 배포를 릴리스와 분리하는 내용들을 담고 있습니다.

 

8장 - 모니터링

 

 실 운영환경에 올라간 서비스를 모니터링 하는 것에 대한 내용입니다.
여러가지 운영환경에 따른 모니터링 방법에 대한 내용을 논하면서 모니터링에 필요한 내용들을 담고 있습니다.

 

9장 - 보안

 

 인증과 권한부여에 대한 내용을 비롯해 서비스와 서비스 사이의 인증과 권한부여, 그외에 인증과 권한부여에 필요한 내용들을 예제를 들어 담고 있습니다.

 

10장 - 콘웨이의 법칙과 시스템 설계

 

 마이크로서비스 아키텍처로의 변화는 곧 조직 문화의 변화를 수반하고 있는 작업임을 이 부분에서 이야기 해주고 있습니다.

 

11장 - 대규모 마이크로서비스

 

 어느 경우에는 마이크로서비스로 나눈다 할지라도 그 규모가 생각만큼 작지 않고 큰 경우도 있음을 이야기 하고 있는 부분입니다.
그런 대규모의 마이크로서비스의 경우에 어떻게 구축할 수 있는지를 여러가지 시스템의 예를 들어서 설명하고 있습니다.

 

12장 - 종합 정리

 

 다시한번 책의 전체 내용들을 정리하면서 마이크로서비스의 원칙을 짚고 넘어가면서 언제 마이크로서비스를 사용하지 않아야 하는가를 정리하는 부분입니다.

 

총평 - 전체적으로 요즘 화두가 되고 있는 마이크로서비스의 구축에 대한 실제적인 사례를 들어가면서 설명하여 주는 책입니다.
         물론 이 책 하나로 당장 마이크로서비스를 구축할 수 있다고 보기에는 무리가 있겠지만
         마이크로서비스를 모르는 분이라면 입문용으로는 적합한 책이 아닐까 생각합니다.
         책의 두께도 적당하고 내용도 어느 정도는 마이크로서비스를 알기 원하는 갈급한 사람에게는 단비와 같지 않을까 싶습니다.
         아직 마이크로서비스에 대하여 알지 못하는 분이 계시다면 이 책을 읽어보시기를 추천드립니다.

 

 

이책은 마이크로서비스 아키텍처를 구축할 때 대부분 필요한 부분의 고려사항들에 대해

아웃라인을 그리기 위한 지침을 제공하고 있다. 또한, 마이크로서비스에 익숙하지 않은 독자들에게도 

이를 이해하고 따라할 수 있도록 가이드를 주고 있다. 

단, 마이크로서비스 아키텍처라는 개념 자체가 생소한 독자들에게는 이해가 다소 어려울 수 있으니,

이를 돕기위한 상세한 예제나 구체적인 활용사례를 들어 독자들에게 다가갔으면 하는 건 아쉬운 점으로 남는다.

 

이 책은 마이크로서비스 아키텍처를 전반적으로 돌아볼 수 있는 훌륭한책이라는 느낌을 받았다. 

키워드: MSA, Microservice, Architecture, 마이크로서비스, 한빛미디어, 아키텍처

마이크로서비스 아키텍처(Microservice Architecture)에 대해 처음 들었던 건 2015년 1월로 기억한다. 당시 T아카데미에서 을 들었는데 강사님이 이에 대해 언급을 했던 것으로 기억한다.

MSA를 이해하고자 O’Reilly에서 출간한 Building Microservices를 읽으려고 했지만 당장 필요한 기술이 아니다보니 미루고 미루다 계속 읽지 못했다. 다행이랄까. IT전문서적 출판사인 한빛미디어에서 한빛리더스 과제로 Building Microservices의 번역서인 <마이크로서비스 아키텍처>가 나와 강제로 읽을 수 밖에 없었다.

1. 책의 주제

제목처럼 이 책은 요즘들어 더 주목을 많이 받는 마이크로서비스(Microservice)를 구축하는 방법을 심도있게 다룬다. 단순히 MSA(Microservice Architecture)가 뭔지 설명하는 것에서 멈추는 것이 아니라 아키텍처 정의부터, 아키텍처를 설계하는 아키텍트의 역할 그리고 시스템을 어떻게 통합, 배포, 테스트하는지 등 MSA의 A부터 Z까지 다룬다. 책에서는 뮤직코퍼레이션이라는 가상의 회사를 통해 MSA로 설계하는 방법을 설명한다.

2. 대상독자

이상적으로는 컴퓨터 아키텍처에 관심이 많은 사람이면 실력에 관계없이 도움이 될 것 같다. 다만, 여러 차례 읽어야 저자가 전하고자 하는 MSA 실현을 위한 이론을 본인의 지식으로 내재화 할 수 있다. 현실적으로는 중급 이상의 실력을 갖춘 아키텍트를 꿈꾸는 소프트웨어 엔지니어가 대상 독자라고 생각한다.

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

마이크로서비스(Microservice)는 작고 자율적으로 협업하는 서비스를 말한다. 흔히 소프트웨어를 설계할 때 “응집력(Cohesion)은 높이고 결합력(Coupling)은 낮춰야 한다”고 하는데 이러한 소프트웨어 공학의 원리를 적용한 서비스가 바로 마이크로서비스(Microservice)다. 만약 어떤 시스템이 ‘다른 변경 없이 특정 서비스만 변경하고 배포할 수 있다’면 그 시스템은 커플링이 없는 시스템이라 할 수 있다.

좋은 마이크로서비스의 핵심 원칙 강한 응집력 느슨한 결합력이다. – 4부 통합, 79쪽

이와 반대 되는 개념의 아키텍처는 모놀리식(Monolithic) 시스템이다. 이러한 시스템은 하나의 변경으로 전체 시스템이 재빌드가 되어야 한다. 또한, 하나의 장애로 전체 시스템이 먹통이 될 수 있는 구조를 갖고 있다. 아래 그림은 Martin Fowler의 블로그에서 가져온 그림인데 두 시스템을 잘 비교하고 있어서 인용했다.

Source: https://martinfowler.com/articles/microservices.html

4. 이 책이 좋았던 점

우선 이 책의 평점을 매기자면 5점 만점에 4.5점을 주고 싶다. 이유는 다음과 같다.

첫째, 마이크로서비스의 전체 생명주기를 잘 설명해서 이해에 큰 도움이 되었다. 과거에는 MSA로 서비스를 만들려면 코드와 DB 등을 분리하면 되겠구나라고 막연하게 생각했다면 이 책을 읽고 나서는 코드, DB 뿐만 아니라 CI(Continuous Integration)/CD(Continuous Delivery), 테스트 자동화, 통합된 모니터링, 보안, 복구 등 개발부터 운영까지 전 영역을 고려해야 함을 배울 수 있었다.

둘째, 친절한 각주가 책을 읽는 데 큰 도움이 되었다. 만약 같은 내용을 영어로 읽었다면 이해하지 못할 내용이 많았다. 이는 해석이 되지 않아서가 아니라 여러 가지 기술 및 경제 용어를 저자가 친절하게 각주로 설명을 했기 때문이다. 저자의 설명 덕분에 책을 더 집중해서 읽을 수 있었다.

셋째, 이론으로 끝내지 않고 실전에 사용할 수 있는 도구를 소개해서 앞으로 나아갈 방향을 알 수 있었다. 책을 읽으면 MSA가 결코 은총알(만능도구)이 아니라는 것을 알 수 있다. 오히려 책을 읽으면 읽을수록 ‘이론은 알겠는데 현실에 어떻게 적용하지?’ 라는 고민이 늘어났다. 저자는 이에 대한 해결책으로 구글(Google), 넷플릭스(Netflix), REA(호주 부동산 업체) 등의 사례와 각종 오픈 도구를 소개함으로써 이론을 현실에 적용할 수 있는 방법을 소개한다. 비록 각 도구의 실제 사용법에 대해서는 세세히 다루지 않았지만 각 도구를 어떠한 식으로 활용할 수 있는지 소개한다.

넷째, 참고할 수 있는 문서, 영상, 도서가 많다. 근래 읽었던 기술 서적 중 참고자료가 가장 많은 도서였다. 어떻게 보면 MSA가 간단한 주제가 아니라는 것을 반증하는 것 같다. 이 책을 읽으면서 내가 어떤 도서를 봐야 MSA를 구축하는데 필요한 지식을 얻을 수 있을지 파악할 수 있었다.

다섯째, 인간의 중요성을 강조한다는 점이다. 저자는 책에서 수 차례 인간적인 요소를 강조한다. 기술을 배우면 배울수록 그리고 자신이 좋아하면 좋아할수록 기술 너머에 사람이 있음을 종종 잊는 것 같다. 저자는 사람의 중요성을 계속 강조하는데 이 점이 참 마음에 들었다.

필자는 소프트웨어는 훌륭한 사람에 의해 만들어지는 것이라고 굳게 믿고 있다. 만약 여러분이 이 방정식에서 기술적인 측면만 걱정한다면 전체 그림의 절반 이상을 놓치게 된다. – 2부 진화적 아키텍트, 60쪽

보안을 잘 다룬다는 것은 대개 사람을 잘 이해하고 사람이 시스템과 일하는 방식을 잘 이해하는 것이다. 마이크로서비스에 관해 우리가 아직 논의하지 않은 인간적인 요소와 연관된 측면 중 하나는 조직 구조와 아키텍처 자체 사이의 상호작용이다. 보안과 마찬가지로 인간적인 요소를 무시하는 것은 중대한 실수가 될 수 있음을 알게 될 것이다. – 9장 보안, 260쪽

5. 이 책의 아쉬웠던 점

이 책의 아쉬웠던 점은 MSA의 국내 사례가 소개되지 않는다는 점이다. 번역서라도 국내 사례를 소개했다면 책의 설득력이 더 올라갈 수 있었을 것 같다. 이 리뷰를 작성하는 본인은 금융공기업에 재직중인데 MSA가 아무리 좋아도 이를 성공적으로 활용하는 곳이 없다면 리스크가 크다고 생각하여 도전하지 않는 게 본인이 일하는 곳의 리더십들이기 때문이다.

또한, MSA를 실습할 수 있는 파트가 전혀 없다는 점도 아쉽다. 아주 간단한 서비스라도 함께 실습하며 실제로 만들 수 있는 예제가 있었다면 훨씬 더 좋은 책이 될 수 있지 않았을까? 하나의 책이 이론과 실습 등 모든 것을 망라하는 것은 어렵겠지만 실습이 전혀 없었던 것이 아쉬웠던 것은 사실이다.

6. 총평

이 책은 ICBM(IoT, Cloud Computing, Big Data, Mobile)과 AI(Artificial Intelligence) 시대에 사는 우리에게 과거의 Monolithic 시스템에서 작은 서비스들의 집합인 Microservice 시스템으로 옮겨가야 한다고 주장한다.

변화는 불가피하다. 그냥 받아들여라. – 12장 종합 정리, 329쪽

만약 본인이 시스템 아키텍처에 관심이 많아서 공부를 하고 싶다면 이 책은 매우 적합한 책이라고 생각한다. 비록 실습할 수 있는 코드는 없지만 이 책을 읽으면 MSA를 많이 다뤄본 저자로부터 기술적인 측면, 관리적인 측면 그리고 인간적인 측면까지 아우르는 따뜻한 조언을 얻을 수 있기 때문이다.

훌륭한 소프트웨어 개발자 혹은 아키텍처가 되려면 기술도 잘 알아야 하지만 사람도 잘 알아야 하는 것 같다. 결국 일은 사람이 하기 때문이다. 그래서일까? 경험이 많은 저자는 사람의 중요성을 계속해서 강조함으로써 독자가 기술만능주의에 빠지지 않도록 수 차례 강조한다. 사람의 중요성을 강조하는 저자의 글로 이번 한빛리더스 서평을 마무리하고자 한다.

비록 이 책이 전반적으로 기술을 다루고 있지만 사람도 반드시 고려해야 한다. 왜냐하면 현재를 만들었고 미래를 만드는 주체가 바로 사람이기 때문이다. 현 직원의 비전에 대한 생각을 고려하지 않거나 그들이 지닌 능력에 대한 고려 없이 일을 어떻게 완료하는지에 관한 비전만 생각하면 대개 나쁜 곳으로 빠지기 쉽다. – 10장 콘웨이의 법칙과 시스템 설계, 274쪽

추신. 책에 대한 상세한 설명은 <한빛미디어 공식 http://www.hanbit.co.kr/store/books/look.php?p_code=B8584207882&tid=review홈페이지> 에서 확인하실 수 있습니다.

17.03.31(금)

마이크로서비스 아키텍처..
이게 뭔가 했네... 

 

 

 

프로그램 책인데, 코드 없는 책이라니..

 

이상하게 이미지가 업로드가 안되어.. ㅠ.ㅠ

 

http://blog.naver.com/city0311/220972111379

 

마이크로서비스에 대해서 침대에서 부담없이 읽을 수 있는 책입니다.

 

 

 

 

 


 

 

마이크로서비스 아키텍처 구축 책

내게 꼭 필요한 책이 나왔다고 생각했다. 실무에서 마이크로서비스 아키텍처를 사용하고 있지만 기저에 있는 이론이라던가 모범사례 또는 쉽게 빠지는 함정들에 대해서는 알지 못하고 있었다. 모놀리식 아키텍처는 수백명에 달하는 개발 조직의 커밋을 바로바로 수용하여 실제 제품에 적용하고 테스트 한 뒤 배포하는 데에 적절하지 않다. 그래서 서비스를 각 팀이 나눠서 개발하고 배포한다. 여기까지가 내가 아는 전부이다. 책에서는 마이크로서비스 아키텍처의 장점, 단점에서 시작하여 개발 원칙, 팀 구성, 배포, 모니터링, 보안 등 여러 방면에 걸쳐 고려할 사항들을 설명하고 있다.

마이크로서비스 아키텍처 구축 장점1. 레퍼런스가 풍부하다

1장은 도입부라고 할 수 있는데, 각주가 많이 달려 있었다. 간단히 용어에 대해 설명하는 것부터 관련된 링크까지 다양하게 있다. 레퍼런스가 다양하게 있으니 모두 꼼꼼하게 읽는다면 책의 내용을 더 잘 이해할 수 있을 것이다. 그런데 솔직히 너무 많아서 양에 압도당했다. 나중에(개발자가 나중에 한다고 하면 안한다는 말일수도 있지만) 한 권씩 읽어야 겠다.

마이크로서비스가 모든 것을 해결해 주지 않는다! 책에서 가장 중요한 구절 중 하나라고 생각한다. 어떤 기술이든 장단점이 있으니 우리에게 적합한지 살펴본 뒤에 적용해야 할 것이다. 관련하여 재미있는 글이 있으니 관심 있으신 분은 링크 참조.

마이크로서비스 아키텍처 구축 장점2. 많은 깨달음을 얻었다

비록 내공이 부족해서 책의 내용을 100% 흡수하진 못하였지만 많이 배웠다. 콘웨이의 법칙, 기술 프로세스 관점이 아니라 비즈니스 관점에서 팀 나누기, 높은 응집성, 낮은 결합도, Blue/Green, 카나리아 등 너무 많다. 테스트, 모니터링 쪽은 말할 것도 없다. 그렇지만 ‘장애는 어디에서나 발생한다’는 말이 가장 와닿았다. 소프트웨어 장애, 네트워크 장애, 하드웨어 장애 등 마이크로서비스 아키텍처에서 염두에 둬야할 요소들이 많다는 것을 제대로 깨달았다. 넷플릭스나 구글에서 시행하는 장애 복구 테스트나 유인원 부대같은 것을 우리 회사에도 도입할 수 있을지 궁금하다. 또, 깨알같지만 AWS에서 EC2 인스턴스를 생성하고 테스트를 위해 일부 인스턴스를 종료시켰는데 다시 살아나서 테스트를 못한 경험이 있다. 그런데 그 사례가 AWS의 Failover전략 때문에 그런 것이라고 언급해서 깜짝 놀랐다.

웹 개발에 입문한지 거의 1년이 다 되어 가는 내게 이 책은 솔직히 좀 어려웠다. 한빛미디어에서 대상 독자를 중고급으로 매겨놨는데, 고급이어도 상관없을 것 같다. 아키텍처에 관한 책이라 코드는 없다. 대신에 다이어그램이 여러번 등장한다. 대규모 분산시스템을 개발해보신 분들이나 현재 아키텍트로서 마이크로서비스 개발을 이끌고 있을 분들이라면 읽으면서 무릎을 탁 칠 내용들이 정말 많은 듯 하다. 반면에 나 같은 주니어 개발자, 톱니바퀴라고 느끼는 개발자들이 읽으면 상투적이지만 나무를 보다 숲을 보는 느낌을 가질 수 있을 거라고 생각한다. 덧붙여, 오탈자를 거의 찾아볼 수 없을 정도로 편집이 잘 됐고 번역도 매끄럽게 잘 됐으니 원서보다 번역판을 추천한다.

#마이크로서비스 #마이크로서비스 아키텍처 구축 #대용량 시스템 구축 #마이크로서비스 책 추천


서론

작년 겨울 이직 하기 전 회사에서 Micro Service Architecture(MSA)는 핫이슈였다.도메인 로직이 뭉쳐진 신(God)같은 프로젝트가 있었고 그걸 MSA로 쪼개려고 방법을 강구하고 있었다.나도 쪼갠다는 것에는 당연히 동의를 했지만, 속으로 곰곰히 생각해보니 진짜 너무나도 어려웠다.DB를 중심으로 의존이 거미줄처럼 복잡했기 때문이다. 과연 그걸 쪼개는 것이 가능하긴 한건지 의문이었다.

나는 이직을 했고 이제는 새로운 코드에서 이 문제를 고민하고 있다.어디든 정도의 차이는 (크게) 있지만 서비스가 모노리틱 하게 성장하기 때문이다.
그러던 중에 이 책을 읽게 되었고 MSA의 허와 실을 확인할 수 있었다.좀 더 나아가서 최근에 관심을 가지고 있는 화두들(DDD, Rx 등) 간의 연결고리를 조금 알게 되었다.

이 책은 나에게 좀 많이 어려웠다. 소프트웨어 아키텍처 관련한 많은 단어들이 나에게는 생소하거나 대충아는 단어였기 때문이다.그래도 너무 고마운 책이다. 나에게 이쪽 세상을 알게해줬다. 모든 개발자들에게 일독을 권한다.

MicroService에 대한 간단한 짧은 견해

이 책을 읽고 두가지 크게 느낀 점이 있다.

첫번째는 경계가 있는 컨텍스트(Bounded Context)를 뽑아내야한다는 것이다.그 경계를 기준으로 응집도를 높이고 경계에 명백한 인터페이스를 정의해야 한다.이렇게 격리된 컨텍스트들이 마이크로 서비스가 될 것이다.소프트웨어에서 제일 중요한 것은 변화에 대응하는 것이고 그 해결책은 격리이다.

두번째는 영속성 레이어(흔히 DB)에 대한 개념을 바꿔야한다는 것이다.이직하고 팀의 백앤드 개발자분과 이와 관련하여 이야기를 나눴다. 그분은 나에게 이렇게 말씀해주셨다."DB는 단순히 데이터를 저장하는 곳이다."만약 DB가 대부분의 비즈니스 로직을 수행하고 모든 서비스들이 이를 의존한다면 DB의 변경은 그를 의존하고 있는 모든 서비스에 영향을 준다.정석대로 이야기하면 영향을 받는 모든 부분의 회귀테스트를 해야한다는 뜻이다. 경험상 이는 불가능에 가깝다.그냥 사고 안나길 바라는 수밖에 없다.MSA로 전환하고 싶어도 의존성을 분석하고 Bounded Context에 맞게 테이블을 재설계하는데 엄청난 비용이 들것이다.

잔소리를 조금만 더하자면 DB SQL 또는 프로시저를 만드는 PL/SQL은 프로그래밍 언어라고 하기에는 표현력이 부족하다.즉, 조금만 복잡해지면 보기가 너무 어렵다. 우리의 시간을 그 코드를 이해하는데 보내기에는 시간이 너무 아깝다.

몇번 더 읽어보면 더 많은 것을 느낄 수 있을 것 같다.

간단한 4L 회고

Liked

  • 책의 페이지수가 340p로 얇고 읽기 좋다.
  • 저자의 직접 경험을 담고 있다. 실용적인 예제와 설명이 많다.
  • 옮긴이의 주석에 해당 내용이 관련된 블로그 글을 링크하고 있어서 보충설명이 좋다.
  • 예제가 쇼핑몰이라 좀 편하다.
  • 왠지 참고문헌들이 너무 좋은 책들 인것 같아서 꼭 읽어보고 싶다.

Learned

  • 우리 업계에서 아키텍트의 역할에 대해서 조금 알게되었다.
  • 내가 몰랐던 소프트웨어 아키텍처 관련해서 많은 용어들을 배웠다.
  • 앞으로 공부해야할 것들을 제시해 주었다.
  • 외부 서비스(상용 소프트웨어, SaaS)도 마치 외부 라이브러리를 wrapping해서 사용하듯 파사드(Facade)서비스로 추상화 해서 사용할 수 있으며, 이를 통해 의존성 문제를 해결할 수 있다.
  • 코드의 중복 제거를 위해서 공유 라이브러리를 사용하는 것은 심각한 의존성 문제를 초래할 수 있다.
  • 큰 의미의 아키텍처 원칙(principle)을 정하고 각 팀의 상화에 맞게 실천 사항(practice)를 만들어 현실적으로 지킬 수 있게 해야한다.
  • Rx(Reactive Extension)는 마이크로 서비스 같은 분산 서비스와 궁합이 잘 맞다. 그런데 진짜 잘 맞는지는 좀 해봐야 할 것 같다.

Lacked

  • 가끔 이해하기 어려운 문장들이 나오지만 큰 문제는 아니다.

Longed for

  • 실제 모노리틱 서비스 코드와 그를 분해한 모노리틱 서비스의 코드가 있었으면 좋겠다.

더 읽어보고 싶어지는 책

  • Enterprise Integration Pattern
  • Working Effectively with Legacy Code
  • Refactoring Database
  • Domain-Driven Design

본 포스팅은 한빛리더스 14기로서 해당 책을 제공받아 작성한 솔직한 후기입니다.

대용량 시스템의 미래 : 마이크로 서비스 아키텍처

작고, 한 가지 일을 잘하는데 주력

  책을 받고나서 목차를 살펴봤다. 가장 강하게 나를 끌어당기는 문장이 바로 "작고, 한 가지 일을 잘하는데 주력"이다. 개발을 할때도 이런 말을 들어본적이 있다.  단일 책임의 원칙(객체 지향 프로그래밍에서 단일 책임 원칙이란 모든 클래스는 하나 책임만 가진다.)이라는  SOLID규칙의 하나다. 하나의 서비스를 봤을때도 이런 원칙은 비슷하게 적용될 수 있는 것 같다. 하나의 서비스는 하나의 책임만 가지다. 이런 시선으로 바라볼때 우리의 서비스는 너무 많은 기능과 책임을 가지고 있다. 이런 모놀리스식 시스템의 문제를 해결하고자 나온 분석, 설계 기법이 마이크로 서비스 아키텍처이다. 

 이 책은 마이크로 서비스의 아키텍처를 사례를 들어 설명하고있다. 그런데 그 사례라는 것이 중요하다. 사용자의 요구사항을 처음부터 분석/설계하는 것이 아닌 기존의 모놀리스식 시스템을 분석/재설계하는 예를 보여주고 있다. 시스템을 최초 구축할 때 이런 것들을 고려하여 구축하는게 좋은 설계인지는 모르겠다. 하지만 현재 운영하는 시스템이 너무 비대해져 재설계를 해야할 경우는 충분히 고려해볼만 한 사항이다. 특히나 아마존 웹서비스와 같은 클라우드를 통한 스케일아웃이 간편해진 이때 마이크로서비스 아키텍처는 좋은 대안이라고 생각된다 


방법과 방향을 제시

3챕터- 서비스 모델링하기, 4챕터- 통합, 5챕터- 모놀리스분해- 6챕터- 배포, 7챕터- 테스팅, 8챕터- 모니터링, 9챕터- 보안, 10챕터- 시스템설계

3챕터 부터 실질적인 분석/설계, 배포 및 사후 관리까지 이어지는 실로 엄청난 이야기들을 한다. 사실 한 챕터로 다루기엔 그내용이 어머어마 하다. 한 챕터가 한권의 책으로 나와도 이상하지 않다. 이책은 세세한 기술을 적용하는 기술서적 이라기보다 마이크로 서비스 아키텍처에 관한 이론서이다. 그래서 각 챕터는 포괄적이고도 광범위한 내용을 다루고 있다. 이런 광범위한 내용은 마이크로서비스의 방향을 제시하고 있다. 읽다보면 이런 느낌이 든다. '이거 내가 해봤는데 이렇게 하면 좋아.' 그래서 신뢰가 간다. 또한 특정 오픈소스나 서비스들을 거론 하면서 방법 또한 이야기 해주고 있다. 사실 컴알못인 나는 손에 잡히지 않는 이야기들이 많았지만 그럼에도 불구하고 알만한 오픈소스들의 등장으로 추측은 가능했다. 


컴알못 나의 생각

'마이크로서비스 아키텍처 구축'은 제목 만큼이나 분명한 난이도가 있는 책이다. 그렇다고 꼭 시니어개발자나, PM, 시스템 아키텍터 만 읽을 책은 아니다. 나같은 컴알못 주니어도 읽어두면 큰 도움이된다. 주니어 개발자라면 ͛어보듯이 읽어보길 권한다. 대략적인 이론만 파악을 하라는 것이다. 개발자의 업무가 언듯 분명하게 나뉘어 있는 것 같지만 사실 그 경계가 모호하다. 그런의미에서 지금당장은 쓸모없을 지라도, 다양한 분야의 책을 읽어 두는 것이 좋다. 나는 이 책을 여러번 ͛어읽기를 추천한다.

이 책을 추천하고 싶은 사람

시스템 아키텍터

체계적인 서비스를 개발하고자 하며 이를 위한 환경 구축에 관한 정보를 얻고 싶은 사람

마이크로서비스 경험이 있으며 마이크로서비스 전반에 관하여 더 명확한 정보와 인사이트를 원하는 사람

IT 서비스 기획자 (1~3챕터의 입문 파트 한정)

 

이 책을 추천하고 싶지 않은 사람

주니어 개발자 ()

 

Summary

 

'마이크로서비스 입문, 구축, 활용까지 한 권에'라는 표현으로 소개된 이 책은 말 그대로 마이크로서비스 아키텍처에 관한 개론서라 할 수 있습니다.

마이크로서비스 그리고 아키텍트에 관한 기본적인 이론부터 (1~3 챕터)

통합, 기존의 모놀리스식 단일 덩어리 서비스 분해를 통한 구축(4~5 챕터)

배포(CI), 테스팅(유닛 테스트, end to end), 모니터링, 보안 (6~9 챕터)

심화 (10~12 챕터)

4 파트로 구분할 수 있는 이 책은 IT 전문서로서 상당히 얇아 보이는 외관에도 불구하고 정말 많은 내용을 담고 있습니다. 많은 오렐리 책들이 그러하지만, 선택적 독서에 매우 유리한 구성을 하고 있으며 내용적으로도 충분한 사전 지식만 있다면 굳이 순차적으로 읽을 필요 없이 자신의 필요에 따라 읽기 좋은 책입니다. 읽고자 하는 챕터가 무슨 내용인지 빠르며 요약적으로 보고 싶다면 모든 챕터 마지막에 있는 '마치며'부분을 살펴보시길 바랍니다. 모든 챕터에 있는 '마치며'부분은 해당 챕터의 내용을 쉽고 요약적으로 정리해 제시해주기에 각각의 챕터를 읽기 전에 이 '마치며'를 먼저 읽고 챕터를 읽는 것도 좋은 독서 방법이 될 것 같습니다. 그리고 각 챕터의 '마무리'에 이어 12챕터의 종합 정리에 이르기까지 정리와 마무리가 매우 좋은 책이라 할 수 있습니다.

광범위한 내용을 담고 있으며, 정말 많은 주석을 가지고 있지만, 설계라는 수준 높은 개발 분야를 담고 있다는 점에서 상당한 경험과 충분한 사전 지식이 필요로 하는 책입니다. 저의 경우에 입문, 구축의 내용까지는 충분히 이해하며 읽어나갈 수 있었으나 배포, 테스팅에 들어가면서부터는 이해에 정말 많은 노력이 필요했었습니다.

한빛 미디어의 소개 페이지를 보면 상당히 아기자기하며 귀여운 이미지가 연상되지만, 저는 뭐랄까 되게 뛰어난 교수님을 만나 뵙고 온 느낌이었습니다.

 

 

마이크로서비스 구축1.jpg

 

위의 소개 사진은 매우 아기자기하지만, 실제 내용은 표지처럼 현실적이며, 잔혹합니다 ㅠ

 

 

Why


서적은 한빛 미디어 리더스 활동의 일환으로 한빛 미디어로부터 제공받게 되었습니다. 여러 서적 중 이 책을 고른 이유는 지난 개발자 커뮤니티 데이에서 '마이크로서비스로 구축하는 채팅서비스'라는 세션을 통해 처음 접했을 때 느꼈던 좌절감을 극복하기 위함이었습니다. (그리고 얻게 된 또 다른 좌절)

 

Content

저자인 샘 뉴먼은 경험 있는 아키텍트로서 마이크로서비스에 관하여 명확하며 확정적인 관점으로 자신의 지식을 풀어나갑니다. 명확하게 장단점을 분리해 제시하거나, 원리 원칙을 선행적으로 제시하며 이를 위한 지침을 제안하기도 합니다. 작가의 서술 방식에 있어서의 가장 큰 장점은 문제 제시를 명확하게 하며 그에 대한 자신의 답변 또한 매우 확정적이며 명확하다는 것입니다. 그리고 챕터마다 저자의 끝을 알 수 없는 지식과 경험의 깊이를 느낄 수 있기에 그의 답변에 대한 신뢰도 또한 매우 높습니다. 안타까운 점은 아무래도 압축적으로 제안하기 때문에 설명이 제한적이며, 여러 부분에서 상당한 지식과 경험이 가정되었다는 점입니다. 여기에 번역투 문장으로 인해서 이해를 위해 많은 노력과 집중이 필요했습니다.

 

1~3챕터는 입문 파트로 마이크로서비스, 아키텍트, 서비스에 기본적 지식과 소개가 주를 이룹니다.

1챕터의 마이크로서비스의 철학과 특징, 장점과 단점이 소개됩니다.

2챕터는 아키텍트와 아키텍처에 관한 내용으로 저에게는 꽤나 특이했으며 인상 깊었던 챕터였습니다. 개발에 입문한지 얼마 되지 않았고 모바일 앱 수준의 개발만 하던 저는 아직 아키텍처나 아키텍트에 관한 직접적 경험이 없습니다. 본 챕터를 통해서 일종의 상상의 동물처럼 느껴지는 아키텍트에 관하여 살펴보는 좋은 경험을 할 수 있었습니다. 이 챕터에서 'Trade Off'라는 단어가 매우 강조되었고 전체 책에서 제가 가장 핵심적인 단어로 꼽고 싶은 단어이기도 합니다. 'Trade Off''기회의 비용' 정도로 표현하면 좋을 것 같습니다. 어떠한 선택에 따라 발생하는 비용(단점, 손실 등)으로 매우 당연한 이야기이지만 개인적으로는 개발 시 그렇게 고려해보지 못했던 부분이었습니다.

3챕터는 서비스에 관한 내용으로 소비자에게 제공되는 것으로 보면 좋을 것 같습니다. 여기서 소비자란 고객뿐만 아니라 어떠한 기능을 사용하는 존재로서 전체 서비스 내 다른 구성요소 또한 기능을 사용한다면 소비자라 할 수 있습니다. 3챕터를 읽어가면서 계속 떠올랐던 단어는 '객체지향'이었습니다. 직접적으로 나오는 단어는 아니지만 좋은 서비스의 조건인 '느슨한 결합, 강한 응집력''좋은 객체지향'의 조건과 유사했기 때문입니다.

입문 파트는 개인적으로 읽어감에 있어서 큰 어려움은 없었습니다. TradeOff와 같은 깨달음을 얻기도 하였으며 여러 부분에서 많은 공감과 함께 매우 재밌게 읽어 나갔습니다. 이 부분은 개발자뿐만 아니라 어느 정도의 개발 지식이 있는 기획자분들이 읽어도 상당히 좋을 것 같습니다.

 

4~5챕터는 실질적인 마이크로 서비스 구축에 관한 내용입니다. 통합과 기존 모놀리스식 서비스 분리 두 주제가 각각의 챕터를 담당하고 있습니다.

통합을 주제로 하는 4챕터는 마이크로서비스가 '느슨한 결합, 강한 응집력'을 특징으로 하는 독립적인 서비스로 구현되는 만큼 서비스와 서비스 간의 연결점, '통신'이 강조되었습니다. 이어 버전관리와 직접적으로 고객과 이어진 사용자 인터페이스 서드파티와의 통합으로 내용이 구성됩니다. 아무래도 저는 사용자 인터페이스와 관련된 부분이 가장 흥미로웠습니다. 현재 Node.js로 백엔드도 공부하는 상황과도 맞 떨어지면서 매우 집중도 있게 읽었습니다. 당시 읽어나갈 때 '이 기회를 통해 느슨하게 결합과 강한 응집력을 기본으로 한 좋은 서비스를 구현해보자!'라고 생각을 했는데 결론적으로 저자는 '섣부른 분리의 추가 비용'을 경고하며 '모놀리스식 구현 후 분리'라는 방법을 통한 마이크로서비스 구축을 추천하며 저를 말렸습니다.

5챕터의 모놀리스 분해는 실제로 구현 작동하는 하나의 거대한 서비스를 어떠한 기준으로 분리하여 마이크로서비스를 구축하는 방법을 제시합니다. 특히 분리 기준과 요령을 비교적 명확하게 제시해줍니다. 이 부분부터는 개인적인 경험과 지식 부족으로 점차 이해와 공감에 있어서 어려움이 발생하기 시작했습니다....

 

6~9챕터는 구축을 넘어서 배포, 테스트, 모니터링, 보안과 같은 활용에 관한 내용으로 구성되어있습니다. 전체적으로 다양한 기술 스택을 넓게 다루는데 초점이 맞춰져 있었습니다. 아무래도 개론서이기에 깊이 있는 구현보다는 실행에 있어서의 포인트와 주의사항이 주요 요소였습니다.

최근 개발에 있어서 테스트에 많은 관심을 갖고 있었기에 챕터 7은 매우 주의 깊게 읽었으며 다른 파트에 비해 이해하기 수월했습니다. 테스트의 종류 구분부터 시작하여 테스트 구성에 있어서의 주의사항 그리고 해결책으로서의 소비자 주도 테스트를 제시하고 있습니다.

챕터 4부터 9까지는 실제 구현과 관련된 내용들로서 실제 서비스, 스택과 관련한 용어가 매우 많이 나옵니다. 충분한 사전적 지식이 부족한 저로서는 읽어나감에 있어서 많은 애로사항들이 있었습니다.

 

10~12챕터는 일종의 '부록'과 같았습니다. 콘웨이 법칙과 사례 제시, 대규모 마이크로 서비스(앞의 내용이 대규모가 아니었다니...) , 마지막으로 종합 정리로 마무리됩니다. 개인적으로 챕터 12의 종합 정리 부분은 매우 활용도가 좋은 부분이라 생각이 됩니다. 이 책이 스스로가 찾는 책인지 확인하기에도 좋은 파트이며, 책을 읽은 후 방대한 내용을 정리하기에도 매우 좋은 파트라고 생각합니다. 책이 정말 많은 내용을 다루는 만큼 독자가 내용을 정리할 수 있는 기회가 매우 중요한데, 각 챕터별로 있는 마무리 파트부터 책 마지막의 마무리까지 매우 만족도 있는 정리가 있어 좋았습니다.

 

Conclusion

 

 

저에게 이 책은 '읽는 시점에 따라 보이는 것이 바뀔 책'이란 측면에서 '꽃들에게 희망을'과 같은 책이었습니다. 지금의 제가 이 책으로 얻은 것은 '마이크로 서비스에 대한 입문적 지식', '아키텍트','Trade off', 그리고 '개발자로서의 미숙함과 한계 그리고 부끄러움'이었습니다. 뭔가 기술 지식서를 읽고 자기계발서와 같은 느낌을 얻게 된 것이 이상하긴 하지만...그런책이었습니다. 책은 상당히 얇고, 별도의 소스코드도 없기에 처음에 꽤나 가벼운 마음으로 읽기를 시작했으나 장을 넘어갈수록 특히 입문에 해당하는 3장을 넘어가면서 매 페이지마다 스스로의 한계를 느끼게 되었습니다. 마이크로서비스에 관한 책이며 여러 아키텍처와 관련한 교훈과 CI, 테스트에 관한 지식들도 얻을 수 있었지만, 저에게 남는 가장 큰 인상, 교훈은 '나의 한계'였던 책입니다.

 

1년 뒤 그리고 가능하다면 3년 뒤 다시 읽어보려 합니다.

 

 

 

 

 

 

  내가 마이크로 서비스 라는 말을 처음 들었던 것은 재작년이었던 것 같다. 회사에서 업무 때문에 처음 접하게 되었던 이 용어는 좀처럼 이해하기가 쉽지 않았다. 그리고 마이크로 서비스라는것 자체가 아직은 먼 이야기라고 생각이 되었다. 그때만 해도 "말이 쉽지. 이게 되겠어?" 라는 의심이 더 컸던것 같다. 하지만 최근에는 많은 서비스 들이 기존의 물리적 인프라 위에서 서비스를 제공하는게 아니라 클라우드 상에서 서비스를 제공하는 일이 많아 지면서 마이크로 서비스 아키텍처라는게 더 힘을 받고 있는것 같다.  

 

마이크로서비스

 

마이크로서비스란 작고 자율적으로 협업하는 서비스를 의미한다.

 

  단어의 뜻 자체는 그렇게 어렵지 않다. 말 그대로 "Mirco(작은단위)" + "Service",  작은 단위의 서비스를 말한다. 각각의 서비스들은 하나의 독립된 주체이며 전체는 각각의 서비스들의 집합라고 생각하면 될것 같다. 하지만 이렇게 시스템을 구성하기에는 그렇게 쉬운 일은 아니다. 이 책에서는 이렇게 쉽지 않은 마이크로서비스 아키텍처에 대해서 알아야할 이론적인 내용에 대해서 설명해주고 있다. 마이크로 서비스에 대한 정의부터 시작해서 모델링, 통합, 분해, 배포, 테스팅, 모니터링, 보안에 이르기 까지 전체적인 그림을 그릴 수 있는 내용을 담고 있다. 

 

  많은 내용을 담고 있지만 그중에서도 몇가지 눈여겨 본 대목을 뽑아봤다. 

 

0002.jpg

 

  하나의 시스템을 설계 하는데에 아키텍트의 역할은 정말 중요하다. 위에 글처럼 아키텍트가 결정한 방향의 파급력은 프로젝트 내에서 정말 어마어마 하다. 방향 한번 잘못잡았다가 프로젝트가 산으로 가는 경우도 정말 많다. 그만큼 아키텍트는 의사결정에 있어서 신중해야 하고 많은 것들을 고려해야 하는 역할을 가졌다. 그리고 설계와 함께 개발에 대해서도 어느정도 이해를 하고 있어야 한다. 수채화를 그리는데 밑그림만 다 그렸다고 그림이 완성된것은 아니다. 밑그림 위에 알맞은 색깔을 칠한 후에야 그림이 완성되는 것이다. 그렇기 때문에 아키텍트가 그린 그림을 구현하는 개발 담당자들과의 협업이 그만 큼 중요하다. 가끔 이 역할 관계가 갑을관계처럼 엮이는 경우가 있다. 아키텍트가 설계를 하면 마치 그것이 마치 불변의 법인것 처럼 행동하고 잘못된것을 지적하거나 의문점을 제시하면 받아들이지 않는 사람들이 있다.  그리고 프로젝트의 인프라와 기간, 인력등을 고려하지 않고 이상만을 추구해서 설계를 하는 아키텍트들도 있다. 그리고 나서 안되면 개발자를 탓한다. 이런 상황을 겪어보다 보니 위에 나온 내용을 읽으면서 절로 고개가 끄덕여 졌다. 

 

 

0003.jpg

 

  마이크로서비스 아키텍처 상에서는 각각의 기능들이 서로 다른 기능들을 이용하기 위해서는 통신을 해야 한다. 그렇다 보니 서비스간 호출에 대한 정의도 해야하고 보안 또한 중요하다. 아무래도 내부 호출보다는 외부 프로토콜을 이용한 호출이다보니 보안에 취약할 수 밖에 없다. 취약하다기 보다는 더 신경을 써야 한다. 서비스에 대한 호출이 정당한지, 아니면 권한과 역할에 대한 정보를 제대로 가지고 있는지 확인해야 할 정보들이 많다. 그래서 게이트웨이를 쓰고 인증토큰을 발행하고 정보를 암호화 하는 절차들이 필요하다. 전체적인 아키텍처 그림이 위하고 항상 같을수는 없지만 기본적인 틀은 아마 비슷할 것이라고 생각이 된다. 

  나도 현재 마이크로서비스로 구성하지는 않았지만 비슷하게 서비스를 구성하면서 보안에 관련된 검증을 받았었다. 생각지도 않은 곳에서 사용자 정보가 노출이 되고 쉽게 다른 사람의 정보를 수정/삭제 할수 있다는 것을 직접 체험을 했고 그것을 보완하면서 많은 것을 배웠다. 아마도 저 그림이 눈에 들어온 것은 그것때문이었던것 같다. 

 

  마이크로서비스 아키텍처는 실버불릿은 아니다.

 

  항상 모든것은 지나치면 오히려 독이 된다. 마이크로서비스가 최근들어 주목을 받고 있긴 하지만 모든 곳에 다 적용할 수 있는 만능은 아니다. 오히려 모놀리스 아키텍처의 구조를 가져가는게 더 알맞은 프로젝트들도 있다. 무작정 하게 되면 오히려 독이 될 수 있다. 마이크로서비스 아키텍처를 적용하기 위해서는 이 구조가 가진 장점들을 잘 살리고 단점들을 잘 보완 할 수 있는 설계를 할 수 있어야 하고 많은 것들을 고려해야 한다. 

 

  책을 읽으면서 대학교 전공 서적같은 느낌이 들었다. 지금은 번역서를 읽어서 그렇지만 영문 원서였으면 아마도 예전에 대학다닐때 운영체제 전공과목을 들었을 때와 더 비슷한 느낌이 들었을것 같다. 그만큼 많은 내용이 담겨 있고 어려운 내용들이다. 단순히 한권의 책을 읽었다고 해서 마스터 될 영역은 분명 아니다. 하지만 각각의 포인트에서 생각해야 할 점들을 잘 설명해주고있다. 좀 아쉬운점은 번역서이다 보니 번역투의 표현들이 눈에 띄었다. 약간은 매끄럽지 않다고나 할가. 그리고 설명에 대한 그림들이 좀 부족한것 같다. 글로 설명하기가 어려운 내용들을 그림으로 표현해서 설명을 했을때 이해가 더 쉽듯이 책에서 설명하고 있는 내용들을 좀더 그림으로 풀어줬으면 더 좋았을 것 같다는 생각이 들었다. 

 

근래에 소프트웨어 아키텍처를 논할 때 항상 화자 되는 녀석이 바로 '마이크로 서비스 아키텍처'이다. 기존의 제품을 만들기 위한 모든 기술을 통일시켜 하나의 거대한 소프트웨어를 만드는 '모놀로식(Monolothic) 아키텍처' 방식에서 벗어나, 도메인의 경계를 나눠서 서비스를 분리하고, 프로젝트 표준 기술을 따르기보다는 각 서비스에 가장 적절한 기술을 선정하여 개발을 한 뒤, 서비스 조각들을 각각의 소프트웨어로 독립적으로 배포하는 개념이 '마이크로서비스 아키텍처'이다. 그리고 이는 단지 독립적인 기술 선정을 떠나서, 한 서비스의 장애 전파를 방지하거나, 소스 코드가 변경이 되었을 때 배포의 단위를 최소로 줄여서 사고가 날 확률을 줄인다거나, 개발팀의 크기를 서비스 모듈의 크기와 동일시하여 하나의 제품에 대한 오너십을 온전히 가진 개발팀을 운영하는 등의 장점을 가지고 있다.

 

2년 전쯤인가, 마이크로서비스 아키텍처를 상세하게 서술한 책을 구매하고 싶었다. 그 당시에 한국에는 그렇다 할 책이 없어서 결국 해외 원서를 구매했건만, 시간이 흘러도 당최 읽어지지가 않더라. 그런데, 최근에 반가운 소식이 들려왔다. 본 책이 번역되어 출판이 되었다는 것이다. 그리고 "한빛 리더스"라는 활동으로 해당 책의 리뷰를 하게 되는 기회를 잡게 되었다.

"마이크로서비스 아키텍처 구축" 원서와 번역서

 

책은 전반적으로 마이크로서비스 아키텍처를 구축하기 위해 알아야 할 기본 지식들을 소개하고 있으며, 필자가 경험한 사례들을 적절하게 공유하고 있다. 단, 코드 레벨의 상세한 적용 방법은 담고 있지 않아서, 이 책을 보고 무언가를 직접 실습하는 용도로는 적절하지 않다. 다시 말하면, 어느 정도 경험 및 백그라운드 지식이 있고, 책에 있는 오픈 소스들을 직접 인터넷에서 찾아서 영문 가이드를 읽을 수 있는 수준이라면, 이 책은 좋은 가이드가 될 수 있다고 본다.

 

이 책은 마이크로서비스 아키텍처의 핵심이 객체 지향 프로그래밍을 할 때 항상 이야기하는 "높은 응집도, 낮은 결합력"에 있다고 말하고 있다. 도메인 상의 경계를 잘 구분하여 서로 간의 의존성을 제거하여 수정이 필요할 때 관련 있는 최소 단위의 서비스만을 수정하여 재배포하여, 혹시라도 발생할 수 있는 장애 상황이 다른 서비스로 전파되는 것을 차단하고 빠른 개발 라이프사이클을 유지할 수 있게 한다.

느슨한 결합과 강한 응집력

 

책을 읽다 보니, 여러 서비스의 통합 관점에서 필자가 채택하고 있는 방식은 대부분 모놀리식에서 마이크로서비스로 전환하기 위한 초보 단계에 있다는 것을 알았다. 하지만, 이 방식을 책에서 제시하는 가장 성숙도가 높은 방식을 적용해보려고 하니, 과연 그럴만한 가치가 있는지 고민이 되기 시작한다.

하나의 마이크로서비스 통합 사례

 

마이크로서비스 아키텍처의 장점을 택하기 위해서는 모놀리식보다 훨씬 복잡한 전략이 필요하다. 가령, 서비스 간의 통신을 위하여 어떤 기술을 선택할 것인지, 이러한 서비스가 동적으로 확장이 되었을 때 어떻게 실시간으로 해당 사항을 인지할 수 있는지, 장애가 발생했을 때 어떤 서비스에서 장애가 났는지 쉽게 트러블슈팅을 하기 위해서 해야 할 작업들, 또한 배포 및 설정, 테스트 등이 최대한 자동화가 되어야 하기 때문에 발생하는 비용들.. 무엇이든 실제 상황에서는 들어가는 비용과 효과를 잘 파악하여 적당한 수준을 유지하고, 단계적으로 개선해 나가는 것이 무척 중요해 보인다.

 

책에서 설명하는 마이크로서비스의 원칙을 정리하자면 아래와 같다.

마이크로서비스의 원칙

 

그리고 책의 아쉬운 점 하나를 꼽자면, 아무래도 번역서이다 보니 간혹 해석 자체가 어색한 곳이 간혹 눈에 밟혔다. 필자도 책을 번역하면서 느낀 것이지만, 원서 날것의 느낌을 한글로 옮기는 것이 굉장히 어려울 때가 많았던 것 같다. 원서 필자의 말투도 한몫했을 것이다. 이 점은 감안하고 읽었으면 한다. 대신, 번역만으로 부족한 단어들이나 내용들은 역자분이 최선을 다해서 각주를 달아 놓았다. 이러한 부분들도 책을 이해하는데 큰 도움을 준다.

상세한 각주

 

만약 본인이 어느 정도 소프트웨어 개발 프로젝트를 경험했고, 아키텍처를 고민하고 구현까지 가능한 수준이라면, 최신 트렌드를 인지하는 수준에서 반드시 읽어야 할 필독서라고 생각한다. 그리고, 각 사례에서 언급하는 오픈소스 기술들을 하나하나씩 찾아가 보자. 책의 내용만 가지고는 깊이 이해하기 힘든 부분이 있으나, 어느 방향으로 가야 할지에 대해서는 명확하게 제시하고 있어 충분히 흥미로운 기술들을 알아가는데 도움이 된다.

다양한 시나리오 기반 아키텍처

 

이 책을 읽다 보니, "마이크로서비스 아키텍처 실습"과 같은 Hands-on 기반의 책도 출간되면 좋지 않을까 하는 생각이 든다. 필자도 관련 경험을 쌓아서 소개하는 글을 쓰는 날이 왔으면 좋겠다.

 

오랜만에 좋은 기술서를 필독/완독 할 수 있었다. :)

 

* 본 리뷰는 "한빛미디어"의 지원으로 작서되었습니다.

아주 오랜만에 도서 리뷰를 진행하게 되었습니다. 최근 바쁘다는 핑계로 책은 열심히 읽지만, 도서 리뷰 등을 작성하지 못했는데, 최근에 높은 관심을 보이는 Microservice 분야의 책이 출간되어 참여하게 되었습니다. 리뷰를 진행하기에 앞서 리뷰에 참여하게 도와주신 한빛미디어 관계자님께 감사의 말씀을 전합니다.

 

마이크로서비스란?

최근에 IT 업계에서 가장 빈번히 언급되는 단어 중 하나가 마이크로서비스(Microservices)입니다. 마이크로서비스는 무엇일까요? 마이크로서비스는 작고 자율적으로 협업하는 서비스를 의미하며, 일반적인 아키텍처 구조(설계 구조)뿐만 아니라, 구축 방식과 운영에 이르는 포괄적인 내용을 함축하고 있습니다.

마이크로서비스에 대해 더 자세한 내용을 알고 싶으신 분은 다음 링크의 글을 확인하시면 도움이 될 것입니다.

 

- Rahul Lanje: What is Microservice Architecture [링크]

- Shamik Mitra: Why Microservices? [링크]

- Hosang Jeon: 마이크로서비스 아키텍처. 그것이 뭣이 중헌디? [링크]

 

왜 마이크로서비스에 관심이 많을까?

최근에 마이크로서비스에 관한 관심이 증가하고 있는 이유는 무엇일까요? 마이크로서비스에 대한 여러 아티클을 읽어보면, 대표적으로 다음과 같은 이유로 마이크로서비스에 대한 관심이 증가하고 있음을 요약할 수 있습니다. 

 

- 클라우드 환경 도래

- 복잡한 비즈니스 로직

- 기존 모놀리틱 구조의 한계

 

이 외에도 여러 이유가 있겠지만, 마이크로서비스가 가진 장점이 현대의 개발 프로세스와 비즈니스 로직에 적합하게 적용할 수 있는 것도 하나의 이유가 될 것입니다. 

 

이 책에서 다루는 내용은?

필자는 평소에 책을 읽을 때, 머리말과 1장을 중요하게 생각합니다. 

머리말은 저자의 생각에 대해 이해할 수 있고, 책이 만들어지게 된 동기와 과정을 엿볼 수 있으며, 전체 구조를 개념적으로 파악할 수 있습니다(1장은 책의 주제에 대한 개괄적인 설명들이 담겨 있습니다).  

 

일반적으로 1장에서 소개한 내용을 기반으로 전체적으로 책을 작성해 나갑니다만, 이 책은 1장과 2장의 내용을 조합하여 전체 구조를 소개합니다. 마이크로서비스에 대한 개념을 소개하는 1장과 아키텍트의 역할에 대해 설명하는 2장을 할애하는데, 이 두 장을 이용하여 <마이크로서비스 아키텍처 구축>의 전체 청사진을 그려냅니다.

 

<마이크로서비스 아키텍처 구축>은 마이크로서비스를 구축할 때, 기본적으로 지녀야 할 지식들을 소개합니다. 그 지식을 기반으로 기존 시스템 구조(대표적인 구조가 모놀리식(Monolithic) 스타일입니다)에서 마이크로서비스로 이전하는 과정을 설명하며, 저자가 마이크로서비스로 이전하면서 겪었던 다양한 사례를 추가하여 독자의 이해를 돕습니다(물론 이 분야에 대한 경험이 전혀 없으면, 이해하기 어려울 것 같습니다). 

 

처음 시작할 때는 새로운 시스템을 모놀로식한 쪽으로 유지하라. 서비스 경계를 잘못 정하면 큰 비용이 들게 되므로 새로운 도메인 영역에 익숙해져서 안정화될 때까지 기다리는 것이 현명하다.

 

...

 

시스템을 마이크로서비스로 성급하게 분리하면 막대한 비용이 소요될 수 있다. 특히 도메인에 대한 경험이 없다면 더더욱 그렇다. 여러모로 기존 코드베이스를 마이크로서비스로 분해하는 것이 처음부터 마이크로서비스로 가는 것보다 훨씬 쉽다.

 

Building Microservices: Designing Fine-Grained Systems

 

<마이크로서비스 아키텍처 구축>에서 소개하는 내용은 매우 다양합니다. 하지만 이 세계의 기술은 매우 빠른 속도로 변하고, 하루에도 최신 논문들과 기술들이 소개되고 있습니다. <마이크로서비스 아키텍처 구축>에서 마이크로서비스를 만들어 나가는 데 필요한 세부적인 기술에 대한 설명(각 분야에 필요한 기술은 다양하게 소개하고 있습니다. 심지어 제가 처음 들어본 기술도 몇 가지 있었습니다)과 구현 방법을 찾아볼 수는 없습니다. 

 

이 책에서는 특정 기술보다 마이크로서비스의 개념과 사상에 집중하려 노력했다. 그럼에도 불구하고 싶자는 여러분이 향후 몇 년 안에 마이크로서비스가 어디에 적합하고, 어떻게 잘 사용할 수 있는지에 대해 더 많이 배울 것으로 기대한다. 

 

...

 

만약 이 주제에 대해 더 많은 관심이 있다면 최고의 기술 수준을 유지하도록 수년간 지속적인 학습을 하라!

 

Building Microservices: Designing Fine-Grained Systems

 

마이크로서비스는 앞으로 발전해 나갈 것이고, 지금보다 훨씬 더 친근하게 우리와 함께 할 것입니다. 

 

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

 

마치면서...

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

 

필자가 개인적으로 진행하는 프로젝트에서 기존 모놀리틱 구조로 설계된 시스템을 마이크로서비스 구조로 변경하고 있습니다. 이 과정에서 많은 고민과 학습을 했었는데, <마이크로서비스 아키텍처 구축>에서 고민했던 내용의 모범답안과 필자가 놓쳤었던 부분을 비롯하여 기본적으로 학습해야 할 내용이 주제별로 정리(이 책은 학습할 주제들을 소개하고 있습니다. 이 책만으로 MSA를 완벽히 이해하는 것은 불가능합니다)되어 있습니다. 앞으로 학습해야 할 내용을 정리할 수 있었던 점도 매력적이었습니다.

 

<마이크로서비스 아키텍처 구축>은 저자가 마이크로서비스 아키텍처를 구축하며 얻은 지혜를 잘 녹여내고, 역자가 그것을 아주 매끄럽게 전달하는 책입니다. 저자가 발표한 내용을 공유하고 있는데, 다음 링크의 자료를 참조해서 마이크로서비스에 대해 학습하는 데 도움이 될 것 같습니다. 필자가 이 책을 조금 더 일찍 만났더라면, 조금 더 빨리 마이크로서비스와 친해졌을 것 같습니다.

 

마지막으로 다음 링크에서 마이크로서비스 아키텍처 구축이라는 내용으로 유용한 글을 연재하고 있습니다. 마이크로서비스에 관해 관심 있으신 분은 방문하여 꼭 읽어보세요.

마이크로서비스 아키텍처 구축.png

저자의 다양한 경험과 다독의 흔적을 쫓아가는 것만으로 많은 도움이 될 것 같습니다.


잘 알려진 서비스에서 어떻게 마이크로서비스를 사용하고 있는지 살짝 보여주는 재미가 있습니다. 그곳은 이렇게 생겼으며 이런 재미난 일들을 벌이고 있다며, 쉽게 접하기 힘든 경험담을 풀어놓고 있습니다.



구성은 세부분으로 나눌 수 있습니다.

첫번째는 마이크로서비스의 특징과 아키텍트를 설명하고, 서비스 모델링과 통합기술들의 특징을 얘기하고 있습니다.

두번째는 일체형 시스템인 모노리스를 분해, 배포, 테스팅, 모니터링 하는 방법을 설명하고 있습니다.

세번째는 보안, 설계, 대규모 마이크로서비스에 어떻게 적용하는지 알려주고 있습니다.

마지막장에서 종합정리하고 있습니다.

 

많은 것이 자동화 되어 있는 개발환경이 아니면 아주 힘든 일이 될 것이라고 주의를 주고 있습니다만, 현실은 … 부족하기만 합니다. 그래도 맞닥뜨릴 상황들을 알려주며 각 상황에서 사용할 수 있는 도구도 챙겨주고 있습니다.



기존 시스템이나 코드를 분석하면서 한번쯤 생각해 보았던 문제를 만나는 반가움에, 경험부족으로 미처 생각하지 못했던 부분까지 포함하여, 실제로 어떻게 구현되었으며 진화하고 있는지 얘기하고 있습니다.


키워드는 '경계가 있는 콘텍스트'.

[도메인 주도 설계]를 읽으라는 얘기입니다.


프로젝트 리더나 매니저의 경험을 느낄 수 있습니다.

내용을 풀어가다보면 흥미롭거나 좀 더 깊이 파고들었으면 하는 부분이 나옵니다. 그럴때면 어김없이 그건 뒤에 얘기해 두었으니 궁금해도 참아달라고 하며 내용의 흐름을 벗어나지 않습니다. 지금 얘기에 집중하고 한눈 팔지 말라고 다잡습니다.



사람마다 다를 수 있겠지만, 제가 읽기에는 어려운 번역입니다.

우리말을 이상하게 사용하고 있습니다.

'여러 애플리케이션 컨테이너를 사용 것은 단점이 많기 때문에 정말로 필요한지 스스로 확인해야 한다고 필자의 생각은 확고하다.'

오타가 아닙니다. 책에 있는 내용을 그대로 옮겨 놓았습니다.

곳곳에서 만나게 되는 이런 표현이 제대로 집중을 방해합니다.

읽는 내내 많이 아쉬워했던 부분입니다.

 

 

이 책에서는 서비스를 잘 구축하기 위한 방법으로 마이크로서비스에 대해 이야기하고 있다. 최근 트렌드라고 불리는 마이크로서비스는 넷플릭스 등 많은 업체들이 선호하는 방법이다. 

 

이 책에서는 설계, 개발, 배포, 모니터링, 조직 운영에 대해서 이야기 하고 있다. 책의 내용은 코드가 있진 않다. 하지만 개념을 공부하는데 큰 도움이 될 것이다. 필자는 처음부터 도메인에 대한 지식이 많지 않은 상태에서 마이크로서비스를 도입하겠다고 생각하지 말라고 한다. 그 이유는 너무 잘개 쪼개면서 더 많은 비용을 발생할 수 있다는 것이다. 그러면서 모놀리식에서 점진적으로 분해하여 마이크로서비스 도입을 추천하고 있다. 물론 도메인지식이 풍부하다면 마이크로서비스를 도입하여 진행하면 더더욱 좋을 것이다. 마이크로서비스 도입하기 전에 한 번 읽어보면 큰 도움이 될 것이다.

 

설계부터 테스트, 모니터링까지 전반적인 내용을 다루기 때문에 마이크로서비스를 공부해보고자 했을 때 큰 도움이 될 것이다. 하지만 책에서 이야기하는 부분은 이상적인 부분이지 현실적인 부분에서 모든 부분을 다 소화하기 어려울 수도 있다. (현실적인 국내 조직인 경우 마이크로서비스를 잘 다루기 어려운 조직이 존재할 수도 있다.)

 

마이크로서비스를 도입하기 위해 준비하는 분들에게 추천한다. 

 

제목을 보면 "마이크로서비스"라는 생소한 단어가 포함되어 있는데 이 책의 정의에 따르면 마이크로서비스란 "작고 자율적으로 협업하는 서비스"를 의미합니다. 즉, 이 책은 전체 시스템을 자율적으로 협업하는 조그마한 서비스들로 나누어 구축하는 방법에 대해 설명하고 있습니다. 각 마이크로서비스들은 각각 별도의 독립된 프로세스 상에서 동작하며 서로 간의 모든 통신은 네트워크 호출을 통해 이루어집니다.

 

마이크로서비스 구조를 적용하게 되면 다음의 혜택을 얻을 수 있습니다.

- 기술 이기종성: 각 마이크로서비스들은 자신 만의 최적의 기술을 선택할 수 있습니다.

- 회복성: 한 서비스에서 장애가 발생하더라도 전체 서비스로 장애가 전파되지 않도록 차단할 수 있습니다.

- 확장성: 필요한 서비스만 확장이 용이합니다.

- 배포 용이성: 작은 서비스로 분리되어 있는 경우 나머지 시스템과 독립적으로 한 서비스만 변경하여 배포가 용이합니다. 배포 시 문제가 발생하더라도 해당 서비스만 복구하면 되기 때문에 해당 문제를 쉽게 격리할 수 있습니다.

- 조직 부합성: 시스템 아키텍처를 조직의 구조에 맞추어 변경하기가 쉽기 때문에 생산성이 증가됩니다.

- 조합성: 서비스가 작게 분리되어 있기 때문에 재사용성이 향상됩니다.

- 대체 가능성을 위한 최적화: 각 서비스들의 크기가 작기 때문에 나중에 서비스를 재작성하거나 제거하기가 쉽습니다.

즉, 마이크로서비스 구조를 적용함으로써 나중에 새로운 기능이 추가되거나 요구 사항이 변경되어도 쉽게 수정 및 배포가 가능한 시스템을 만들 수 있습니다.

 

저자는 마이크로서비스 구조 시스템을 개발하면서 단계별로 고려해야할 중요 사항들과 빠지기 쉬운 함정들을 실제 예제와 그림 등의 부가 자료를 통해 명료하게 설명합니다.

- 1장 마이크로서비스

- 2장 아키텍트의 역할

- 3장 서비스 모델링하기

- 4장 통합

- 5장 모놀리스 분리하기

- 6장 배포

- 7장 테스팅
- 8장 모니터링
- 9장 보안
- 10장 콘웨이의 법칙과 시스템 설계
- 11장 대규모 마이크로서비스
- 12장 종합 정리
 
[ 결론 ]
소프트웨어 공학과 관련된 전문 용어도 많고 시스템 아키텍처와 관련된 광범위한 내용들이 포함되어 있다보니 쉽게 이해하고 넘어가기 편한 책은 아니었습니다. 그리고 번역서이다 보니 일부 영어 번역이 어색하거나 이해하기 난해한 부분도 있었고 몇 군데 오타나 단어가 누락된 부분도 확인할 수 있었습니다. 하지만 대부분의 번역은 이해하기에 큰 어려움이 없었으며 역자분이 별도로 추가 설명을 달아주신 덕에 전문 용어와 신기술을 이해하는데 많은 도움을 받을 수 있었습니다.

 

이 책은 아키텍트라면 지속적으로 진화 가능한 아키텍처 설계를 위해 옆에 두고 꾸준히 참고해야할 도서라고 생각합니다. 그리고 단순 개발자에서 벗어나 아키텍트로 성장하기를 원하시는 분들께도 새로운 안목과 통찰을 얻는데 많은 도움이 될 것으로 확신합니다.

< 이 책은 한빛 미디어로부터 책을 지원받아 작성된 글입니다.>


 

 

[ 책소개 ]

 

마이크로서비스 입문에서 구축과 활용까지! 

 

마이크로서비스는 기존 대용량 시스템의 복잡성과 운영·배포·유지보수의 문제점을 해결할 새로운 대안이다. 이 책은 마이크로서비스 아키텍처를 구축, 관리할 때 고려할 문제와 이에 관한 포괄적 시각과 실용적인 조언을 제공한다. 지속적 통합을 통해 개별 마이크로서비스를 배포하는 과정을 설명하고, 실제로 마이크로서비스를 도입한 기업들의 구체적 사례를 소개한다. 

 

 

주요 내용

  • 마이크로서비스 아키텍처 소개란? 
  • 조직의 목표에 맞게 시스템 설계하기
  • 모놀리식 코드베이스의 점진적 분리 방법
  • 운용 중인 레거시 시스템과 서비스의 통합 방안
  • 지속적 통합으로 개별 마이크로서비스 배포
  • 분산 서비스 테스팅과 모니터링의 복잡성 고찰
  • <사용자-서비스>와 <서비스-서비스> 모델의 보안 관리
  • 마이크로서비스 도입 기업의 구체적 사례
  • 마이크로서비스 아키텍처 확장을 위한 도전
자세한 내용 : 한빛미디어 공식사이트( http://www.hanbit.co.kr/store/books/look.php?p_code=B8584207882 )

 

 

 

"이론만 가득하다"

 

 마이크로서비스 아키텍쳐가 무엇인지를 공부하기 위해서 선택한 책이었다. 내용을 보기 전에 이론보다는 실습이 많았으면 했었지만 막상 책을 열고보니 이론만 가득한 책이다. 책 표지 뒤를 보면 '입문에서 구축과 활용까지!!' 라고 되어있지만 실상은 그렇지 않다. 꼭 참고 하면 좋을 것 같다.

 

책을 펴기 전 마이크로서비스 아키텍처에 대해 검색해보았다. 

 

대규모 소프트웨어 개발에 적용하기 위한 것으로 단독으로 실행 가능하고 독립적으로 배치될 수 있는 작은 단위(모듈)로 기능을 분해하여 서비스하는 아키텍쳐 

- 네이버 IT용어사전

책에서는 마이크로서비스란 작고 자율적으로 협업하는 서비스를 의미한다고 했다. 

즉, 서비스 단위를 가장 작은 단위로 분할하여 세분화하는 것이라 생각할 수 있을 것 같다.

 

사람의 몸으로 예를 들면, 팔, 다리, 머리, 몸 이렇게 부분을 나눠서 단위단위로 작업을 하는 것을 의미하는 것 같다.

저자는 그 기준을 '2주에 재작성할 수 있는 크기'라고 표현했는데 그렇다면 2주마다 재작성하라고 하면 토나올 듯하다.

 

 

"결함"

 

 책을 읽다가 마음에 드는 부분에 형광펜을 사용했다. 포스팃으로 표시도 해보고.

그 정도로 가볍게 읽을 수 있는 책은 아니었다. 컴퓨터공학을 전공하고 있지만 마이크로서비스에 대한 개념이 아무것도 없다면 읽기 힘든 책이다. 비전공자에게는 더욱 어려운 책이 될 것이다. 그 중 처음으로 들어온 문장은 '결함을 없애지 않고는 모든 것이 소용없어진다.' 라는 문장이었다. SW를 개발함에 있어서 모든 개발자들이 결함을 없애기 위해 많은 시간과 노력을 투자를 한다. 그렇기 때문에 더욱 와닿은 문장이었던 것 같다. 자랑스럽게 프로그램 개발이 완료되었다고 생각한 프로그램에서 결함이 발견 되었을 때의 기분이 아직도 생생하다. 오래만에 낮술이 땡겼다. 

 

 

 

 

"어느 한 곳에서 좋은시민이 다른 곳에서도 반드시 그런 것은 아니다"

 

어떤 의미인지 한번 다시 생각해보고 싶어서 색으로 칠해놓고 포스트잇을 붙여놓았다. 앞에서도 말했지만 책 내용 자체가 초보자, 입문자에게 쉬운 책의 내용은 아니었다. 그래서 처음 읽을 때는 가볍게 읽었고, 두 번을 읽을 때에는 집중해서 읽었보았다. 그래도 이해가 잘 안된다. 마이크로서비스에 관심이 있던 사람도 아니었고, 언어나 운영체제를 기반으로 개발에 대한 공부를 해왔기 때문에 이런 이론들에 약한 것일 지도 모른다. '어느 한 곳에서 좋은 시민이 다른 곳에서도 반드시 그런 것은 아니다.' 라는 문장의 의미를 내 나름대로 생각하는데 시간이 조금 필요했다. 우리 나라에서 좋은 시민이 다른 나라에서 좋은 시민일거라는 보장이 없다고도 해석 해보았고, 'A라는 프로그램에는 H라는 모듈이 정말 좋게 작용했지만, B라는 프로그램과 H모듈은 역효과를 내는 것이다.' 라고 해석도 했다. 책 내용을 모두 다 이해하려고 하기보다는 내 나름대로 이해하는게 더 빠를 것 같았다.

 

 

 

"마치며"

 

 책 내용이 어려워서 그런걸 필자도 아는 것인지 장마다 맨 마지막에 간략한 정리를 해주었다. 너무 어려운 내용들이 앞에 가득하기 때문에 뒤에 나오는 '마치며' 부분은 가뭄에 단비같은 느낌이다. '아! 이런 내용들이었구나.'라고 간략하게 정리할 수 있는 부분이라서 너무 좋았다. 

 

 

 

"현재를 만들었고 미래를 만드는 주체가 바로 사람이기 때문이다."

 

 

10장에 나오는 내용이다. 사람에 대해서 나온다. '현재를 만들었고 미래를 만드는 주체가 바로 사람이기 때문이다.' 그렇기 때문에 사람을 조심해야하고 사람을 믿어야하고, 모든 것이 사람이 중심이다. 그냥 의미없는 문장일수도 있지만 많은 생각이 드는 문장이다. 아무리 일이 힘들어도 사람이 좋은 직장에서는 오래 일을 할 수 있을 것 같고, 일이 쉬워도 사람이 좋지 않은 직장에서는 일을 오래 하지 못할 것 같다. 물론 일도 힘들고 사람도 힘들면 최악이지만. 

 

 

 

 [ 마무리 ]

 

 

 책에서는 전반적으로 마이크로아키텍쳐에 대한 이론을 다루고 있다. 여러부분의 개념적인 요소를 다루고 있기 때문에 어렵고 지루할 수 밖에 없는 책이다. 영어로 된 원서를 번역한 책이기 때문에 용어가 많이 나오는 편이고, 용어 위에 영어 단어가 써있는 것을 많이 볼 수 있다. 모르는 용어를 검색해보며 책을 읽으면 3개월 정도 혹은 그보다 많은 시간을 투자해서 책을 읽어야 할 것 같다. 

 

 입문자보다는 어느 정도 경력이 있는 개발자가 보기에 좋은 책이라고 생각된다.

 

디자인    ★☆☆☆☆  : 환 공포증 걸릴뻔.. 벌집... 후

내용       ★★★☆☆

난이도    ★★★★★

 

 

#한빛미디어#마이크로서비스#마이크로서비스아키텍처#아키텍처

마이크로서비스 아키텍처는 작년에 처음 접한 것 같다. 요새는 너무 많은 것들이 쏟아져 나오기 때문에 어느 하나 정확하게 개념을 파악하기란 쉽지 않다.


그때는 추상적인 관점에서 개념을 익히는 수준의 지식만을 파악했었다. 작은 서비스이며, 기술적인 수평 계층보다는 비즈니스 관점에서의 수직적인 경계로 서비스를 나눈다는 사실과 SOA의 하위 영역이라는 것들이다. 그 외에 간단한 패턴 정도만 봤던 기억이 있다.


“마이크로서비스 아키텍처 구축 – Building Microservices”라는 이 책을 선택한 이유는 마이크로서비스에 대해 좀 더 깊이 있는 지식을 얻고 실제적인 구현 방향을 제시 받고 싶어서 였다.


“1장 마이크로서비스” 으로 부터 정리 편인 “12장 종합정리” 이 책은 모두 12장으로 구성되어 있다. 1장과 2장의 경우는 마이크로서비스 정의, 특성, 혜택 및 단점등을 서술하고 있다. 1,2장을 잘 읽어보면, 이 책이 일관성 있으며, 필요한 기술이나 지식을 체계적으로 서술하고 있다는 것을 금방 알 수 있다.


1장의 내용을 간략하게 정리해 보면, 마이크로서비스는 충분히 작아서 더 이상 작아질 수 없는 크기를 가지는 단일책임원칙(SRP)에 입각해야 하며, 시스템 내 다른 서비스와 독립적으로 운영되고 변경할 수 있는 “자율성”이라는 특성을 가져야 한다. 잘 구현한 마이크로서비스 아키텍처는 여러가지 혜택을 얻을 수 있는데, 기술이기종성, 회복성, 확정성, 배포용이성, 조직부합성, 조합성, 대체 가능성을 위한 최적화 등이다. 앞에 이야기한 혜택은 잘 만들어진 구조의 마이크로서비스 시스템일 경우이고 “은총알은 없다”는 유명한 격언을 인용하며 마이크로서비스의 단점에 대해서 이야기하고 있다. 사실 이 단점이란 것이 너무나도 중대해서 마이크로서비스의 다른 혜택을 모두 무효화 할 수 있을 정도이기 때문에 이 책에서는 이 단점들을 극복할 수 있는 아키텍처나 패턴, 방안들을 제시하고 있다고 보는 게 좋다.

 

2장에서는 진화적인 아키텍트라는 관점에서 아키텍트의 역할과 책임을 기술하고 있는데, 개인적으로 공감가는 내용이다. 마이크로서비스 설계 원칙에는 구역화(ZONE)를 다루는데 이 것은 이후 서비스 경계와 비슷한 개념으로 구역간의 표준화된 통신 프로토콜을 강조한다. 원칙적인 접근법에는 전챡적인 목표와 잘 작동하는 애플리케이션 작동 원칙을 다른다,  또한 좋은 마이크로서비스 필수 기준 등도 제시한다. 추상적인 내용이지만, 많은 것을 생각하게 하는 내용들이다.

 

1-2장을 읽고 이후 내용을 읽어보면 앞 두 장의 내용을 바탕으로 서술되어 있다는 것을 알 수 있다.

마이크로서비스는 단일책임원칙에 따른 경계가 있는 컨텍스트 위주로 시스템을 구분하기 때문에 하나의 모놀리식 시스템을 분해하면 다수의 마이크로서비스 가 생성되게 되고 이는 지속적인 통합(CI-Continuous Integration), 지속적인 배포(CD-Continuous Deployment), 테스팅, 보안등의 문제를 유발하게 된다. 이 책에서는 이런 문제를 해결할 수 있는 여러 방안들과 패턴, 기술 프레임워크 등을 제시하고 있다. 여기에 기술한 내용들은 마이크로서비스 아키텍처 구현에만 국한되지 않고 다양하게 적용할 수 있는 내용인 것 같다. 마이크로서비스 구축후의 관리비용의 선형 증가를 막기 위한 모니터링에 대한 내용도 기술되어 있다.

이 책은 마이크로서비스 시스템의 코딩을 통한 구현보다는 아키텍처 설계에 대한 이론과 원칙을 주로 다루고 있다. 또한 물리적인 구성이나 마이크로서비스 개발과 운영을 잘 할 수 있는 여러 오프 소스 기반의 기술들을 설명하고 있다.

 

따라서 마이크로서비스를 잘 운영하려면 상당한 환경 구축 지식과 해당 분야 기술 및 프레임워크를 사용할 수 있는 역량이 있어야 할 것으로 생각된다. 마이크로서비스는 소규모 시스템이 대상이라기 보다는 대용량 분산 환경에 맞춰진 아키텍처인 것 같다. 따라서 가상화나 클라우드 시스템에 탑재되어 사용할 때 적합한 기술인 것 같다.

 

아직 가상화나 클라우드, 이 책에서 언급하고 있는 각종 기술들에 대한 지식이 별로 없어 책을 완벽하게 이해할 수 없었고 더욱 열심히 공부해야겠다는 오기가 생기가 한 책이다. 책 내용에 대한 이해는 70~80% 정도 였는데, 여기에는 세부기술에 대한 이해 부족과 내용 중에서 번역이 이해가 되지 않는 경우로 나눌 수 있다. 대부분은 기술 이해 부족이지만, 번역 과정에서 문맥이 이상한 부분도 상당한 것으로 판단된다. 아마 너무 번역을 매끄럽게 하려고 한 것이 독이 되지 않았을까하는 생각이다.

 

글을 잘 적는 것은 아니지만, 157 페이지 마지막 문장, "특정 마이크로서비스에 대한 어떤 테스트가 수행되어야 하는지 언제든지 알 수 있도록 테스트는 마이크로서비스 소스 코드가 있는 소스 컨트롤 시스템에 있어야 한다." 라는 문장이 있는데 너무 길고 금방 이해가 안된다. 개인적으로 이렇게 바꾸면 더 쉽지 않을까 하는 생각해 보는데 "특정한 마이크로서비스에 대한 테스트는 소스컨트롤에 소스 코드와 같이 있어야 한다. 이는 특정한 서비스에 대한 테스트가 실행되는 것을 항상 인지하도록 하기 위해서이다." 처럼 두 문장으로 나눠주었으면 더 이해가 쉽지 않았을까 한다.

전반적으로 마이크로서비스 아키텍처 구축에 대한 전반적인 내용을 익히기에는 좋은 책이나, 마이크로서비스 아키텍처에 관심있는 입문자라면 “대용량 아키텍처와 성능 튜닝, 조대협”을 한 번쯤 읽고 접한다면 도움이 될 듯하다. 아키텍처나 패턴에 어느 정도 익숙한 분이라면 읽어볼 만한 책으로 추천한다.

안녕하세요 :)

 

오늘 리뷰를 진행할 도서는 요즘 좀 핫한 키워드인 "마이크로 서비스"를 다루고 있는 책인 마이크로서비스 아키텍처 구축 이라는 도서 입니다.



책 표지에서 볼 수 있다시피, 전문 도서의 느낌이 물씬 물씬 난다는 것.ㅎㅎㅎㅎ


우선 책에 들어가기 전에 주의 하실 점이라면


먼저, 이 책은 절대로 마이크로 서비스가 어떻게 생겼는가를 코드로 보고자 하신다면 절대로 그 답을 찾을 수 없는 책입니다.


네, 맞습니다. 이 책은 코드 한줄 나오지 않는 아름다운 글들로 쓰여진 책입니다. 마이크로 서비스를 설계하고, 디자인 하는 사람인 아키텍트의 관점에서 어떻게 마이크로서비스를 구축하고, 만들어야 할지를 고민하는 사람을 위한 글입니다.


저도 살짝 책을 받았을 때에는 위의 우를 범하고 코드부터 찾아봤지만 없어서 대략 난감했다가.. 머릿말과 1장 끝 맺음말에 이러한 말이 있음을 알고, 다시 마음을 가다듬었더라지요.. ㅎㅎ


그렇다면, 이 책에서는 마이크로 서비스를 어떻게 정의하고 있느냐..


 


작고 자율적으로 협업하는 서비스. ㅎㅎㅎ

뭔가 인공지능의 냄새가 나지만 그렇지는 않습니다. (자기가 혼자 살아서 역동적으로 움직인다거나 그런거 아닙니다..)


"하나의 거대한 서비스를 여러개의 모듈단위로 쪼개어 각 서비스가 하나의 임무를 담당하게 한다는 것을 말합니다."


무슨 말이냐.. 예를 들어 페이스북 같은 서비스를 생각해보면, 친구 찾기, 뉴스피드, 그룹 등등 이렇게 단위단위로 나누어 서비스를 구축하고 이들이 각각 자신의 고유한 서비스를 제공하게 됩니다. 이를 합한 것이 마이크로 서비스, 페이스북이 되는 것이지요.



그 기준으로 저자는 "2주 안에 재작성 될 수 있는 크기"이여야 적당한 마이크로 서비스라고 정의하고 있습니다. 다시 말하자면 언제든지 크게 아키텍처나 설계적으로 갈아 엎을 수 있는 것.


실제로 넷플릭스, 트위터, Gilt 등에서는 자사의 서비스를 마이크로 서비스로 운용하고 있으며, 쿠팡도 내부적으로 마이크로 서비스를 자사의 서비스 아키텍처로 운용하고 있다고 알고 있습니다. 그만큼 인터넷 기업은 마이크로서비스로 아키텍처를 꾸려가는 추세입니다.


하지만 저자도 또한 마이크로서비스가 만능은 아니라고 이야기 하고 있습니다. 

반대적인 아키텍처인 모놀리식서비스 또한 그 역할을 할때도 있다고 이야기 하고 있습니다.














이후에는 각 타이틀을 중심으로 어떻게 마이크로 서비스를 꾸려갈지에 대하여 다루고 있습니다. 그리고 그에 맞는 기업 사례를 예제로 들고 있지요.


즉, 철학만 제시하는 것이 아니라 그 철학을 준수하고, 구현한 기업의 사례까지 들어줌으로써, 아키텍트에게 구체적으로 X라는 기술을 적용 하였을 때, Y라는 결과를 얻을수 있다는 정보를 제공합니다.


물론 이러한 점들은 일반 주니어 개발자(저처럼..)가 보기에는 한없이 뜬구름 잡는 이야기 인것은 사실입니다. 하지만 앞절에 나오는 마이크로 서비스의 개념과 여러가지 마이크로서비스의 디자인 설계 철학등은 타 오픈소스등을 이해할 때 많은 도움이 될 것이라 기대하고 있습니다.


오랜만에 작성하는 리뷰라, 조금 내용이 중구난방이 되었지만, 이 리뷰를 보시는 분들에게 도움이 되길 바라며, 오늘 리뷰는 여기서 이만 줄이도록 하겠습니다 :)


모두들 즐거운 지식을 쌓아가길 바라며 ㅎㅎ 다음에 만나요~

 

 

  회사에서 신입사원을 모집할때 회사의 장점중 하나로 마이크로서비스아키텍쳐를 구현하고 있다고 말하곤 했다. 고객이 보기엔 하나의 앱이고 웹사이트일 뿐이지만, 사실 수 많은 개별 서비스들이 톱니바퀴처럼 물려서 돌아가고 있다고, 시스템을 배포할때 전체를 배포하는것이 아니라 각 서비스를 이루고 있는 개별시스템들만 배포하면 되고, 그래서 장애가 나도 앱 전체가 다운되는것이 아니라 일부 기능에만 문제가 생긴다고...

 

  하지만 정작 일을 하면서 알게 되었다. 처음에는 마이크로서비스를 지향하였지만 결국 개별시스템이 비대해지면서 모놀리식 시스템이 되어가고 있다는 걸 그리고 기술부채를 줄이기 위한 리팩토링이나 개선은 항상 다음에 여유가 생기면이란 핑계로 미루기가 일상이 되어갈 때 쯤 이 책과 조우하게 되었다.

 

  이 책은 마이크로서비스의 실체에서부터 그 경계를 정하는 방법, 서비스의 모델링, 서비스들의 통합, 모놀리스 시스템의 분해, 배포, 테스트, 보안과 모니터링에 대한 우려에 이르기까지 상당히 넓은 주제를 다루고 있다.

 

  개인적으로 좋았던 부분은 4장에선 요즘 많은 개발자들이 고민하는 동기/비동기에 대한 주제였던 것 같다. 항상 고민하고 있는 부분인데 책에서 다루어서 좋았다. 11장에선 요즘 면접의 단골주제인 대규모 서비스에 대한 캐쉬, 확장성, 서비스 인지 등에 대해서도 다루고 있는데, 최근 비동기 시스템의 클러스터링에 대한 업무를 하고 있다보니, 흥미롭게 읽혔던 것 같다.

 

  간단하게라도 코드와 인프라스트럭쳐가 라이브되어 있는 샘플로 설명해주면 실질적으로 더 도움이 될텐데 그점은 조금 아쉬웠던 것 같다. 다음에는 좀 더 풍성한 실사례와 많이 수록된 개정판이 나오길 소망해본다.

 

  새로운 언어나 라이브러리에 대한 책을 접할 기회는 많지만, 이렇게 아키텍처에 대해 고민하게 해주는 책은 드물었기에

가뭄에 단비를 맞은 것처럼 반가웠다. 이 책이 마이크로서비스의 구현/운영에 있어 모든 어려움과 고민을 해결해 줄 수는 없겠지만 우리가 맞닥뜨릴 함정들을 피해가는데 도움이 될것이다.

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

배송료 안내

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

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

닫기

리뷰쓰기

닫기
* 도서명 :
마이크로서비스 아키텍처 구축
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

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

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

오탈자 등록

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

도서 인증

닫기
도서명*
마이크로서비스 아키텍처 구축
구입처*
구입일*
부가기호*
부가기호 안내

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

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

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

닫기

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

자료실