Top

마이크로서비스 아키텍처 [IT 리더들을 위한 간결하고 핵심적인 특징들]

  • 원서명Practical Microservices: Take advantage of microservices capabilities to build a flexible and efficient system with Java (ISBN 9781785885082)
  • 지은이우메쉬 램 샤르마(Umesh Ram Sharma)
  • 옮긴이박현철, 김낙일, 용환성
  • 감수자장진영
  • ISBN : 9791161753096
  • 25,000원
  • 2019년 06월 10일 펴냄
  • 페이퍼백 | 300쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 소프트웨어 아키텍처

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

요약

이 책은 마이크로서비스 아키텍처를 소개하면서 다른 아키텍처와 비교한다. 이어서 필수적인 마이크로서비스 컴포넌트와 두 마이크로서비스에 걸친 엔드포인트 간의 원활한 통신을 설정하는 방법을 살펴본다. 효과적인 데이터 모델을 만들고 마이크로서비스를 테스트하고 배포하는 다양한 방법을 알아본 후에는 모놀리식에서 마이크로서비스 아키텍처로 전환하기 위한 효율적인 방법을 배운다.

이 책에서 다루는 내용

█ 전체 아키텍처에 대한 검색 서비스 및 외부 설정
█ 이벤트 기반 마이크로서비스에 메시지 브로커를 사용하는 방법
█ 컴포넌트 간에 여러 데이터 관리 전략을 복합적으로 구성하는 방법
█ 스프링 부트 환경에서 여러 유형의 테스트 구현
█ 마이크로서비스 아키텍처에 CI/CD 적용
█ 애플리케이션 모니터링 및 확장에 필요한 다양한 도구

이 책의 대상 독자

마이크로서비스를 배워서 작업 현장에 구현하려는 자바 개발자를 위한 책이다. 마이크로서비스에 대한 사전 지식은 필요하지 않다.

이 책의 구성

