Top

엔터프라이즈 환경을 위한 마이크로서비스 [마이크로서비스 아키텍처의 개념 이해부터 적용, 구현까지]

  • 원서명Microservices for the Enterprise: Designing, Developing, and Deploying (ISBN 9781484238578)
  • 지은이카순 인드라시리(Kasun Indrasiri), 프라바스 시리와데나(Prabath Siriwardena)
  • 옮긴이이상근
  • ISBN : 9791161754055
  • 35,000원
  • 2020년 03월 31일 펴냄
  • 페이퍼백 | 508쪽 | 188*235mm
  • 시리즈 : 소프트웨어 아키텍처

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/microservices-enterprise)

요약

마이크로서비스 아키텍처의 기본 개념과 기존의 서비스 지향 구조, ESB 등을 비교해 차이점을 설명한다. 또한 실제 구현에 개념을 어떻게 적용할지, 사용할 수 있는 오픈소스에는 어떤 것이 있는지도 자세히 알려준다. 이 책은 국내에서 마이크로서비스 아키텍처 구현에 사용되는 거의 모든 오픈소스를 다루고 있어, 해당 내용의 개요만 참고해도 큰 도움이 될 것이다.

이 책에서 다루는 내용

■ 자신 있게 마이크로서비스 아키텍처를 설계하고 개발하기
■ 현대적인 메시징 기술 적용하기
■ 서비스 메시 패턴을 적용해 서비스 간 통신 문제 극복하기
■ 실전 테스트를 거친 마이크로서비스 보안 패턴을 적용해 실제 시나리오 해결하기
■ API 관리, 분산 데이터 관리, 관찰 가능성 처리하기

이 책의 구성

이 책을 통해 엔터프라이즈 애플리케이션 환경에서 마이크로서비스를 구축하는 것을 둘러싼 주요 과제와 솔루션을 이해할 수 있도록 구성했다. 이 책은 마이크로서비스 아키텍처의 원칙과 실제 시나리오에서 마이크로서비스를 사용하는 방법을 포괄적으로 설명한다.
서비스 통합 및 API 관리와 함께 마이크로서비스를 사용하는 아키텍처 문제가 제시되고, 복합/통합 마이크로서비스를 사용해 ESB(Enterprise Service Bus)와 같은 중앙 집중식 통합 제품을 사용하지 않는 방법을 배운다. 각 개념은 사용 사례와 함께 설명하며, 대부분의 사용자는 비즈니스 중단을 최소화하면서 레거시 애플리케이션과 함께 마이크로서비스를 구현해야 하는 ‘브라운필드(brownfield)’ 환경에서 구현하고 있다는 사실을 강조한다.
마이크로서비스 메시징, 서비스 개발 및 설명, 서비스 발견, 거버넌스, 데이터 관리 기술에 관한 최신 기술을 다루고 마이크로서비스 디자인 프로세스를 안내한다. 또한 핵심 대 원자, 복합 대 통합, API 대 에지(edge)로 서비스를 구성하는 것의 중요성과 이러한 조직이 중앙 ESB의 사용을 제거하고 API 게이트웨이를 통해 서비스를 노출하는 데 도움될 방법도 알려준다.

저자/역자 소개

지은이의 말

마이크로서비스 아키텍처 원칙을 포괄적으로 설명하고, 실제 시나리오에서 이러한 개념을 사용하는 방법을 논의한다. 또한 특정 기술이나 프레임워크에 한정하지 않고 마이크로서비스 아키텍처의 특정 측면에 가장 적합한 광범위한 기술과 프레임워크를 다룬다.
서비스 간 통신, 중앙 집중식 엔터프라이즈 서비스 버스(Enterprise Service Bus(ESB))를 사용하지 않는 서비스 통합, 중앙 집중식 API 게이트웨이 없이 API로 마이크로서비스 노출, 마이크로서비스의 범위와 크기 결정, 마이크로서비스 보안 패턴 활용 등 엔터프라이즈 아키텍처 환경에서 마이크로서비스를 구축하는 동안에 고려해야 할 근본적인 문제를 다루는 것도 차별화된 특징이다. 이 책에서 설명하는 모든 개념은 사용 사례와 함께 설명하며 독자가 시도할 수 있는 샘플과 통합된다. 이러한 사용 사례의 대부분은 넷플릭스(Netflix)와 구글 같은 기존 마이크로서비스 구현과 샌프란시스코 베이 에어리어의 다양한 밋업과 콘퍼런스에 참여했던 경험에서 영감을 얻었다.

