한빛출판네트워크

IT/모바일

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

JVM 기반 대규모 애플리케이션을 마이크로서비스로 설계, 구축, 관리하는 기술

한빛미디어

번역서

절판

엔터프라이즈 자바 마이크로서비스
좋아요: 1
  • 저자 : 켄 피니건
  • 역자 : 오현석
  • 출간일 : 2019-07-25
  • 페이지 : 336쪽
  • ISBN : 9791162242094
  • 물류코드 :10209

합계 : 24,300

  • 마이크로서비스 아키텍처로 전환하려는 개발자를 위한 본격 활용 안내서 

     

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

     

    이 책의 주요 내용

    • 마이크로서비스 모델
    • 클라우드 네이티브 개발
    • 내고장성 전략과 모니터링 전략
    • 개발을 마친 애플리케이션에 보안 추가
  • [저자] 켄 피니건

    20년 넘게 전 세계 여러 기업에서 컨설턴트와 소프트웨어 엔지니어로 일했다. 자바와 Java  EE에서 클라우드 마이크로서비스를 더 쉽게 개발하는 데 도움을 주는 손테일 프로젝트를 이끌고 있다. 라이브오크와 다른 여러 제이보스 프로젝트도 담당했다. 

    [역자] 오현석

    모빌리티42 이사로 일하면서 매일 고객의 요청에 따라 코드를 만드는 현업 개발자다. 어릴 때 처음 접한 컴퓨터에 매료된 후 경기과학고등학교, KAIST 전산학 학사와 프로그래밍 언어 전공 석사를 취득하며 계속 컴퓨터를 사용했다. 직장에서는 주로 코틀린이나 자바를 사용한 서버 프로그래밍을 하고, 주말이나 빈 시간에는 번역을 하거나 공부하면서 즐거움을 찾는다. 『코어 파이썬 애플리케이션 프로그래밍』(에이콘, 2014)을 시작으로 『배워서 바로 쓰는 스프링 프레임워크』(2020), 『러닝 리액트(2판)』(2021), 『고성능 파이썬(2판)』(이상 한빛미디어, 2021) 등 30권 이상의 책을 번역했다.

     

     

  • Part 1 마이크로서비스 기초

     

     

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

    1.1 엔터프라이즈 자바의 역사

    1.2 마이크로서비스와 분산 아키텍처

    1.3 마이크로서비스로 마이그레이션할 때 사용할 수 있는 패턴들

    1.4 엔터프라이즈 자바 마이크로서비스란 무엇인가?

    1.5 요약

     

    CHAPTER 2 간단한 RESTful 마이크로서비스 개발하기

    2.1 카얌베 모노리스

    2.2 새로운 관리 사이트

    2.3 요약

     

    CHAPTER 3 마이크로서비스를 위한 애플리케이션 서버

    3.1 꼭 필요한 만큼의 애플리케이션 서버

    3.2 JeAS 선택하기

    3.3 요약

     

    CHAPTER 4 마이크로서비스 테스트

    4.1 어떤 유형의 테스트가 필요한가?

    4.2 단위 테스트

    4.3 불변성이란 무엇인가?

    4.4 통합 테스트

    4.5 소비자 중심 계약 테스트

    4.6 추가 읽기 목록 

    4.7 추가 연습문제

    4.8 요약

     

    CHAPTER 5 클라우드 네이티브 개발

    5.1 클라우드란 무엇인가?

    5.2 서비스 모델

    5.3 클라우드 네이티브 개발

    5.4 클라우드에 전개하기

    5.5 미니시프트 시작하기

    5.6 마이크로서비스 클라우드 전개

    5.7 클라우드에서 테스트하기

    5.8 추가 연습문제

    5.9 요약

     

    Part 2 엔터프라이즈 자바 마이크로서비스 구현

     

    CHAPTER 6 마이크로서비스 소비하기

    6.1 자바 클라이언트 라이브러리를 통해 마이크로서비스 소비하기

    6.2 JAX-RS 클라이언트 라이브러리로 마이크로서비스 소비하기

    6.3 요약

     

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

    7.1 왜 마이크로서비스를 발견할 수 있어야 하는가?

    7.2 손테일로 마이크로서비스 등록하기

    7.3 손테일을 통해 등록한 마이크로서비스 소비하기

    요약

     

    CHAPTER 8 내고장성과 모니터링 전략

    8.1 분산 아키텍처에서 발생하는 마이크로서비스의 실패

    8.2 네트워크 실패

    8.3 실패 영향 경감시키기

    8.4 히스트릭스를 지불 마이크로서비스에 추가하기

    8.5 요약

     

    CHAPTER 9 마이크로서비스 보안

    9.1 마이크로서비스 보안의 중요성

    9.2 키클록 사용하기

    9.3 스트라이프 마이크로서비스에 보안 적용하기

    9.4 사용자 인증 획득하기

    9.5 요약

     

    CHAPTER 10 마이크로서비스 하이브리드 아키텍처 구성하기

    10.1 카얌베 모노리스

    10.2 카얌베 모노리스 실행하기

    10.3 카얌베 하이브리드 - 마이크로서비스를 사용하는 모노리스

    10.4 하이브리드 클라우드에 전체 전개하기

    10.5 요약

     

    CHAPTER 11 아파치 카프카를 이용한 데이터 스트리밍

    11.1 아파치 카프카가 할 수 있는 일은 무엇인가?

    11.2 모노리스 아키텍처를 스트리밍을 사용해 단순하게 만들기

    11.3 데이터 스트리밍을 위해 카프카 전개하고 사용하기

    11.4 추가 연습문제

    11.5 요약

     

    부록  스프링 부트 마이크로서비스

    A.1 스프링 부트 프로젝트 해부도

    A.2 애플리케이션 프로퍼티 설정하기

    A.3 스프링 부트 스타터 의존관계

    A.4 스프링 부트 애플리케이션 개발하기

    A.5 스프링 부트 테스트

  •  바쁜 자바 개발자를 위한 마이크로서비스 책!

    마이크로서비스를 적용하는 데 가장 알맞은 해법을 꼭 필요한 만큼만 제시한다.

     

    이 책은 자바로 마이크로서비스를 개발할 때 필요한 여러 요소를 간결하면서도 꼭 필요한 수준만큼만 설명한다. 자바 엔터프라이즈 서버 개발 경험이 있는 개발자라면 어렵지 않게 책의 내용을 이해할 수 있고 쉽게 마이크로서비스 개발을 시작할 수 있다. 게다가 레거시를 마이크로서비스 구조로 변환하는 예제를 보여주기 때문에 레거시 서비스를 중단하지 않고 점진적으로 마이크로서비스를 도입할 때도 도움이 된다.

     

    “자바 개발자가 마이크로서비스를 성공적으로 구현하는 데 필요한 개념, 패턴, 프레임워크를 잘 설명한다.” - 앤드루 블록, 레드햇

    “모노리스에서 마이크로서비스 아키텍처로 전환하기에 앞서 반드시 알아야 하는 내용을 다룬다.” - 케룸 세나나야케, 에퀴닉스

    “기업에서 마이크로서비스를 구현하는 방법을 완벽히 소개한다. 마이크로서비스에 관한 여러 문제를 살펴보고 그 해법을 다양하게 제시한다.” - 다미안 마시니, UBA 아르헨티나


    • 2019년 7월에 출간된 <엔터프라이즈 자바 마이크로서비스>에 대해 살펴보겠습니다. 약 1년전 한빛미디어에서 출간한 책이며, 최근에 시장에서 많은 관심을 받고 있는 마이크로서비스에 관한 책입니다. 



      이 책은 Thorntail(https://thorntail.io/) 프로젝트를 이끌고 있는 켄 피니건(Ken Finnigan)이 작성했으며, 번역은 오현석 님께서 맡아주셨습니다. 바로 이전 책의 번역도 오현석 님께서 맡아 주셨는데, 인연이 있는 듯 합니다.



      <엔터프라이즈 자바 마이크로서비스>는 약 300여 페이지로 구성된 책이며, 휴대하며 읽기에 큰 부담은 없습니다. 종이와 편집의 품질은 만족스럽지만, 종이가 너무 얇아 뒷장이 비치는 부분은 아쉽습니다. 글을 읽을 때 뒷장의 글씨가 겹쳐 보여 가독성이 좋지 않습니다.  



      한빛미디어에서 기획하고 추진하는 한빛리더스 프로그램에 참여하며 작성한 글입니다. 




      이 책에서 다루는 내용은?



      MicroProfile은 여러 런타임에서 애플리케이션 이식성을 제공하는 마이크로서비스를 구성하는 JavaEE API 및 기술 모음 스펙의 모음집입니다. MicroProfile 최신 버전은 2020년 2월 18일에 발표된 3.3이며, 2020년 6월에 발표된 Thorntail 2.7.0.Final 버전에서 MicroProfile 3.3을 공식적으로 지원합니다. 관련 주요 사항은 다음 링크(https://wiki.eclipse.org/MicroProfile/Implementation)에서 자세히 살펴보실 수 있습니다.



      스프링 부트에서 제공하는 스타터 도구처럼 https://thorntail.io/generator/ 에서 프로젝트를 구성하는 프로젝트 골격을 만들 수 있습니다. 이때 JavaEE는 물론 MicroProfile, Hibernate, Fault tolerance, Security 등의 다양한 자바 세상의 기술들을 선택하여 프로젝트를 생성할 수 있습니다. 


      이 책은 마이크로서비스 환경에서의 테스트 방법, 클라우드 환경을 기반으로 한 개발 방법, 마이크로서비스 개발 및 필요한 요소에 대한 안내 등을 다루고 있어 마이크로서비스에 대해 학습할 때 많은 부분에서 도움을 얻을 수 있는 책이라고 생각합니다. Thorntail도 Netflix의 마이크로서비스 프로젝트를 활용하고 있습니다. Netflix에서 유지보수 중단을 결정한 이후 다른 대안으로 이전할 노력을 기울이고 있다고 하여 더 믿음을 주는 프로젝트라고 생각합니다.



      <엔터프라이즈 자바 마이크로서비스>는 각 장마다 연습문제를 제공하고 있습니다. 꼼꼼하게 이 문제들을 해결한다면 Thorntail 활용에 조금 더 가까이 다가갈 수 있을 것 같습니다.




      마치면서



      <엔터프라이즈 자바 마이크로서비스>는 2부로 구성되어 있습니다. 1부터 1~5장까지 분산시스템과 마이크로서비스의 전반적인 아키텍처를 다루고 있으며, 애플리케이션 서버를 만드는 방법과 테스팅, 클라우드 네이티브 개발에 대한 개념을 소개합니다. 2부는 서비스 레지스트리, 내고장성, 보안 등 마이크로서비스 개발에 관련된 핵심 내용을 설명하는 것으로 구성되어 있습니다.



      <엔터프라이즈 자바 마이크로서비스>을 활용하여 MicroProfile 3.3을 공식적으로 지원하는 Thorntail 프레임워크에 대한 맛을 보실 수 있습니다. 비록 Thorntail에 의존적으로 구성된 책이지만, 이 책을 통해 Microservices에 대한 통찰력을 얻을 수 있을 것으로 생각됩니다. 


      이 책에서 다루는 Thorntail 프레임워크에 대해서는 이 책을 통해 처음 마주했는데, 꽤 매력적인 프레임워크로 생각합니다. 이번 기회로 Thorntail에 대해 알게 되었고 매력적인 프레임워크로 생각되어 지속적으로 관심을 갖고 살펴보려 합니다.

    • 











       





      사진 설명을 입력하세요.













      이책은 가볍게 어떻게 마이크로 서비스를 구성하는가에 대해 이해하는데 정도에 도움이된다.



      요즘 msa 는 aws 나 클라우드가 화두가 되면서 많이 발전과 관심을 가지고 있고,



      그초석을 다지는데 이책은 중요 내용을 포함하고 있다.



      책의 중요 내용을 요약하여 정리하였다.


       



      Jax-rs 나 jeas 의 개념을 설명하고 런타임의 종류를 알수가 있다.



      Jeas 를 사용하면 마이크로 서비스와 함께 사용하기에 꼭 필요한 런타임만을 패키징 할수 있다. 런타임 중에서 손테일이 가장 커스텀화를 잘 할수 있는 jeas 런타임이라고 한다.


       


       



      아퀄리안은 프로덕션 환경에 가까운 실행환경을 제공하고 그런 환경과 상호작용해야 런타임 컨테이너가 필요한 복잡한 테스트를 단순화 할수있는 훌륭한 테스트 프레임워크이다.


       



      마이크로 서비스 테스트의 핵심은 마이크로서비스가 정의하는 계약, 즉 마이크로 서비스가 노출하는 api를 검증하되 마이크로 서비스가 api 를 노출하는 의도에 대해서가 아니라 클라이언트가 어떤 요청을 보내고 어떤응답을 받을것으로 예상하는지에 대해서 검증하는 것이다.


       



      미니시프트는 로컬 컴퓨터에서 오픈시프트를 사용하는 클라우드 환경을 제공한다. 따라서 여러 기계를 관리할 필요 없이 마이크로 서비스를 실행하고 테스트하는 과정을 단순화 할수있다.


       



      대략 중요 포인트를 정리 해보았는데



      전체 마이크로 서비스가 어떻게 구성되고 돌아가는지 파악하는데에 있어 도움을 줄수 있는 책으로



      처음 접하고자 하는 사람에게 추천하고싶다.


       






      

       

    • 마이크로서비스는 개발자 컨퍼런스에서 자주 들리는 단어입니다.


       


      많은 기업이 마이크로서비스로 개발하려고 하는데요.


      개발자들에 대한 마이크로서비스에 대한 책은 나와 있지만 이해하기 어려웠습니다.


       


      난이도가 어렵거나 방대한 분량이 개발자들이 어려운 책이었습니다.


       


      적당한 분량과 난이도로 된 책이 나와 소개하려고 합니다.


       


      책 제목은 ‘엔터프라이즈 자바 마이크로서비스’입니다.


       


      이 책의 대상은 4년 이상 엔터프라이즈 자바 개발 경험이 있는 개발자를 대상으로 합니다.


       


      또 마이크로서비스에 관심 있는 사람들도 개발자도 이 책을 읽으면 서비스에 대한 이해가 될 겁니다.


       



      java1.png


       


      ◆ 책의 구조


      책의 구조는 크게 2부로 나뉩니다.


       


      1부인 1~5장에서는 분산 시스템과 마이크로 서비스의 전반적인 아키텍처를 알려줍니다.


       


      아키텍처를 알려주고 다음으로 간단한 애플리케이션 서버를 만듭니다.


       


      서버를 만든 후에는 테스팅 하는 것을 통해 개발 프로세스를 익힐 수 있습니다.


       


      그 외에도 클라우드 네이티브 개발 개념도 설명해줍니다.


       


      2부에서는 서비스 레지스트리, 내고장성, 보안 등 마이크로프로세스의 핵심적인 부분을 배웁니다.


       


      마이크로 서비스와 분산 처리에 대한 관심이 있는 분들에게 좋은 책입니다.


       



      java2.png


       


       


      ◆ 프로그램 관리


      프로그램을 효율적으로 관리하기 위해선 모듈로 관리를 하게 됩니다.


       


      중앙 집중형 컴퓨팅 환경에서 분산 컴퓨팅 환경으로 넘어가게 됐습니다.


       


      분산 환경으로 넘어간 이유는 무엇일까요?


      이유는 코드의 재사용 때문이 아닐까 생각됩니다.


       


      통째로 가지고 있다면 코드를 찾기 위한 시간이 많이 소비됩니다.


       


      크게 바뀌지 않고 재사용 가능한 코드는 모듈을 쓸 수 있습니다.


       


      또한 서비스의 크기가 크다면 한 번 실행되는 많은 시간이 걸립니다.


       


      하지만 분산처리를 하게 되면 실행되는 시간도 쪼개지므로 더 빠른 서비스를 운영할 수 있습니다.


       



      java3.png


       


       


      끝으로 국내의 경우에는 자바 프로젝트가 50% 이상입니다.


       


      정부의 경우에는 더 많이 사용합니다.


       


      하지만 새로운 설계 방식으로는 바뀌지 않는 관행이 있습니다.


       


      하지만 언젠가는 바뀔 수도 있을 것입니다.


       


      그때를 위해서 이 책은 단비 같은 책이 되리라 생각이 드는데요.


      엔터프라이즈에 대한 전체적인 큰 틀을 알 수 있어서 자바 개발에 관심 있는 분들에게 추천해드립니다.


       



      java4.png


       


       

    •  



      1.jpg


       



      2.jpg


       


       



      '마이크로서비스'란 정확히 어떤 개념인지 궁금하기도 했고 '엔터프라이즈 자바'도 무엇인지 궁금해서 '엔터프라이즈 자바 마이크로서비스' 도서를 집어서 보게 되었습니다.


      책이 제수준에는 어려워 끝까지 읽진 못하고 클라우드 네이티브 장까지만 보고 리뷰를 남기려고 합니다.


       


      마이크로서비스는 반대 개념인 '모노리스'의 단점을 해결하기 위해 등장했는데요.


      모노리스와 마이크로서비스 개념 설명은 첫 장부터 깔끔한 전개로 저의 첫 궁금증을 해소시켰습니다.


      엔터프라이즈 자바란 무엇이고 전형적인 엔터프라이즈 자바의 아키텍처, 모노리스의 설명과 장점과 그 문제점들, 마이크로서비스와 분산 아키텍처의 개념과 등장 배경, 왜 도입해야 하는지 장단점들을 소개한다.


       


      또 마이크로서비스를 만드는데 있어 엔터프라이즈 자바를 써야하는 이유도 서술한다.


      하나 하나 자세한 설명으로 '왜'를 포인트로 잡아 글을 전개하는 방식이 마음에 들었다.


       


       



      3.jpg


       



      4.jpg


       


       


      Java EE API 안의 REST API 구현을 지원하는 JAX-RS를 예제 프로젝트로 이용했다.


      얼마 전에 스프링으로 바로 시작을 해서 JAX-RS API가 낯설기는 했지만 스프링도 Java EE 표준 명세를 따르기 때문인지 몇몇 부분을 제외하고는 금방 코드를 이해할 수 있었다.


      ( 3장 중간에 스프링 부트를 활용한 마이크로서비스 예제도 나오긴 한다. )


       


      그러나 책에서는 마이크로서비스를 어떻게 하면 잘 만들 것인지에 집중하기 때문에 Java EE 안에 어떤 모듈들이 있으며 JAX-RS에 지원하는 기능들을 자세히 소개하지는 않는다.


      소스 코드에 세세한 설명이 담겨있긴 하지만...


      RESTful API를 만들어보는 두 번째 장부터 모르는 부분이 있다면 따로 공식 문서를 참고해야 한다.


       


       



      5.jpg


       


       


      마이크로서비스들을 만들었으면 그에 대한 테스트 코드는 어떻게 작성해야 하는지도 한 챕터에 할애했다. 마이크로서비스 관점에서 단위 테스트와 통합 테스트는 무엇인지 설명하고 직접 테스트 코드를 만들어 확인한다.


       


       



      6.jpg


       


      5장부터는 본격적으로 클라우드를 소개하고 마이크로서비스를 배포하는 방법을 다룬다.


      IaaS, PaaS, SaaS 서비스 모델을 소개하고 클라우드 개발을 왜 해야 하는지를 처음에 설명하고 직접 클라우드에 전개하는 법을 그림과 함께 상세하게 풀어나갔다.


       


      생소한 용어와 생소한 배포 프로그램들도 많고 설정법도 있었지만 어떤 식으로 클라우드에 마이크로서비스를 전개하는지 대충 경험해볼 수 있었다.


       


       



      7.jpg


       



      8.jpg


       


       


      남은 뒷 부분은 마이크로서비스들이 서로 호출해 상호작용해보는 경험을 해보고, 모니터링 전략과 보안, 하이브리드 아키텍처, 아파치 카프카를 이용한 데이터 스트리밍, 스프링 부트 마이크로서비스 예제 프로젝트를 경험해본다.


       


      중간까지 읽어보지 않았지만 뒷 장에도 흥미로운 주제가 많아 꼭 완독해보고 싶은 도서다.


      엔터프라이즈 자바와 마이크로서비스란 개념에 생소해도 자세한 설명이 뒷받침되어있어 초보자도 충분히 도전해볼 만한 도서인 것 같다.



    • 책표지02.jpg


       



      ******  이 책의 특징



      이 책은 입문자용은 아니다. 자바 개발 경험이 있는 개발자를 대상으로 한다. 그런 개발자 중에 마이크로서비스에 대해 기본적인 지식을 갖췄거나, 엔터프라이즈 자바 기술이 아닌 기술을 기반으로 하는 환경(Node.js 등)에서 마이크로서비스를 시도해본 개발자와 마이크로서비스 개발 경험이 없는 개발자를 대상으로 한다.







      다소 내용의 수준이 높다고 할 수 있다.







      *******  이 책은 각 장과 각 절의 내용은 어느 정도 독립적이다.







      *******  이 책이 다루는 범위







      1장. 독자들에게 자바 엔터프라이즈를 소개한다.







      2장. 쇼핑 사이트의 카테고리 목록을 관리하기 위한 내용을 소개한다.







      3장. 애플리케이션 서버라는 개념을 소개한다.







      4장. 소비자 중심의 계약 테스팅이라는 개념을 소개한다.







      5장. 클라우드에 대해 이야기하고 다른 클라우드 환경에서 사용할 수 있는 여러 서비스 모델을 소개한다.







      6장. 외부 마이크로서비스가 제공하는 라이브러리와 추상화를 제공하는지에 대한 설명이다.







      7장. 외부 마이크로서비스를 찾을 때 필요한 기능을 설명한다.







      8장. 실패에 대해 설명하고 어떻게 실패의 영향을 줄일 수 있는지 살펴본다.







      9장. 마이크로서비스의 보안, 키클록을 통해 보안을 달성하는 방법을 설명한다.







      10장. 캬얌베 모노리스를 실행할 수 있는 방법을 보여준다.







      11장. 아파치 카프카의 데이터 스트리밍을 사용해 하이브리드와 마이크로서비스 사이의 데이터 중복을 감소시키는 방법을 설명한다.


       



      깃허브에 책에서 필요한 소스코드도 제공이 된다.


       



      실무에서 사용되고 바로 적용 가능한 내용들을 위주로 책이 쓰여져 있어



      서 초급자가 보기에는 난이도가 있다고 생각합니다.







      실습을 통하여 설명을 진행하기 때문에 난이도가 있기는 하지만 조금 고민하면서 이애해가며 배울수 있습니다.







      오랫만에 다시 자바와 관련 된 엔터프라이즈 자바 마이크로서비스라는 책을 다시 보니 마이크로서비스 구현 자체가 처음이라 생소한 내용도 많고 따라 가기가 좀 어렵기도 하였지만 실무에서 사용될만 내용으로 꾸며져 있어서 아주 좋은 공부였습니다.






       



      책에 총평을 하자면 - 중급 개발자로 넘어가는 그 이상인 개발자가 볼만하다고 생각됩니다. 이미 자바와 클라우드에 대해서 전반적으로 알고 계신다면 충분히 가치가 있는 책이라고 할 수 있습니다.


       



      https://blog.naver.com/activeup/222015065512

    •  



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


       


       


       



      아마도 아직 나와 같은 신입 개발자 혹은 연차가 얼마 안되는 주니어개발자라면 아직 MSA가 익숙하지 않을 것이다. 설계와 구현 둘 다 중요하지만, 연차가 쌓일 수록 중요한 능력이 설계능력이 아닐까 싶다(최근 강의나 책등 좋은 공부자료가 많아 평균적으로 신입들의 실력이 많이 상승했다는 얘기를 들은 적이 있다). 사실 설계는 어느정도 서비스를 운영해본 경험이 없으면 그 능력을 키우기 힘들다고 생각한다. 그리고 자료또한 별로 없다. 이 '엔터프라이즈 자바 마이크로서비스'는 자바를 주 언어로 사용하는 개발자들이 MSA 설계를 할 수 있도록 도와주는 좋은 공부자료가 되어 줄 것이다. 이론적으로 이해가 되지 않는 부분은 실습 코드를 통해서 어렴풋이 이해할 수 있다. 


       



      (개인적으로 최근에 테스트 코드에 집착하고 있다)테스트 코드 작성에 대한 얘기도 빼놓지 않아 더 좋다고 생각했던 책이다. 


    • 마이크로서비스라는 단어를 많이 들어보기는 했는데, 실제로 업무에 활용할 일이 없어서 전체적인 개념을 이해하고 있지는 못했다. 







      책은 전형적인 엔터프라이즈 자바 아키텍쳐에서 시작해서 그것이 왜, 어떻게 복잡해졌는지를 보여주고 그로인한 문제점이 무엇인지 확인 하는 것으로 시작 한다.







      그리고 마이크로서비스가 무엇인지, 마이크로서비스들로 이루어진 분산 아키텍처가 무엇인지 또한 어떤 이점이 있는지에 대해서 설명을 이어 나간다.







      1장의 마지막에서는 마이크로서비스로 마이그레이션 할 때 사용할 수있는 패턴들에 대해서 이야기 하고 있는데, MSA 에 대한 전체적인 그림을 파악 하려면 1장만 읽어도 될듯 하다.







      2장 부터는 실제로 카얌베 모노리스라는 애플리케이션을 마이크로서비스로 마이그레이션 하면서 마이크로서비스를 엔터프라이즈 자바로 개발하는 방법에 대해 배운다.







      5장은 클라우드 개념 및 클라우드안에서의 개발에 대해 개념이 별로 서있지 않아서 많이 어려웠다.







      좀 건너뛰어 9장을 재미있게 읽었는데, 키클록이라는 사용자 식별과 접근 관리를 제공해 주는 오픈소스 프로젝트를 소개 하고, 이것으로 마이크로서비스에서 사용하는 것에 대한 내용을 다룬다. 







      “마이크로서비스에 필요한 것이 무엇이든 (인증, 권한 부여 또는 둘 다) 설계 단계에서 보안을 고려해야 한다. 미루고 미뤄서 마지막에 다룰 수 있는 것으로 보안을 간주해서는 안된다” 라는 문구는 인상적이다.







      책을 읽으면서 예전에 봤던 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기 를 다시 한번 봤는데, 예전에 전혀 모르겠던 내용이 조금은 더 이해되는 느낌이기는 했다. 


       



      MSA 에 대해서 전혀 모른다면 1장 정도는 꼭 읽어보길 권하고 싶다.




    •  


      이번에 리뷰하게 된 책은 '엔터프라이즈 자바 마이크로서비스'입니다.


      책 리뷰는 한빛미디어로부터 책을 지원받아 작성하였습니다.


       




       


      자바에 대한 경험이 없는 개발자에게는 어려운 내용일 수 있고, 기본적으로 자바를 알고 있다는 가정하에 작성된 책이기 때문에 책을 보시기 전에 Spring이나 자바에 대한 기초개념은 알고 책을 봐야 이해하기 쉬울 것이라고 생각된 책입니다.


       


       




       


       



      책을 읽다보니 생각보다 내용이 상세하게 들어가 있어서 놀랐습니다. DDD 주도 설계, 실무에서 프로젝트를 진행하다보면 항상 고민하는 부분 중 하나입니다. 도메인 내에서 도메인을 컨트롤 해야하는 문제로 인해 추가적인 개발이 필요한 경우도 있으니까요. 도메인 내에서 처리하도록 개발을 하도록 고민하는 부분도 마이크로 서비스에서 중요한 부분이라고 생각해왔는데 책에서 다루어주는 것을 보고 내용이 깔끔함과 함께 상세한 내용을 꽉꽉 눌러담아놓은 좋은 책이라는 생각이 들었습니다. DDD에 대해서 더욱 자세히 공부하기 위해서 'DDD Start! - 최기선(교보문고)' 책을 추천드립니다. 품절 상태이긴한데 가끔 재고가 풀릴 때가 있어서 구입해서 보시면 좋을 것 같아 추천드립니다.


       


       




       



      빅뱅패턴, 하이브리드 패턴, 스트랭글러 패턴 등 여러 패턴을 설명해주고 있고 그런 패턴들 중에서 대다수의 기업들이 모노리스에서 마이크로서비스로 전환하면서 하이브리드 패턴을 많이 사용하고 있습니다. 


       


       




       


      이 책에서 마음에 들었던 부분 중 한 부분은 설명 시에 그림으로 보기 편하게 설명하고 있다는 점입니다. 글로만 봐서는 무슨 내용인지 이해가 잘 안가고, 어려울 때가 있는데 책 전반적으로 그림이 많아서 내용을 이해하기 쉬운 것이 장점입니다.


       


       






       


       


      8장의 내용 중에 회로 차단(서킷 브레이커) 내용이 나오는데 실제로 서킷 브레이커를 적용 중이었던 제가 느끼기에, 책을 쓰면서 많은 고민을 했고 마이크로서비스에 대해서 고민해봐야하는 부분들을 책에 잘 녹여놓았다를 매번 느끼게 해줍니다. 마이크로서비스로 개발을 진행하면서 서킷 브레이커, 보안(9장) 등을 끊임없이 고민하고 생각하며 개발을 진행하고 있는데 이런 내용들이 책에 나오니 반갑기도 했습니다.


       


      책 전반적으로 모노리스 서비스를 마이크로 서비스로 전환하면서 고민해야하는 많은 내용들을 담고 있습니다. 마이크로서비스로 전환을 하려고 하는 기업, 팀에서 서비스 구축 전에 한번 읽어봤으면 좋겠다라는 생각을 합니다. 제가 마이크로 서비스 구축을 하기 전에 봤다면 도움이 많이 되었을 것 같습니다.


       




    •  


       


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


       


      사회가 발전 할수록 관련 업무도 더욱 분업화 되고


      기존에 신경쓰지 않았던 중요하지 않던 부분도 어느 순간 중요한 업무의 하나로 바뀌어 있다.


      따라서 우리가 늘상 업무에 사용해 오던 시스템들도 회사의 성장에 따라 계속 발전해 나간다.


      기존에 10가지였던 업무가 어느덧 몇 배가 넘는 큰 규모의 서비스가 되어 있다면 어떻게 해야 할까?


      지금 까지는 현재 사용하고 있는 시스템에 기능을 하나 둘 덧붙여 가며 시스템의 크기를 늘려 왔겠지만


      이것은 물리적으로든 논리적으로든 곧 한계에 부딪치게 된다.


      물리적 문제는 비교적 쉽게 해결 할 수도 있다.


      클라우드 시스템을 이용하여 처리 할 수 있다.


      대표적인 시스템이 아마존 웹 서비스(AWS) 와 마이크로서비스 애저(Azure) 등의 서비스를 이용하면 된다.


      하지만 이번 포스팅에서는 논리적 한계에 이르렀을때의 방안이다.


       


      기존의 대부분의 서비스는 10개든 100개든 모든 기능이 하나의 서비스에 묶여 있었다.


      따라서 간단한 하나의 기능을 수정하거나 추가를 하려면


      모든 서비스를 멈춰야 했다.


      서비스의 크기가 작다면 문제는 없었다. 재기동 하는 시간이 오래 걸리지 않았기 때문이다.


      하지만 기능의 수가 많아 지면 많아 질 수록 서비스의 크기는 늘어나게 되고


      시스템을 재기동 하는 시간도 덩달아 같이 늘어 난다.


      따라서 일과 시간에는 처리 할 수 없고 사용자가 없는 새벽 시간에 작업해야 한다.


      문제라도 하나 생기게 된다면 상상할 수 없는 악몽의 시간이 시작된다.


       


      마이크로서비스는 필요한 기능을 하나의 독립적인 시스템으로 동작하게 한다.


      따라서 작은 기능 하나를 수정했거나 추가 했다고 해서 모든 시스템을 재시작 하는 부담을 덜 수 있고


      기능을 쉽고 빠르게 반영할 수 있다.


       


      마이크로서비스를 적용하는 일은 쉽지 않다.


      대표적으로는 스프링이나 스프링부트를 사용하는 것으로 알고 있었는데


      일반적인 자바만을 사용해 마이크로서비스를 구현할 수 있다는 것을 이 책을 통해 알게 되었다.


       


      마이크로서비스 자체가 쉬운 부분이 아니다.


      따라서 이 책의 적절한 독자층은 어느정도 개발 경험이 있는 개발자여야 할 것이라고 생각된다.


       


      물론 개발 경험이 얼마 되지 않는 개발자가 읽어도 괜찮다.


      책의 저자는 마이크로서비스가 무엇인지, 왜 마이크로서비스를 도입해야 하는지


      기존의 모노리스 시스템을 어떻게 마이크로서비스로 전환시켜 나갈 수 있는지를


      그림을 통해 쉽게 설명해 주고 있기 때문이다.


       




       


       


      이 책은 스프링과 스프링부트를 이용하지 않는다.


      책의 마지막에 부록으로 스프링부트를 이용하는 방법이 나오지만


      부록으로 나오는 만큼 내용이 간단하다.


       


      수많은 개발자들의 노력과 연구의 집대성인 이러한 프레임워크를 이용하지 않는 다는 것은


      많은 부분의 설정과 개발을 직접해야 한다는 것이다.


      하지만 반대로 마이크로서비스에 대한 깊이있는 이해와 경험을 쌓을 수 있어서,


      추후에 마이크로서비스 프레임워크를 도입할때 많은 도움이 될 것은 분명하다.


       


      어떤 시스템을 도입하든 그 그간을 이루는 개념이나 사상, 언어를 알아두면 많은 도움이 된다.


       


      마이크로서비스를 공부하고 있다면 한번쯤 읽어 보면 좋을거 같다.




    •  


      이 책은 마이크로 서비스에 대한 내용의 책이다.


      기초부터 실제 구현까지 다루면서 내용이 이어지는대 다음과 같은 장단점을 찾아 볼수 있었다. 


       


      장점


      - 마이크로 서비스에 대한 개념에 대해서 이해를 할 수 있다. 


      - 마이크로 서비스에 대한 여러가지 아키텍처들에 대한 내용을 이해 할 수 있다. 


      - 마이크로 서비스를 구성할 때 어떠한 툴들이 사용되는지, 또는 툴은 어떻게 사용할 수 있는지 간단히 체험해 볼 수 있다. 


       


      단점


      - 실제 코드가 나오긴 하지만 배경지식 없이 책만으로는 이해하기는 힘들 것 같다.


      - 개인적으로는 코드와 툴에 대한 집중을 하던지 아니면 이론에 대한 내용을 집중을 하던지 했으면 더 좋았을 것 같다는 생각이 들었다. 


       


      위에 써놓은 장단점 처럼 초보자들이 공부하는데 읽은 책으로는 어려움이 클것 같다. 개발을 하면서 마이크로 서비스를 접해보고 이론적인 내용도 알고 있는 분들이 정리하면서 공부하기는 도움이 될것 같다. 


       





    • 마이크로 서비스를 마케팅 용어가 아닌 실무에서 직접 적용할 수 있는 훌륭한 교과서 같은 책이라 생각된다.


       


      각 부분 별로 이론과 실제 코드를 잘 버무려 이론( 혹은 실무 ) 가 부족한 프로그래머가 이해하기 쉽게 작성되어 있다.


       


      특히나 실제 코르를 통해 서비스를 직접 작성해 볼 수 있게 되어 마이크로서비스를 기획/진행하고 있는 실무자들에게는 큰 도움이 될 수 있을 것 같다.

    • 이 책은 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


       






    • 저번 리뷰 때는 자바 스프링에 관한 내용을 리뷰하였는데, 이번에도 제가 친숙한 자바를 기반으로한 마이크로서비스에 관한 책을 리뷰할 기회를 얻었습니다.




















      책에서는 마이크로서비스 기초부터 활용까지, 그리고 더 나아가서 어떻게, 왜 써야하는지 또한 친절하게 설명해주는 부분이 매우 직관적이였습니다.




















      이전부터 넷플릭스, 아마존 같은 미국의 거대한 IT 회사들은 마이크로서비스를 업무에 자주 적용하고 있습니다. 마이크로서비스는 소프트웨어 산업에서 가장 뜨거운 주제 중 하나이며 많은 기업들이 마이크로서비스를 도입하고 싶어합니다.


























      마이크로서비스의 정의와 적용해야하는 이유를 이해하기 위해서 먼저 모놀리스 방식의 소프트웨어를 책에서는 설명해주고 있습니다.






      모놀리스 방식의 소프트웨어에서는 주로 3계층(3-tier) 아키텍처를 사용 합니다.




















      책에서는 모노리스가 무엇이고 아키텍쳐(구조)를 그림을 통해 이해하기 쉽게 도와줍니다.


























      그리고 자바에서 가장 중요한 객체지향 프로그래밍의 개념이 어떻게 적용되는지 또한 코드를 통하여 설명해주고 있습니다. 그리고 코드를 그냥 보여주는 것이 아니라, 코드에서 각 요소마다 어떤 기능을 나타내는지 또한 세세하게 설명해주고 있습니다.












      마지막으로 좋은 책 제공과 기회를 주신 한빛미디어 담당자 분들께 감사 드립니다. 7월에도 내용이 탄탄한 도서를 읽고 빨리 리뷰를 남기고 싶습니다.





    • 이번에 리뷰할 책은 "엔터프라이즈 자바 마이크로서비스" 입니다.


       



      B8925824072_l.jpg


       


       


      마이크로서비스가 도래한 배경부터 장점, 그리고 마이크로서비스를 위한 기반기술(환경), 테스트, 클라우드 deploy, 서비스 discovery, 내 고장성과 모니터링, 보안 등등을 다루고 있습니다.


      또한 아주 오래된 웹 어플리케이션에 하이브리드패턴을 통해 새로운 마이크로서비스를 덧붙여가는 과정을 통해 하나씩 필요한 개념들을 배울 수 있습니다. 300페이지의 분량으로 꼭 필요한 부분만 알찬 내용을 담고 있습니다. 


       


       


      기존 (모든 컴포넌트가 한번에 deploy되는 형태의)모노리스방식의 단점을 얘기하면서, 제한된 context단위의 서비스별로 분산처리하는 마이크로서비스의 개발방식이 생겨나게 되었습니다.


       


      일반적인 WAS는 j2ee등을 지원하기 위해 상당히 많은 기능을 포함하고 있어 매우 무겁습니다.  이에 JeAS(Juest Enough Application Service)라는 실행에 꼭 필요한 기능들만 패키징한 런타임이라는 개념이 생겼고 JAX-RS, CDI, JSON-P 정도의 기능들이 가볍게 동작합니다.


      드롭위저드, 파야라 마이크로, 스프링 부트, 손테일 등등이 이런 JeAS런타임들이며 어느것을 선택하느냐에 따라 패키징방법 및 소스의 annotation이 달라집니다.


       


      테스트는 일반적으로 알고 있는 단위 테스트 및 통합 테스트외에 소비자 중심 계약 테스트라는 마이크로서비스 소비자와 마이크로서비스 사이의 계약을 정의하는 합의 문서(pact document)를 기반으로 하는 테스트에 대해서도 다루고 있습니다.


       


      기존 사용하고 있던 서비스에서 마이크로 서비스를 찾아서 호출하는 케이스를 위해 하드코딩된 URL을 통해 호출하는 형태부터 추상화된 라이브러리사용 그리고 최종적으로 레지스트리에 등록된 서비스를 찾아서 이용하는 방법을 넷플릭스 리본을 통해 설명해준다.


       


      마이크로서비스의 보안에 대해선 키클록 오픈소스를 통해 설명한다.


       


      마이크로서비스가 여러 런타임으로 분산되어 있으면 필연적으로 네트웍에서 문제가 발생하는 경우가 많은데 이런 여러 문제상황별로 설명하고 히스트릭스라는 오픈소스를 통해 설명합니다.


       


      그리고 마지막으로 카프카를 통해 데이터 스트리밍에 대한 내용을 다루고 있습니다.


       


      회사에서 여러 컴포넌트로 이루어진 웹서비스를 모노리스방식으로 개발하면서


      마이크로 서비스로의 전환이나 도입은 막연히 힘들지 않을까 생각하고 아예 관심도 갖지 않고 있었는데


      하이브리드방식으로 기존시스템에 영향을 주지 않고 마이크로서비스형태의 서비스를 추가하는것이 생각보다 어렵지 않을 수 있겠구나 하는 생각이 들었습니다.


       


       


      메이븐 apache-maven-3.6.2 버전으로는 빌드 및 실행에 문제가 있네요.


      [ERROR] Failed to execute goal io.thorntail:thorntail-maven-plugin:2.2.0.Final:package (package) on project chapter1: Execution package of goal io.thorntail:thorntail-maven-plugin:2.2.0.Final:package failed: An API incompatibility was encountered while executing io.thorntail:thorntail-maven-plugin:2.2.0.Final:package: java.lang.AbstractMethodError: null


       


      전 메이븐 3.5.3으로 했을때 이상이 없었습니다.




    •  


      들어가며


      현재 나와 우리 팀은 프로젝트를 진행하며 필요에 따라 아키텍처를 개선해 나가는 중인데 서비스가 점점 커지면서 유지보수가 어려워지거나 여러 팀과 협업을 하다보니 자연스럽게 마이크로서비스 형태가 되어가고 있다. 서비스를 나누다 보니 외부 트래픽을 적절한 서비스로 분배해주기 위한 API Gateway가 필요하게 되고, 백엔드 서버들간 통신을 위한 내부 gateway나 큐와 같은 또다른 시스템들을 필요로 하게 되고, 아키텍처는 점점 복잡해졌다.


      나중에 알고 보니 이런 복잡한 상황들을 위한 아키텍처가 마이크로서비스 아키텍처이고, 같은 고민을 이미 선배 개발자들이 해왔으며, 이미 이런 것들을 비교적 쉽게 할 수 있는 도구들이 많이 나와있는 상황이었다. 현재 진행 중인 프로젝트가 마이크로서비스를 지향하고 있지만 마이크로서비스에 이해도가 높진 않다고 생각하기 때문에 이러한 도구들을 적극 활용하는 것이 좋다고 본다.



      더군다나 자바 기반의 서비스라면 잘 만들어져있는 프레임워크 위에 마이크로서비스를 더 쉽게 구현할 수 있다. 엔터프라이즈 자바 마이크로 서비스라는 이 책에서 이러한 내용들을 잘 설명하고 있다.


      책을 읽으며


      이 책은 번역서임에도 불구하고 저자를 보지 않았다면 한국사람이 썼다고 생각할 정도로 번역 품질이 좋다. 어색한 문장을 거의 찾아보기 힘들고, 어려운 내용을 이해하기 쉽게 쓰여졌다.


      게다가 아래와 같이 설명글도 잘 작성되어 있고,


       




       


      또 아래와 같이 그림도 많이 포함되어 독자들의 이해를 돕는다.


       




       


      사실 나는 자바 언어로 개발은 하고 있지 않기 때문에 자바 관련 내용은 크게 도움되진 않았지만 마이크로서비스를 구현하기 위한 방법과 이론은 동일하기 때문에 언어와 무관하게 개념 이해에는 큰 도움이 되었다.


      조금 우려가 되는 부분은 나의 경우 업무 특성상 연관된 부분이 많아서 이해하는데 어렵진 않았지만 익숙치 않은 독자들이라면 처음 들어보는 도구들로 인해 혼란스러울 것 같기도 하다는 생각이 들었다. 하지만 이 또한 극복한다면 엄청난 도움이 될 것이라 생각한다.


      마무리하며


      이번에 읽을 때는 코드 부분은 스킵하고, 훑어내려가며 읽었는데 내용이 너무 좋아 다시 한번 찬찬히 읽어 봐야겠다. 잘 알려진 마이크로서비스 아키텍처 관련 책(?) 이후로 꼭 봐야할 필독서라고 생각한다.


       


    • 요즘 마이크로서비스가 대세인 하다. MSA 흥행에는 기존 웹서비스들이 Cloud 전환하는 데에 제일 적합한 형태가 MSA라서 그런게 아닌 싶다.



      웹서비스를 개발하는데 여러 언어들이 있지만, 중에서 가장 많이 쓰이는 언어 중에 하나인 자바를 생각하지 않을 없다. 우리나라는 대부분 자바로 개발된 웹서비스들이 많이 있다.



      그런 자바로 개발된 웹서비스들을 생각해 보면 대부분 스프링으로 개발한 많을 하고, 스프링 중에서도 부트를 활용한 MSA 전환이 많을 같다.



      물론 내가 생각하는 것이 다는 아니겠지만, 적어도 내가 웹서비스들은 Cloud 전환하는 모두 스프링 부트를 활용해서 빅뱅방식으로 재개발하는 프로젝트들이 전부였다.



       그런 상황에서 책은 나에게 신선한 부분이 많이 있었다. 부트 아니 스프링은 벗어나서 JAVA EE 활용해서 마이크로서비스를 만드는 방식이라니, 참으로 새로웠다. 물론 책에 스프링 부트를 활용하는 방법도 나오지만, 엔터프라이즈 자바(JAVA EE) 생각해보면 누가 이걸 쓰나 싶기도 하고(물론 많이 사용하는 데도 많이 있겠지만) JAVA EE 결국에는 스프링과 유사한 부분이 많은 하다.



      JAVA EE 옛날 기술인거 같지만, 어디선가는 많이 사용하고 있을 뜻하고, 결국에는 스프링도 JAVA EE 경량화 해서 나온것인 만큼 생각해보면 유사한 부분이 많을 밖에 없을 하다.


       



      스프링하고 부트로만 개발해 사람이나, 기존 시스템이 JAVA EE 개발된 환경이라면 한번쯤 만한 책인 싶다.


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


       


       


      엔터프라이즈 자바에 마이크로서비스를 얹은 재미있는 책이 한빛미디어를 통해 번역되었다. 책은 자바를 기반으로 하는 마이크로서비스를 소개하고 있는데 자바 언어 자체를 모른다면 책을 읽는데 어려움이 있을 수 있다. 책을 소개할 때 대상 독자를 아래와 같이 정의한다.


       


      "이 책은 최소 4년 이상 엔터프라이즈 자바 개발 경험이 있는 개발자를 대상으로 한다. 그런 개발자 중에는 마이크로서비스에 대해 기본적인 지식을 갖췄거나, 엔터프라이즈 자바 기술이 아닌 기술을 기반으로 하는 환경(Node.js 등)에서 마이크로서비스를 시도해본 개발자도 있을 것이다. 하지만 엔터프라이즈 자바 마이크로서비스를 개발한 경험이 없는 개발자가 이 책의 대상이다."


       


      책은 모노리스부터 마이크로서비스의 개략적인 소개로 시작된다. 결국 최종 목표는 엔터프라이즈 자바 마이크로서비스를 이해하고 개발하는 것이지만 이 책을 통해 얻을 수 있는 부수적인 것들이 상당하다. 최종 목표로 향해가는 길목에서 우리는 아래와 같은 주요 내용을 챙기게 된다.


       


      - 마이크로서비스 모델


      - CI/CD 이해


      - 클라우드 네이티브 개발


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


      - 개발을 마친 애플리케이션에 보안 추가


       


      혹시 자바 언어 자체는 잘 모르지만 마이크로서비스에 대한 이해가 있고, 클라우드에 대한 얕은 지식만 있다면 이 책은 꽤 훌륭하게 읽히는 책이다. 내 경우가 그런 경우다. 이제 곧 자바 개발 입문을 목전에 두고 있는 상태인데 책을 덮고 나니 좋은 선배 개발자와 기분 좋은 대화를 마친 기분이 든다.

    • 파이썬 고 등으로 쉽고 간단히 마이크로서비스를 만들 수 있지만 보안이나 스케일링을 고려할 때는 결국 자바로 하게 되어있다. 그래서 내부용이나 간단한 것만 아니면 자바로 했겠지만, 이 책은 어떤 서비스든 자바로 마이크로서비스 개발이 가능하다는 것을 알려준다. 오픈스택과 오픈소스 기반의 솔루션들을 함께 사용하면 가능하고, 이 책은 하나씩 그 방법들을 알려준다


      0d250425-e9ae-4742-b33d-78133047abca (2).jpeg


       


    •  



      요즘 필자가 사내에서 진행하는 프로젝트에서 사용하는것이 자바이고 그 중에서 특히나자바 스프링 부트와 마이크로 서비스 아키텍처 기법을 이용하여 프로젝트를 진행하고있던 찰라정말 시기 적절하게 위의 책이 등장하게 되어 이번에 리뷰하게 되었다이 책은 자바를 이용한 마이크로 서비스를 진행하려는 개발자들에게 어떤 관점으로서비스 아키텍처에 접근해야되며어떤 부분들에 주목해야하는지그리고 어떤식으로 서비스들을 나누어 함수들을 유기적으로 결합시켜야하는지 등을 매우잘 설명한 알짜배기 책이라 할 수 있다.








      【어떤 독자를 위한책인가】



      이 책은 서비스라는 개념에 대해서 어느정도 알고 있는 실무자들에게 적합한 책이라 생각된다물론 초심자들이 읽어도 좋은 책이이긴 하나실제로 그리 와닿지 않을 가능성이크고 또한 책의 내용을 정확히 이해하는데에 있어어려움이 있을 수 있기 때문이다따라서 현재 자바를 이용한 특히 자바 스프링 부트와 자바 마이크로 아키텍처를 이용하여무엇인가 서비스를 구성하고 개발하려는 독자가 있다면 이 책은 훌륭한 방향성을 가르쳐 줄 것이라 본다.








      【책의 구성】 '엔터프라이즈 자바 마이크로 서비스책의 구성은 어떠한가.



      이 책은 필자의 기준에서 보았을때적절한 량의코드 스타일 설명과 이론 설명을 병행하고 있다또한 이론 설명을 할때 다양한 그림과 계층 구도를 예를 들어가며 설명하기 때문에 한층더본인이 기획하고 개발하려는 서비스에 한발짝 더 다가갈 수 있는 그런 구조를 취하고 있다또한 다양한 상황과 예를 들어가 친절히 하나하나 설명해주는 구조를 취하고 있어 독자로하여금 충분히 궁금해할 부분을 시원히 긁어주는 구조를 택하고 있다다만 자바의 기초 문법이나 스프링의 자세한 내용등은 자세한 설명이 없기 때문에 이 부분이부족한 사람들은 다른 책과 함께 위 도서를 공부할 것을 권한다.








      【엔터프라이즈 자바마이크로 서비스를 읽으며…….



      이번에 새로운 프로젝트에 투입되며 필자가 느낀점은시대는 정말 많이 변했지만그 본질은 크게 변하지 않았다는 점이었다누군가는 새로운 기술이 매일매일 생겨나는 오늘의 시대가 절망일 수 있겠지만필자의 눈에는 그 본질은 크게 변하지 않았고 오히려 전통적인 접근법이 그 어느때보다도 더 많이 사용되는 시대라는 점에서 절대 두려워 할 필요가 없다는 점이다물론 빅데이터 마이닝과 인공지능과 같은 분야가 요즘의 트랜드로 부각되고 있지만위 분야들은 10년전에도 엄청나게 부각되었었다다만 그 부각정도가 다른 분야에 가려저 두각을 나타내지 못했을 뿐중요성은 예나 지금이나 크게 바뀌지 않았다그렇기에 지금의 격변하는 시대를 살아가는 개발자들에게 절대 새로운 것을 배우는데에있어 두려워하지 말라고 당부해주고 싶다그 근본은 옛날의 가장 기초가 되었던 기술들이고 그것들을 충분히 잘 이해하고만있다면 크게 어려워해할 일이 아니기 때문이다.


       






    •  

































      이번에 엔터프라이즈 자바 마이크로서비스라는 책에 대해서 리뷰를 하게 되었다



      용어부터가 어렵다 "엔터프라이즈 자바" 그렇다면 엔터프라이즈 자바란 무엇인가에 대해서부터 알아보자



      엔터프라이즈 자바는 API의 모음과 그 구현을 말한다. API와 구현은 UI로부터 아랫단의 데이터베이스에 이르기까지 웹 서비스를 통해 서로 통신하며 내부 레거시 시스템에 통합된 전체 애플리케이션 스택을 제공한다.



      어렵다..... 개발자들이 자신의 분야에 맞는 원하는 기능들을 미리 만들어 놓아 좀더 비지니즈 가치를 제공하는 일에 집중할 수 있도록 만들어 주는 기능을 모아놓은것이라고 생각하면 될것 같다.



      가장 많이 사용되는 플랫폼으로는 자바 플랫폼 엔터프라이즈 에디션(Java EE)과 스프링(Spring)이 있다. 엔터프라이즈 자바를 사용하는 대부분의 기업 개발자들은 이 두 프레임워크를 사용한다고 한다



      그렇다면 마이크로 서비스란 무엇인가? 마이크로 서비스는 한 프로세스 안에 들어가 실행되는 단일 전개로 구성되며, 비즈니스 기능 중 구체적인 일부분을 충족하기 위해 작동된다.



      한 마이크로서비스와 다른 마이크로서비스의 전개와 실행은 완전히 분리된다.


       



      이 책은 2부로 나뉜다. 1부는 1장부터 5장까지 분산시스템과 마이크로서비스의 전반적인 아키텍처를 다루고, 애플리케이션 서버를 가볍게 만드는 것과 테스팅, 클라우드네이티브 개발에 대한 개념을 다룬다



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


       




      Part 1 마이크로서비스 기초

















      1장은 독자들에게 엔터프라이즈 자바를 소개한다. 특히 모노리스가 무엇이고 왜 모노리스가 생기는지에 대해 설명한다.
















      2장은 쇼핑사이트의 카테고리 목록을 관리하기 위한 레스트풀 종단점을 개발하는 과정을 보여주면서 마이크로 서비스를 소개한다.













      3장은 꼭 필요한 만큼의 애플리케이션 서버라는 개념을 소개하고 그 런타임 시스템을 지원할 때 사용할 수 있는 프레임워크들의 차이를 보여준다.


       














      4장은 마이크로 서비스를 사용할 경우 단위 테스트와 통합 테스트가 어떻게 달라지는지 보여주고 테스팅을 쉽게 하기 위한 도구를 소개한다.













      5장은 클라우드에 대해 이야기하고 다른 클라우드 한경에서 사용 할 수 있는 여러 서비스 모델을 소개한다.


       



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













      6장에서는 외부 마이크로 서비스가 제공하는 기능을 소비해야 하는 경우 사용할 수 있는 라이브러리와 각각이 어떤 수준의 추상화를 제공하는지에 대해 설명한다.











      7장은 6장을 확장애서 마이크로 서비스가 사용하고 싶은 외부 마이크로서비스를 찾을때 필요한 기능을 추가한다.













      8장은 마이크로서비스와 분산 아키텍처에서 가장 중요한 주제로 실패에 대해 설명하고 어떻게 실패의 영향을 줄일 수 있는지 살펴본다.











      9장에서는 마이크로서비스의 보안에 대해 설명하고 키를록을 통해 보안을 달성하는 방법을 설명한다















      10장에서는 카얌베 모노리스를 다시 살펴보면서 변경하지 않은 상태에서 카얌베를 실행 할 수 있는 방법을 보여준다.













      11장에서는 아파치 카프카의 데이터 스트리밍을 사용해 하이브리드와 마이크로서비스 사이의 데이터 중복을 감소시키는 방법을 설명한다.










       



      총평



      이 책의 대상 독자로는 최소 5년 이상 엔터프라이즈 자바 개발 경험이 있는 개발자를 대상으로 한다고 한다. 책이 난이도가 좀 있다 마이크로서비스에 대해 개념과 원리를 이해하고



      책을 본다면 수월할수 있을것 같다



      기업에서 마이크로 서비스를 구현하는 방법에 대해 알고 싶은 개발자에게는 유용할것이다.



      자바 개발자가 마이크로 서비스를 성공적으로 구현하는데 필요한 개념, 패턴, 프레임워크에 대해서 잘 설명하였다






      

       


    • KakaoTalk_Photo_2019-09-12-21-14-43.jpeg


       


       



      기존 모노로스 식의 문제점과 마이크로 서비스에 대한 개념과 장점을 소개하여



      기존 서비스를 MSA 마이그레이션 했을떄 장점을 소개 해주었습니다.


       


       



      MSA 구현, 테스트, 운영 등을 경험해볼수있게 책의 구성과



      설계에 대한 구조도를 한눈에 있어서 내용을 이해하는데 많은 도움이 되었습니다.


       


       



      한권으로 MSA 대한 모든 개념과 기술을 마스터 있다고 없지만,






      MSA 대해서 시작을 하기 위한 사람이라면 더욱 쉽고 빠르게 적응하고 습득할 있도록 도와주는 책이라고 생각합니다.


       




    •  



      안녕하세요 예지우랑입니다. 
      최근 제가 자전거타는 프로그래머에서 요가하는프래그래머가된사실을 알고계신가요?



      오늘은 오랫만에 도서리뷰를 하려고합니다. 
      전통의 명가 한빛 미디어에서 리뷰의 기회를 주셨습니다. 항상 감사하게생각합니다. 
      아무래도 깊은 내용의 책을 짧은 기간내에 소화한 후 리뷰를 하기는 제 역량이 아직 부족한거같습니다 ㅠ
      그래서 이번 리뷰는 책의 목차 소개 및 훑어본 후 짧은 소감정도로 마쳐야할거같습니다. 

      그러면 책의 목차를 살펴보도록하겠습니다. 



       



      위에 목록에서 나온것처럼 
      일단 개념부터 들어가며, 구현방법 및 테스트, 운영까지 전반적으로 다루기때문에 책에서 말하는 독자층인 마이크로서비스에 관심을 가지고있는 분들이 처음 보기에 매우 좋은 책이라는 생각이 듭니다. 



      먼저 책을 읽은 짧은 소감
      - 기존 모놀리식 서비스의 문제점부터 시작합니다. 
      - 마이크로 서비스란 무엇인지 알려줍니다. 
      - 실제 서비스를 만들면서 진행하기때문에 이해가쉽습니다. 
      위에 3가지정도로 요약할 수 있을거같습니다. 



      아쉬운점이 있다면 일부 용어들은 굳이 번역이 필요했는가? 하는 생각이 들었습니다. 소비자 => 컨슈머 뭐 이런것들은 그냥 영어릉 표기했다면 더 좋았을거같다는 생각이 드네요 


      이상으로 정말정말 가벼운 리뷰를 마칩니다. 



      리뷰라고 부르기도 좀 부그럽지만 저는 내일부터 제법 긴 휴가를 떠납니다. 
      휴가중에 가지고가서 좀더 자세히 읽어보고 어쩌면 다시한번 리뷰를 쓸지도 모르겠습니다.


       


      감사합니다. 






  • 내용이 없습니다.
닫기

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