1장, '마이크로서비스 아키텍처 소개'에서는 마이크로서비스가 가진 기본 의미뿐만 아니라 마이크로서비스 아키텍처의 전반적인 개념을 소개한다. 이 책의 나머지 부분에서 사용할 애플리케이션 예제도 간략하게 살펴본다.
2장, ‘마이크로서비스 구성 요소 정의’에서는 마이크로서비스 구성 요소를 정의하는 기본 원칙과 이런 구성 요소를 통해 마이크로서비스 아키텍처의 근간을 형성하는 방법을 설명한다. 이 지침은 스프링 부트 기반의 자바 프로젝트 구조가 마이크로서비스 구성 요소를 효과적으로 정의하는 데 어떻게 사용되는지 보여주는, 실용적인 관점에서 만들어졌다. 마이크로서비스 예제를 통해 구성 및 검색 서비스와 함께 자바 기반 마이크로서비스 구성 요소가 실용적으로 사용되는 것을 살펴본다.
3장, ‘마이크로서비스 엔드포인트 간의 통신’에서는 마이크로서비스 간의 효과적인 통신을 위한 원칙을 논리적으로 설명한다. 그다음 스프링 프레임워크의 자체 기능부터 메시지 브로커에 이르는 다양한 기술을 사용해 동기식 통신과 비동기식 통신을 위한 옵션을 소개한다. 또한 모범 사례를 통해 일반적인 문제를 처리하는 방법을 설명한다.
4장, ‘마이크로서비스 엔드포인트 보안’에서는 일반적인 보안을 설명하고 보안과 관련된 어려움을 살펴본다. 마이크로서비스 아키텍처 보안을 향상시키기 위해 JWT, OpenID 및 OAuth 2.0을 도입했다.
5장, ‘효과적인 데이터 모델 생성’에서는 마이크로서비스 기반 데이터 모델과 전통적인 데이터 모델의 차이점을 살펴보고 마이크로서비스가 모델을 달리하는 이유를 설명한다. 이어서 데이터 기술을 함께 활용하는 방법과 각 마이크로서비스 구성 요소에 적합한 데이터 관리 전략을 선택하는 방법도 알아본다. 또한 예제 애플리케이션 데이터 모델을 살펴보면서 다양한 데이터 모델 선택을 설명하고, 선택 이유도 알아본다.
6장, ‘마이크로서비스 테스트’에서는 지속적인 변경과 자동으로 배포하는 시스템에 테스팅이 더욱 중요한 이유를 설명한다. 그런데 기존 테스트 방법과 테스트 품질 기준이 마이크로서비스 아키텍처와 완벽하게 일치할까? 아니면 전혀 다른 접근 방식을 사용해야 할까? 둘 다 필요할 것이다.
7장, ‘마이크로서비스 배포’에서는 마이크로서비스 아키텍처에서 배포가 자주 필요하다는 것을 배운다. 따라서 가능한 쉽고 간편하게 배포할 수 있어야 할 뿐만 아니라, 자동화와 함께 시스템을 쉽게 확장 및 축소할 수 있어야 한다. 이는 새로운 마이크로서비스가 지속적으로 배포되고 중단될 수 있다는 의미다. 이때 도커는 마이크로서비스의 배포 프로세스를 정의하고 자동화하는 데 도움된다.
8장, ‘기존 시스템의 진화’에서는 마이크로서비스 아키텍처를 기반으로 시스템을 진화시키는 기본 메커니즘과 마이크로서비스가 이런 진화를 가능하게 해주는 방법을 살펴본다. 또한 자바 기반 애플리케이션을 발전시키는 방법도 설명한다.
9장, ‘모니터링과 확장’에서는 마이크로서비스 기반 시스템 모니터링과 확장의 핵심 개념 및 원리를 설명한다. 자바 기반 마이크로서비스를 모니터하고 확장하는 실제적인 접근법을 살펴보고, 예제를 통해 애플리케이션을 모니터링하고 확장하는 방법을 알아본다.
10장, ‘문제 해결’에서는 마이크로서비스 기반 아키텍처를 설계하고 구축할 때 발생하는 일반적인 문제를 검토한다. 문제를 해결하거나 완화하기 위한 일반적인 방법을 설명한다.

저자/역자 소개

지은이의 말

마이크로서비스는 기술 영역에서 이미 익숙해진 전문 용어다. 개발자나 기술을 좋아하는 사람뿐 아니라, 언론 매체도 깊이 주목하고 있다. 이 책은 개발자가 마이크로서비스를 작성하고 보안 및 배포하는 데 필요한 실용적인 안내서다. 물론 마이크로서비스는 많은 장점을 가졌지만 나름대로의 어려움도 있다. 이 책을 통해 마이크로서비스와 관련된 모범 사례를 살펴보고, 마이크로서비스 아키텍처로 인해 발생할 수 있는 복잡성 및 관련 함정을 피하는 방법도 함께 알아보자.

지은이 소개

우메쉬 램 샤르마(Umesh Ram Sharma)

확장 가능한 분산 클라우드 기반 애플리케이션의 개발, 설계, 아키텍처 분야에서 8년 이상 경력을 쌓은 개발자다.
카르나타카 주립 오픈 대학교에서 정보 기술 석사 학위를 받았다. 주요 관심사는 마이크로서비스와 스프링이고 J2EE, 자바 스크립트, 스트러츠, 하이버네이트, 스프링 스택의 활용 전문가다. AWS, J2EE, MySQL, 몽고DB(MongoDB), 멤캐시드(memchached), 아파치, 톰캣, 헤이즐캐스트(Hazelcast) 같은 기술에 대한 다양한 실무 경험도 있다.
현재 제스트머니(ZestMoney)의 수석 엔지니어로 근무하면서, 팀이 진행 중인 프로젝트를 마이크로서비스 아키텍처로 전환하는 작업을 지원하고 있다. 여가 시간에는 신기술에 관한 콘퍼런스에 참여하거나, 운전과 요리하는 것을 즐긴다.