지은이 소개

카순 인드라시리(Kasun Indrasiri)

WSO2의 설계자, 저자, 마이크로서비스 및 통합 에반젤리스트, 통합 아키텍처 디렉터이며, 샌프란시스코 베이 에어리어(San Francisco Bay Area)에서 벤더 중립적인 마이크로서비스 모임인 ‘마이크로서비스, API, 통합 밋업 그룹(Microservices, APIs, and Integration meetup group)’을 설립했다. 『Beginning WSO2 ESB』(Apress, 2017)의 저자이며, 엔터프라이즈 통합 분야에서 쌓은 7년 이상의 경험을 바탕으로 소프트웨어 아키텍트 및 제품 리더로 일했다.
아파치 커미터와 PMC의 멤버로 활동 중이며 샌프란시스코, 런던, 바르셀로나에서 열린 여러 콘퍼런스에서 엔터프라이즈 통합과 마이크로서비스에 관련된 주제를 발표했다. 베이 에어리어 마이크로서비스, 컨테이너, 클라우드 네이티브 밋업에서 강연을 하고 있으며, 마이크로서비스에 대한 블로그와 논문도 게시한다. 다수의 포춘 100대 기업과 협력해 엔터프라이즈 통합 및 마이크로서비스 영역에서 솔루션을 제공한다.

프라바스 시리와데나(Prabath Siriwardena)

WSO2의 아이덴티티 에반젤리스트, 저자, 블로거이자 신원 관리 및 보안 담당 부사장이며, 다수의 포춘 100/500대 기업을 포함해 글로벌 기업을 위한 중요한 IAM(Identity and Access Management) 인프라 설계 및 구축 분야에서 11년 이상 경험을 쌓았다. 기술 에반젤리스트로서 다섯 권의 책을 출간했으며 블록체인, PSD2, GDPR, IAM에서 마이크로서비스 보안까지 다양한 주제를 다루는 블로그와 유튜브 채널을 운영한다.
RSA Conference, Identiverse, European Identity Conference, Consumer Identity World USA, API World, API Strategy & Practice Con, QCon, OSCON, WSO2Con 등과 같은 많은 콘퍼런스에서 연설했으며, IAM 커뮤니티에 ‘복음’을 전하는 워크샵/미팅을 진행하며 전 세계를 여행했다. 샌프란시스코 베이 에어리어에서 가장 큰 IAM 모임인 실리콘밸리 IAM 사용자 그룹(Silicon Valley IAM User Group)을 창립했다.

옮긴이의 말

