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

한빛미디어

독자리뷰

[서평] 엔터프라이즈 자바 마이크로서비스

rock1***

|

2020-06-21

엔터프라이즈 자바 마이크로서비스

JVM 기반 마이크로서비스 애플리케이션을 설계하고 구축하는 방법을 알려준다. 전통적인 Java EE 애플리케이션과 마이크로서비스 설계를 비교한 후 마이크로서비스를 이루는 각 요소를 설명하는 방식으로 독자의 이해를 돕는다. 이를 바탕으로 마이크로서비스를 구현하는 도구와 기법을 설명한다. 마이크로서비스를 매끄럽게 운용하는 모니터링, 보안, 테스팅, 클라우드 전개 방법도 함께 살펴본다.

  • 저자 : 켄 피니건
  • 번역 : 오현석
  • 출간 : 2019-07-25

이 책은 336페이지로 꽤 얇은 편에 속하는 서적이다 

 

이 책은 총 2부로 나뉘어져 있는데 1부는 1장부터 5장까지 분산시스템과 마이크로서비스의 전반적인 아키텍처를 다루고, 애플리케이션 서버를 가볍게 만드는 것과 테스팅, 

클라우드 네이티브 개발에 대한 개념을 다룬다

2부는 서비스 레지스트리, 내고장성, 보안등 마이크로 서비스 개발에 관련된 핵심 내용을 설명한다

 

예제 소스: 

- 매닝 출판사: https://www.manning.com/books/enterprise-java-microservices

- 저자의 GitHub: https://github.com/kenfinnigan/ejm-samples

 

이 책에서 짧게 다루는 마이크로서비스로 마이그레이션할 때 사용할 수 있는 패턴들은 잘 읽어보기 바란다 

마이크로서비스로 마이그레이션을 할 때 필수적으로 적용되어야 하는 패턴이므로 반드시 숙지하고 넘어 가는 것이 좋다

 

1. 도메인 주도 설계

도메인 주도 설계(DDD)는 도메인에 대한 이해를 소프트웨어에 모델링하기 위한 방법론과 패턴의 모음이다