옮긴이의 말

최근 BTS, 즉 방탄소년단의 세계적인 성과에 놀랐고, 그들의 멋진 노래와 춤, 그리고 많은 활동이 담긴 동영상을 보면서 즐거운 시간을 가질 수 있었다. 세상이 디지털화되면서 의사소통이 매우 빨라졌기 때문에 작은 것 하나라도 잘 만들 수 있다면, 이전과는 비교할 수도 없는 속도로 전 세계 시장을 장악할 수 있다. BTS처럼 말이다.
마이크로서비스 아키텍처는 이처럼 변화하는 세상에 IT 조직이 경쟁력을 갖추기 위해 필요한 소프트웨어 아키텍처이며, 빠르게 변화하는 시장에 대응할 수 있는 애자일 조직과 만났을 때, 가장 큰 시너지를 만들어낼 수 있는 미래의 전략적 수단이다.
스마트폰이나 웨어러블 장비뿐만 아니라 가전, 주택, 빌딩, 자동차, 도시가 서로 연결되고 있다. 이런 것의 연결점은 API로 표현된다. 따라서 API 자체가 혁신 수단이 될 수 있고, 전 세계에 걸친 다양한 API 결합을 통한 혁신도 가능하다.
마이크로서비스 아키텍처는 이런 새로운 혁신의 기반을 제공하며, 4차 산업혁명이나 디지털 트랜스포메이션 같은 새로운 흐름에 적합한 환경을 제공해주는 필수적 환경이 되어가고 있다.
이처럼 변화가 가속화되는 시대에 살면서, 마이크로서비스 아키텍처라는 가치 있는 지식을 독자들과 함께 공유할 수 있다는 사실이 우리에게는 매우 중요한 의미로 다가왔다. 모두가 바쁜 일상을 보내고 있었지만, 그 가운데 서로 만나 책 내용을 이야기하고, 함께 미래를 논의하는 시간은 서로에게도 무척 소중한 시간이었다.
독자에게도 이런 느낌이 조금이라도 전달되기를 바란다. 일을 막론하고 리더는 매우 바쁘다. 바쁜 가운데 변화에 뒤쳐지면 안 되는 것이 리더이기도 하다. 이 책은 바쁜 리더를 위한 책이라고 할 수 있다. 새로운 기술을 다루는 책은 대부분 장점을 중심으로 서술해나가는데, 이 책은 장점과 단점을 있는 그대로 담백하게 이야기한다. 또한 아키텍처나 설계에 전문성, 경험이 부족하기 쉬운 개발자라면 미래의 경쟁력 획득에 도움이 되는 마이크로서비스 아키텍처의 핵심적 특징을 비교적 빠르게 알아챌 수 있을 것이다.
우리가 즐거움 속에서 보람을 느끼며 번역했듯이, 독자도 이 책을 읽으면서 새로운 기술을 알아가는 즐거움을 누릴 수 있기를 희망해본다.

옮긴이 소개

박현철

싸이버로지텍(CyberLogitec) 애자일 마스터이자, 건국대학교 정보통신대학원 겸임 교수다. 개발자부터 시작해 설계자, PM, 아키텍트 등 신기술 개발의 대규모 프로젝트에서 다양한 역할을 수행해왔고, 애자일 영역을 포함해서 총 11권의 저서 및 번역서가 있다. 현재 국내외 700명 조직의 글로벌 해운 물류 솔루션 기업인 싸이버로지텍에 대한 전사 애자일 트랜스포메이션의 애자일 마스터 역할을 수행하고 있다.

김낙일

소프트웨어공학 석/박사 과정을 거쳐 현재에 이르기까지 더 나은 소프트웨어를 만들기 위해 필요한 일을 하고 있다. 크고 작은 다양한 프로젝트에서 개발자, 프로젝트 관리자, 제품 책임자, 아키텍트 등의 역할을 수행했다. 같은 분야의 길을 가기 원하는 미래, 성래의 훌륭한 선배가 되어 줄 수 있는 아버지가 되기 위해서 열심히 살고 있다.