2018년 말에 처음으로 마이크로서비스 아키텍처 프로젝트에 참여하게 됐을 때는 크리스 리처드슨의 저서 『마이크로서비스 패턴』을 통해 마이크로서비스 아키텍처의 개념적인 측면을 이해할 수 있었다. 그러나 마이크로서비스를 실제로 어떻게 구현할지는 흩어져 있는 여러 자료를 찾아보고 코드를 구현해보면서 조금씩 배워나갈 수밖에 없었다.
2019년 7월 무렵, 이 책의 번역을 시작한 후 전체적인 내용을 살펴봤을 때는 뒤통수를 세게 얻어맞은 느낌이 들었다. 내가 그동안 고민해왔던 내용과 앞으로 좀 더 알아보고자 했었던 내용이 이 책에 충실히 담겨 있을 뿐 아니라, 2018년 말 즈음에 이미 출간됐었다는 사실이 인상적이었기 때문이다. 개인적으로는 ‘프로젝트를 시작할 즈음에 이 책의 내용을 접했으면 어땠을까.’라는 아쉬움도 남았다.
책이 출간되고 나서 한참 후에야 번역을 시작한 만큼, 최대한 빠른 시간 내에 번역을 마치고 독자들이 영어의 압박에서 벗어나 이 책을 좀 더 편하게 읽을 수 있도록 하는 것이 목표였다. 비록 출간을 앞두고 냉정히 평가했을 때 그 목표가 제대로 달성되지 못한 것 같아 아쉽지만, 이 책에서 다루는 내용이 한국어판이 출간되는 시점에도 여전히 유효하다는 점에서 위안을 얻는다.
개념이나 디자인 패턴 등과 같은 고수준에서만 본다면, 마이크로서비스 아키텍처는 기존의 서비스 지향 구조 등과 크게 달라 보이지 않는다. 그러나 마이크로서비스 아키텍처를 구현하기 위해 구체적인 기술을 자세히 살펴보면 그 차이를 체감할 수 있다. 이러한 차이를 체감하고 체득하는 데는 많은 노력이 필요하지만, 이 책을 통해 그 기반을 단단히 다질 수 있을 것이다.
이 책은 마이크로서비스 아키텍처의 기본 개념을 기존의 서비스지향 구조, ESB 등과 비교해서 잘 설명하고 있다. 나아가 개념을 실제 구현에 어떻게 적용하고 어떤 오픈소스를 사용할 수 있는지도 자세히 알려준다.
마이크로서비스 아키텍처는 어렵다. 알아야 할 기술이 너무 많기 때문이다. 이 책은 국내에서 마이크로서비스 아키텍처를 구현하는 데 사용되는 거의 모든 오픈소스를 다루며, 비록 국내에서는 생소하지만 국외에서는 잘 알려진 오픈소스도 소개한다.
이 책에서 설명하는 오픈소스의 개요만 파악해도, 추후 마이크로서비스를 실무에 적용할 때 큰 도움이 될 것이다.
책을 번역하는 과정에서 깃허브에 공개된 예제가 일부 누락된 것을 발견하고, 출판사를 통해 저자들과 소통할 기회가 있었다. 비록 저자들이 너무 바쁘고 소스 코드를 찾지 못한 탓에 완벽하게 업로드해주지는 못했지만, 보완하기 위해 최대한 노력해준 저자들의 노고에 감사한다. 소스 코드가 완전하지 않은 부분에 대해서는 저자들을 대신해 양해를 구하고 싶다. 그러나 책의 내용을 끝까지 살펴보면, 저자들이 실제 개발에 도움이 되는 소스를 제공하고자 최선을 다했다는 점을 깨닫게 될 것이다.
이 책을 모두 읽고 나면, 400페이지 남짓한 원서에 많은 내용을 담아낸 저자들의 노력뿐 아니라 남다른 안목과 식견에도 감탄하게 될 것이다. 따라서 다소 힘들더라도 이 책의 모든 내용을 끝까지 한 번은 읽어볼 것을 권한다.

옮긴이 소개

이상근

숭실대학교에서 컴퓨터학을 전공하고, 동 대학원에서 공학박사 학위를 받았다. 세부전공은 분산 처리이며, 주로 분산 컴퓨팅 아키텍처와 워크플로 엔진을 연구했다. 학업을 마친 후 개발자로 일하면서 10년 이상의 다양한 경력을 쌓았고 엔터프라이즈 잡스케줄러, 렌더팜 관리 시스템, 클라우드 데이터베이스 프로비저닝 서비스, 빅데이터 관련 시스템, 클라이언트 사이드 로드 밸런싱 등과 같은 다양한 개발 분야를 두루 경험했다. 최근에는 마이크로서비스 아키텍처와 서비스 메시가 가져올 IT 시스템의 큰 변화에 주목하고 있으며, 현재 애플리케이션 아키텍트로 일하고 있다.

목차