DDD의 핵심 부분은 제한된 맥락(Bounded Context_ 패턴이다

그 패턴을 사용하면 시스템 각 부분을 한 번에 서로 격리해 모델링할 수 있다

 

2. 빅뱅 패턴

엔터프라이즈 애플리케이션을 마이크로서비스로 마이그레이션하기 위한 빅뱅(Big Bang) 패턴은 가장 복잡하고 제대로 하기 어려운 패턴이다

빅뱅 패턴은 기존 모노리스의 모든 부분을 하나하나 분리해서 마이크로서비스로 변환하는 과정을 거치며, 마지막에 모노리스에서 마이크로서비스로 모든 시스템이 전체적으로 이동한다

 

3. 스트랭글러 패턴

스트랭글러(Strangler) 패턴은 마틴 파울러가 정의한 스트랭글러 애플리케이션에 기반한다

마틴은 기존 시스템의 가장자리에 점차 새로운 시스템을 만들어 나가는 방식으로 전체 시스템을 다시 작성하는 방법을 스트랭글러 패턴이라고 묘사한다

새 시스템은 몇 년에 걸쳐 점차 자라나며, 기존 시스템은 점점 줄어들어 더 이상 존재하지 않게된다

 

4. 하이브리드 패턴

빅뱅 패턴과 스트랭글러 패턴을 살펴봤으므로 하이브리드(Hybrid) 패턴을 살펴 보자

하이브리드 패턴이 기업에서 마이크로서비스 개발로 마이그래이션할 때 가장 많이 사용하는 패턴일 것 같다

이 패턴은 스트랭글러 패턴과 비슷한 형태로 시작한다

차이는 원래의 모노리스를 완전히 없애지 않는다는 점에 있다

이 패턴에서는 모노리스 안에 몇 가지 기능을 계속 유지하며 그 기능을 새로운 마이크로서비스에 통합한다

 

- 기존 엔터프라이즈 자바 모노리스와 새로운 마이크로서비스 아키텍처를 통해 들어온 요청의 경로

사용자는 브라우저에서 자신이 보고 싶은 애플리케이션의 뷸르 요청한다

뷰는 자신을 만들어내기 위해 필요한 정보를 얻기 위해 컨트롤러를 호출한다

컨트롤러는 비즈니스 서비스를 호출한다 컨트롤러는 여러 소스에서 얻은 데이터를 통합할 수도 있다

게이트웨이는 미리 정의된 라우팅 규칙에 따라 요청을 적절한 마이크로서비스에게 전달한다

마이크로서비스는 요청을 받고 자체 처리를 진행한 후 다른 마이크로서비스를 호출한다

마이크로서비스 사슬의 맨 마지막에 있는 마이크로서비스는 데이터 저장소 계층과 상호 작용해 레코드를 읽거나 쓸 수 있다

새로운 마이크로 서비스 아키텍처로 마이그레이션 하는 비용이 너무 많이 드는 컴포넌트들은 기존 엔터프라이즈 자바 플랫폼에 계속 전개될 수 있다

 

 

20200621_175416.jpg

 

 

이 후 이 책은 엔터프라이즈 자바 마이크로서비스에 대해 코드를 분석하며 알아보기 시작한다

 

이 후 2부에서는 엔터프라이즈 자바 마이크로서비스를 직접 구현하며 아래의 내용들에 대해 구체적으로 알아본다

 

- 소비할 마이크로 서비스 발견하기

  소비할 서비스를 발견할 수 있으려면 마이크로서비스가 서비스 정보를 읽을 수 있도록 한곳에 관련 정보를 집중해 등록해야 한다 

  서비스 레지스트리는 마이크로서비스 환경에서 그런 중앙 정보 집중소 역할을 한다

  손테일을 사용하면 마이크로서비스 환경에서 제이그룹스나 오픈시프트, 컨설을 서비스 레지스트리 구현으로 사용할 수 있다

  마이크로서비스에서 넷플릭스 리본 클라이언트를 사용하면 서비스 발견을 위한 손테일 토폴로지 구현의 이점을 살림으로써 

  클라이언트 코드 안에서 서비스를 찾는 코드를 제거할 수 있다  

 

- 내고장성과 모니터링 전략

  분산 아키텍처에 마이크로서비스를 전개할 때 지연시간이나 고장을 견딜 수 있는 힘(내고장성)을 갖추기 위해 

  마이크로서비스를 소비하는 코드를 히스트릭스로 감싸서 폴백, 요청 캐시, 벌크헤드와 같은 내고장성 기능을 추가할 수 있다

  히스트릭스만으로는 내고장성을 완벽하게 처리할 수 없다 히스트릭스 대시보드 등의 도구를 통해 실시간 모니터링을 하는 것이

  전체 내고장성을 성공적으로 향상시키기 위해 꼭 필요하다

 

- 마이크로서비스 보안

  키클록은 Bearer 토큰을 받을 수 있고, 인증 클라이언트를 제공하며, 마이크로서비스에 보안을 부여하면서 쉽게 설정할 수 있다

  키클록으로 사용자가 없이도 인증이 가능하다 마이크로서비스를 호출하는 경우 그 기능이 꼭필요하다

  인증을 제공하기 위해 애플리케이션 UI에 키클록을 통합할 수 있다 그리고 보안이 적용된 RESTful 종단점에 요청을 보낼 때 토큰을 전달할 수 있다

 

끝으로 스프링 부트 마이크로서비스 프로젝트를 알아보며 마무리를 짓는다

 

장황하게 설명하지 않고 내용을 잘 축약하여 핵심적인 내용들만 잘 전달하려고 노력한 저자의 노고가 담긴 서적이다 

엔터프라이즈 자바 마이크로서비스에 대해 공부해보고 싶다면 이 책을 통해 공부 해보는 것을 강력히 추천한다

 

20200621_170129.jpg

 

닫기

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