용환성

소프트웨어공학을 전공하고 크고 작은 프로젝트에서 개발자, 프로젝트 관리자, 스크럼 마스터 등의 역할을 수행했다. 현재 다양한 경험과 지식을 바탕으로 전문가들과 함께 소프트웨어 개발 조직의 프로젝트 관리 및 애자일 트랜스포메이션을 위한 다양한 강의와 컨설팅을 수행하고 있다.

감수자 소개

장진영

오픈 클라우드 엔진 파운더, 유엔진 BPM 오픈 소스 프로젝트 파운더/개발자다. 클라우드 네이티브 컴퓨팅, 이벤트 기반 마이크로서비스, 이벤트 스토밍/애자일에 많은 관심이 있다.

목차

목차
  • 1장. 마이크로서비스 아키텍처 소개
    • 일반적인 마이크로서비스 아키텍처
    • 마이크로서비스 아키텍처의 특성
      • 문제 정의
      • 해결 방안
    • 성공적인 마이크로서비스 아키텍처에 대한 어려움
      • 로깅을 통한 디버깅
      • 마이크로서비스 모니터링
      • 공통 라이브러리
      • 서비스 간 메시징
      • 마이크로서비스 배치와 버전 관리
    • 마이크로서비스의 미래
      • 서버리스 아키텍처
      • PaaS로서의 마이크로서비스
    • 마이크로서비스 아키텍처는 전통적인 아키텍처보다 우세한 것인가?
    • 마이크로서비스가 SOA로 보이지 않는다?
    • 대규모 비즈니스 도메인을 마이크로서비스 컴포넌트로 세분하기
      • 비즈니스 중심으로 마이크로서비스 컴포넌트 구성하기
    • 마이크로서비스를 도입해야 할까 도입하지 말아야 할까
      • 조직 도입
      • 데브옵스 경험
      • 기존 데이터베이스 모델 분석
      • 자동화 및 CI/CD
      • 통합
      • 보안
      • 성공적인 전환 사례
    • 예제 프로젝트(신용 리스크 엔진)
    • 스프링
    • 스프링 부트
      • 스프링 부트로 쉽게 할 수 있다!
    • 요약

  • 2장. 마이크로서비스 컴포넌트 정의
    • 마이크로서비스의 정의
    • 서비스 디스커버리와 역할
      • DNS
      • 디스커버리 서비스 필요
      • 서비스 디스커버리 패턴의 예
      • 아키텍처 전반에 걸친 외부 설정
    • API 게이트웨이 및 필요성
      • 인증
      • 다른 프로토콜
      • 로드 밸런싱
      • 디스패치 요청(서비스 디스커버리 포함)
      • 응답 변환
      • 서킷 브레이커
      • API 게이트웨이의 장단점
    • API 게이트웨이 예제
      • 책 전반에 걸쳐 사용된 예제 애플리케이션
    • 사용자 등록 마이크로서비스 개발
      • 서버 설정
    • 요약

  • 3장. 마이크로서비스와 엔드포인트 간의 통신
    • 마이크로서비스는 어떻게 통신하는가
    • 오케스트레이션 대 커리어그래피
      • 오케스트레이션
      • 커리어그래피
    • 동기 대 비동기 통신
      • 동기 통신
      • 비동기 통신
      • 금융 서비스
    • 요약

  • 4장. 마이크로서비스 엔드포인트 보안
    • 마이크로서비스의 보안 문제
      • 기술 스택 또는 레거시 코드의 혼합
      • 인증 및 권한 부여(접근 제어)
      • 토큰 기반 보안
      • 보안 책임
      • 오케스트레이션 스타일에 대한 두려움
      • 서비스 간의 통신
    • OpenID 및 OAuth 2.0과 함께 JWT 사용
      • OpenID
      • OAuth 2.0
      • JWT
      • 예제 애플리케이션
    • 요약

  • 5장. 효과적인 데이터 모델 만들기
    • 데이터와 모델링
      • 기존 데이터 모델과 비교
    • 모놀리스 유형 아키텍처의 데이터 모델
    • SOA의 데이터 모델
    • 마이크로서비스 아키텍처의 데이터 모델
      • 각 마이크로서비스에 제한된 테이블 접근 권한을 부여하는 방법
      • 마이크로서비스별 데이터베이스
      • 사가 패턴
      • 필요시 데이터 기술 혼용
    • 모놀리스에서 마이크로서비스로의 데이터 모델 전환
      • 도메인 주도 설계
      • 데이터 모델 전환 방법
    • 요약

  • 6장. 마이크로서비스 테스트
    • 마이크로서비스를 테스트하는 목적
    • 단위 테스트
    • 통합 테스트
    • 컴포넌트(서비스) 테스트
    • 계약 테스트
      • Pact
      • 스프링 클라우드 계약
    • 엔드 투 엔드 테스트
    • 추가 고려 사항
    • 요약

  • 7장. 마이크로서비스 배포
    • 지속적 통합
    • 지속적 전달
    • 마이크로서비스를 위한 CI 및 CD 도구 설정
    • 마이크로서비스에 도커 적용하기
      • 도커
      • 도커에서의 작업 방식
      • 공개, 개인, 공용 이미지 저장소
      • 도커와 VM
      • 리눅스에 도커 설치하기
    • 오픈 소스 CI 도구를 사용해 마이크로서비스에 도커 활용하기
    • 요약

  • 8장. 기존 시스템을 마이크로서비스로 진화시키기
    • 어디서부터 시작하나
      • 아키텍처 관점과 모범 사례
      • 데이터베이스 관점과 모범 사례
    • 예제 애플리케이션과 애플리케이션의 진화
      • 사용자 관리 서비스
      • 장바구니/주문 서비스
      • 결제 서비스
      • 배송/추적 서비스와 고객 지원 서비스
      • 추천 서비스
      • 스케줄러 서비스
    • 요약

  • 9장. 모니터링과 확장
    • 마이크로서비스 시스템의 모니터링 원칙
      • 누가 어떻게 경고 메시지들을 봐야 하는가
      • 시작부터 모니터링하고 소통하기
      • 자동 확장과 자동 검색
      • 프론트 도어 모니터링
    • 모니터링 기능의 변화(변화하는 모습의 모니터링)
    • 모니터링 시 로깅 작업의 필요성
    • 마이크로서비스 시스템을 확장할 때 지켜야 하는 원칙
      • X축
      • Y축
      • Z축
    • 확장 전 고려 사항
    • 마이크로서비스의 모니터링과 확장에서 실무적으로 고려해야 할 옵션
    • 요약

  • 10장. 장애 해결
    • 마이크로서비스에서 발생하는 일반적인 문제
      • 성능 저하
      • 다른 프로그래밍 언어로부터 만들어지는 서로 다른 로깅 위치
      • 여러 컴포넌트 간 결합도 또는 종속성 문제
      • 많은 서비스를 위한 매일 배포
      • 성능 저하 혹은 문제들을 위한 대규모 서비스의 모니터링
      • 로그와 다양한 컴포넌트 간의 관계
    • 일반적인 문제를 해결하기 위한 기법
      • 성능 문제를 해결하기 위한 단계
      • 다른 위치와 다른 언어로 작성된 서비스에서 로깅 처리
      • 서비스 간의 의존성
    • 적극적인 데브옵스 적용
      • 유용한 도구 사용
      • 역량 있는 개발자 활용
      • 모니터링
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[p. 72 그림 아래 이미지로 대체]

[p. 83 7행]

[p. 161 코드]
@Autowired
privateJwtEntryPointunauthorizedHandler;
@Autowired
privateJwtVerificationServicejwtVerificationService;
->
@Autowired 
private    JwtEntryPoint    unauthorizedHandler;
@Autowired
private    JwtVerificationService    jwtVerificationService;