목차
  • 1장. 마이크로서비스의 사례
    • 모노리스에서 마이크로서비스 아키텍처로
      • 모놀리식 애플리케이션
      • SOA와 ESB
      • API들
    • 마이크로서비스는 무엇인가?
      • 비즈니스 기능 지향
      • 자율성: 개발, 배포, 확장의 독립성
      • 중앙 ESB 부재: 스마트 엔드포인트와 멍청한 파이프
      • 실패 내결함성
      • 분산화된 데이터 관리
      • 서비스 거버넌스
      • 관찰 가능성
    • 마이크로서비스: 장점과 단점
      • 장점
      • 단점
    • 마이크로서비스의 적용 방법과 적용 시기
    • 요약

  • 2장. 마이크로서비스 디자인
    • 도메인 주도 설계
      • 바운디드 컨텍스트
      • 컨텍스트 맵
      • 관계형 패턴
    • 설계 원리
      • 높은 응집도와 느슨한 결합
      • 복원력
      • 관찰 가능성
      • 자동화
    • 12 팩터 앱
      • 코드베이스
      • 종속성
      • 설정
      • 백엔드 서비스
      • 빌드, 릴리스, 실행
      • 프로세스
      • 무공유 아키텍처
      • 포트 바인딩
      • 동시성
      • 폐기 가능
      • 개발/프로덕션 환경 일치
      • 로그
      • 어드민 프로세스
      • 12 팩터 앱을 넘어서
    • 요약

  • 3장. 서비스 간 통신
    • 마이크로서비스 통신의 기초
    • 동기식 통신
      • REST
      • gRPC
      • GraphQL
      • 웹소켓
      • 스리프트
    • 비동기식 통신
      • 단일 수신자
      • 다중 수신자
    • 동기식 통신 대 비동기식 통신
      • 메시지 포맷/타입
      • JSON과 XML
      • 프로토콜 버퍼
      • 에이브로
    • 서비스 정의 및 계약
    • 요약

  • 4장. 서비스 개발
    • 개발자 도구와 프레임워크
      • 넷플릭스 OSS
      • 스프링 부트
      • 이스티오
      • 드롭위저드
      • Vert.x
      • Lagom
    • 스프링 부트 시작하기
      • Hello World!
      • 스프링 부트 액추에이터
      • 구성 서버
      • 구성 소비하기
      • 서비스 간 통신
    • gRPC 시작하기
      • gRPC 서비스 구축
      • gRPC 클라이언트 구축
    • 카프카를 이용한 이벤트 기반 마이크로서비스
      • 카프카 메시지 브로커 설정
      • 게시자(이벤트 소스) 구축하기
      • 소비자 구축하기(이벤트 싱크)
    • GraphQL 서비스 구축
    • 요약

  • 5장. 데이터 관리
    • 모놀리식 애플리케이션과 공유 데이터베이스
    • 마이크로서비스당 데이터베이스
    • 마이크로서비스 간 데이터 공유
      • 공유 테이블 제거
      • 공유 데이터
      • 데이터 조합
    • 마이크로서비스의 트랜잭션
      • 2단계 커밋을 통한 분산 트랜잭션 피하기
      • 로컬 트랜잭션을 사용한 이벤트 개시
      • 데이터베이스 로그 마이닝
      • 이벤트 소싱
      • 사가
    • 폴리글랏 지속성
    • 캐싱
    • 요약

  • 6장. 마이크로서비스 거버넌스
    • 왜 마이크로서비스 거버넌스인가?
    • 마이크로서비스 거버넌스 측면
      • 서비스 정의
      • 서비스 레지스트리 및 검색
      • 서비스 수명 주기 관리
      • 서비스 품질
      • 서비스 관찰 가능성
    • 마이크로서비스 거버넌스 구현
      • 서비스 레지스트리 및 검색
      • 개발 수명 주기 관리
      • API 관리/API 게이트웨이
      • 관찰 가능성
    • 서비스 레지스트리 및 검색
      • 컨설
      • 유레카
      • etcd
      • 쿠버네티스를 통한 서비스 검색
    • 요약

  • 7장. 마이크로서비스 통합
    • 마이크로서비스를 통합해야 하는 이유
    • 스마트 엔드포인트와 멍청한 파이프
    • 마이크로서비스 통합의 안티 패턴
      • 마이크로서비스 통합을 위한 모놀리식 API 게이트웨이
      • ESB와 마이크로서비스 통합
      • 모든 마이크로서비스 구축에 동종 기술 사용
    • 마이크로서비스 구성하기
      • 핵심 서비스
      • 통합 서비스
      • API 서비스
    • 마이크로서비스 통합 패턴
      • 능동형 조합 또는 오케스트레이션
      • 반응성 조합 또는 코레오그래피
      • 능동형 조합과 반응형 조합의 하이브리드
      • 손상 방지 계층
      • 스트랭글러 파사드
    • 통합 서비스의 주요 요구 사항
      • 네트워크 통신 추상화
      • 복원력 패턴
      • 능동형 또는 반응형 조합
      • 데이터 형식
      • 컨테이너 네이티브 및 데브옵스 지원
      • 통합 서비스 거버넌스
      • 상태 없음, 상태 저장, 또는 장기 실행 서비스
    • 통합 서비스 구축을 위한 기술
      • 스프링 부트
      • 드롭위저드
      • 아파치 카멜과 스프링 통합
      • Vert.x
      • 아카
      • Node, Go, 러스트, 파이썬
      • 발레리나
      • 워크플로 엔진 솔루션
    • 서비스 메시의 시작
    • 요약

  • 8장. 마이크로서비스의 배포 및 실행
    • 컨테이너와 마이크로서비스
      • 도커 소개
      • 도커를 사용해 마이크로서비스 배포
      • 도커 컴포즈
    • 컨테이너 오케스트레이션
      • 쿠버네티스 소개
      • 쿠버네티스 핵심 개념
      • 쿠버네티스 환경에서 마이크로서비스 배포
    • 마이크로서비스 배포 패턴
      • 호스트당 다중 서비스
      • 호스트당 서비스
      • 가상 머신당 서비스
      • 컨테이너당 서비스
    • 컨테이너 네이티브 마이크로서비스 프레임워크
      • Metaparticle
    • 지속적인 통합, 전달, 배포
      • 지속적인 통합
      • 지속적인 전달
      • 지속적인 배포
    • 요약

  • 9장. 서비스 메시
    • 왜 서비스 메시인가?
    • 서비스 메시란 무엇인가?
      • 비즈니스 로직
      • 기본 네트워크 기능
      • 애플리케이션 네트워크 기능
      • 컨트롤 플레인
    • 서비스 메시의 기능
      • 서비스 간 통신을 위한 복원력
      • 서비스 검색
      • 라우팅
      • 관찰 가능성
      • 보안
      • 배포
      • 서비스 간 통신 프로토콜
    • 이스티오
      • 이스티오 아키텍처
      • 이스티오 사용
    • 링커디
    • 서비스 메시를 사용해야 할까?
      • 장점
      • 단점
    • 요약

  • 10장. API, 이벤트, 스트림
    • API와 API 관리
      • API 게시자/API 수명 주기 관리자
      • API 게이트웨이
      • API 저장소/개발자 포털
      • API 분석/관찰 가능성
      • API QoS
      • API 수익 창출
      • OpenAPI를 사용한 API 정의
      • API 쿼리 언어: GraphQL
      • API 관리와 서비스 메시
      • API 관리 구현
    • 이벤트
      • 이벤트 알림
      • 이벤트-전달 상태 전이
      • 이벤트 소싱
      • 명령 질의 책임 분리
    • 스트림
      • 스트림 처리
    • API, 이벤트, 스트림이 포함된 마이크로서비스 아키텍처
    • 요약

  • 11장. 마이크로서비스 보안의 기본 사항
    • 모놀리스 대 마이크로서비스
    • 서비스 간 통신 보호
      • JSON 웹 토큰
      • TLS 상호 인증
    • 에지 보안
      • OAuth 2.0
    • 접근 제어
      • XACML
      • 내장형 PDP
    • 보안 사이드카
    • 요약

  • 12장. 마이크로서비스 보안
    • OAuth 2.0으로 마이크로서비스 보안
      • TLS 사용
      • OAuth 2.0 인가 서버 설정
      • OAuth 2.0으로 마이크로서비스 보호
    • 자체 포함 액세스 토큰(JWT)으로 마이크로서비스 보안
      • JWT를 발행하도록 인가 서버 설정
      • JWT로 마이크로서비스 보호
    • 마이크로서비스에 대한 접근 제어
      • 범위 기반 접근 제어
      • 역할 기반 접근 제어
    • 서비스 간 통신 보호
      • JWT로 보호된 서비스 간 통신
      • TLS 상호 인증으로 보호된 서비스 간 통신
    • 액추에이터 엔드포인트 보안
    • 요약

  • 13장. 관찰 가능성
    • 관찰 가능성의 세 기둥
    • 스프링 클라우드를 사용한 분산 추적
      • 스프링 클라우드 슬루스
      • 스프링 부트 마이크로서비스에 스프링 클라우드 슬루스 사용
      • 스프링 클라우드 슬루스를 사용해 여러 마이크로서비스 간의 메시지 추적
    • 집킨을 통한 데이터 시각화와 상관관계
      • 이벤트 기반 로그 집계 아키텍처
    • 오픈 트레이싱 소개
      • 스프링 부트 마이크로서비스와 집킨을 사용한 오픈 트레이싱으로 분산 추적
      • 스프링 부트 마이크로서비스와 예거를 사용한 오픈 트레이싱으로 분산 추적
    • 프로메테우스가 포함된 메트릭
      • 스프링 부트 마이크로서비스 메트릭 노출하기
      • 프로메테우스 설정
      • 프로메테우스를 사용한 그래프 작성
    • 그라파나를 사용한 분석과 모니터링
      • 그라파나로 대시보드 구축
      • 그라파나로 경고 생성
    • 도커와 함께 Fluentd 로그 수집기 사용
      • 도커 컨테이너로 Fluentd 시작
      • 도커 컨테이너에서 실행되는 마이크로서비스에서 Fluentd에 로그 게시
      • 작동 원리
      • 마이크로서비스 배포에서 Fluentd 사용하기

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안