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

한빛미디어

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

성공적인 마이크로서비스 아키텍처 적용을 위한 체크포인트와 전략

한빛미디어

집필서

판매중

  • 저자 : 김용욱
  • 출간 : 2023-02-06
  • 페이지 : 408 쪽
  • ISBN : 9791169210737
  • 물류코드 :11073
초급 초중급 중급 중고급 고급
4.9점 (19명)
좋아요 : 12

국내 환경에 최적화된 마이크로서비스 아키텍처 구축 프로세스

 

마이크로서비스 아키텍처가 세상에 알려진 지 오랜 시간이 지났지만 실무 현장에서는 아직도 마이크로서비스 아키텍처 도입에 대한 많은 의문점을 가지고 있다. 이 책은 마이크로서비스 아키텍처와 관련하여 실무자가 가장 많이 했던 질문과 그에 대한 답변을 담고 있다. 따라서 이 책으로 마이크로서비스 아키텍처에 대한 막연했던 궁금증을 풀 수 있으며 왜 도입해야 하는지 알 수 있다. 또한 마이크로서비스 아키텍처를 정확하게 이해할 수 있도록 핵심적인 특징에 대해 살펴보고 마이크로서비스 아키텍처를 도입하면 어떤 목표를 달성할 수 있는지, 어떻게 목표를 수립해야 하는지를 설명한다. 그리고 국내 실정에 맞게 마이크로서비스 아키텍처를 실무에 적용할 수 있도록 단계별로 고려해야 하는 내용과 전략에 대해 설명하며 서비스를 구축할 때 필요한 아키텍처 스타일, 개발 프로세스, 설계 원칙, 구현 패턴 등을 알려준다.

 

 

 

상세페이지 마이크로서비스 아키텍처 구축 가이드.jpg

 

김용욱 저자

김용욱

삼성SDS에 입사하여 엔터프라이즈 시스템 개발자/운영자, 임베디드 소프트웨어 개발자, 패키지/서비스 설루션 소프트웨어 아키텍트로 근무하다 2018년부터 마이크로서비스 아키텍처를 시스템에 적용하고자 할 때 도움을 주는 역할을 하고 있다. 클린 코드, 리팩터링, TDD 같은 애자일 프랙티스에 관심이 많으며 좋은 세미나 영상을 발견하면 자막을 만들어 주변에 소개하는 활동도 하고 있다.

1부. 마이크로서비스 아키텍처 이해하기


1장. 마이크로서비스 아키텍처란?

1.1 일반적인 정의

1.2 정확하게 무엇인가?

1.3 마이크로서비스 아키텍처의 대표적인 사례와 특징

1.4 점진적인 전환 vs 빅뱅 전환

 

2장. 어떻게 적용해야 할까?

질문1. 우리 시스템에 마이크로서비스 아키텍처가 적합할까?

질문2. 엔터프라이즈 시스템에도 어울릴까?

질문3. 프로젝트 일정은 어떻게 수립해야 할까?

질문4. 프로젝트 비용은 어떻게 산정해야 할까?

질문5. 서비스는 분리하고 데이터베이스만 열어주면 안 될까?

질문6. 데이터베이스는 어디까지 분리해야 충분할까?

질문7. 도메인 주도 설계를 배워야 할까?

질문8. 우리 시스템은 왜 마이크로서비스 아키텍처를 도입했을까?

질문9. 우리 시스템은 마이크로서비스 아키텍처일까?

 

3장. 데이터베이스를 분리한다고?

질문1. 서비스 간의 통신이 너무 많지 않겠어?

질문2. REST API 참조로 속도가 나오겠어?

질문3. 자동으로 롤백이 안 된다고?

질문4. 동시성 이슈는?

 

 

2부. 마이크로서비스 아키텍처 적용하기


4장. 서비스 선정하기

4.1 서비스 선정 및 설계 절차

4.2 적합성 검토

4.3 도입 목표 수립

4.4 분할 가능한 업무 식별

4.5 서비스 선정

4.5 서비스 선정 예시

 

5장. 서비스 설계 원칙

5.1 아키텍처

5.2 설계 원칙

 

6장. 서비스 설계하기

6.1 개요

6.2 검토 항목

6.3 설계 예시

6.4 사례 살펴보기

 

7장. 서비스 개발하기

7.1 세션 관리와 접근 제어

7.2 서비스 간 데이터 참조 가이드

7.3 트랜잭션 관리: 원자성과 독립성

7.4 서비스 간 장애 차단

실무에 최적화된 마이크로서비스 아키텍처 도입 및 운영을 위한 노하우

 

이 책은 크게 2부로 나눠져 있다. 1부에는 마이크로서비스 아키텍처를 도입하기 전에 반드시 생각해봐야 할 체크포인트를 정리했다. 먼저 마이크로서비스 아키텍처를 정확하게 이해하기 위해 명확한 정의와 핵심 특징에 대해 알아보고 마이크로서비스 아키텍처를 도입하는 이유가 무엇인지 살펴본다. 특히 마이크로서비스 아키텍처와 관련하여 실무자가 가장 많이 했던 질문과 그에 대한 답변을 살펴보면서 마이크로서비스 아키텍처를 도입하는 것이 바람직한지, 도입 후 생길 수 있는 구현 이슈는 어떤 것들이 있고 해결 방법은 무엇인지 알아본다. 

 

2부에서는 마이크로서비스 아키텍처를 성공적으로 적용하기 위한 방법을 단계별로 살펴본다. 먼저 시스템의 특성이나 개선 목표에 따라 마이크로서비스 아키텍처 적용이 적합한지 판단하는 방법에 대해 설명한다. 그리고 도입 후 달성할 수 있는 목표를 정의하고 그 목표를 수립하는 과정을 살펴본다. 그다음 시스템의 주요 업무를 파악하고 서비스를 분할해서 도출하는 과정에 대해 설명하고 도입 목표를 만족시키는 서비스 선정 방법을 소개한다. 또한 서비스를 설계하는 데 필요한 기본 내용을 설명하며 서비스 역할과 관계 구체화 및 도입 목표 달성 검증 방법에 대해 살펴본다. 

 

 

★ 대상 독자

 

이 책은 마이크로서비스 아키텍처를 도입 및 구축하려고 하는 시스템 담당자, PM, PL, 개발자 등을 포함하여 마이크로서비스 아키텍처에 관심 있는 모든 독자를 대상으로 한다. 마이크로서비스 아키텍처로 구축되어 있는 시스템의 개선과 애플리케이션 현대화에 관심 있는 독자에게도 도움이 될 것이다. 

 

 

★ 이 책의 구성


1부_마이크로서비스 아키텍처 이해하기


1장_마이크로서비스 아키텍처란?

마이크로서비스 아키텍처의 명확한 정의와 핵심적인 특징을 살펴보고 이해하기 어려운 이유와 도입했을 때의 장점 등에 대해 설명한다. 또한 마이크로서비스 아키텍처를 도입한 대표적인 기업들의 공통적인 특징을 살펴보고 마이크로서비스 아키텍처를 적용하는 방식에 대해 알아본다.

 

2장_어떻게 적용해야 할까?

우리 시스템에 마이크로서비스 아키텍처가 적합할지, 프로젝트 일정 수립과 비용 산정은 어떻게 하는지, 데이터베이스는 어디까지 분리해야 하는지 등 시스템 책임자, PM, 아키텍트, 개발자가 마이크로서비스 아키텍처에 대해 관심을 가질만한 내용을 질문과 답변 형식으로 소개한다. 

 

3장_데이터베이스를 분리한다고?

마이크로서비스 아키텍처 구현에 대한 질문과 답변을 담았다. 아키텍처 스타일과 동작 방식을 비교하여 서비스 간의 참조가 생각보다 적은 이유를 이론적으로 설명하며 REST API로 데이터를 조합하는 방식을 예시 코드로 보여준다. 또한 실제 속도를 측정하여 모놀리식 아키텍처로 구현한 경우와 비교해본다. 그리고 여러 서비스의 트랜잭션에서 자동 롤백과 동시성이 보장이 안 되는 상황을 살펴보고 실제 영향에 대해서 설명한다.

 

 

2부_마이크로서비스 아키텍처 적용하기


4장_서비스 선정하기

마이크로서비스 아키텍처의 서비스를 선정하고 설계하는 절차에 대해 전반적으로 살펴본다. 그리고 마이크로서비스 아키텍처 도입 목표 수립 과정과 서비스를 선정할 때 시행착오를 줄이면서 안정적으로 서비스를 분할할 수 있는 방법에 대해 소개한다. 

 

5장_서비스 설계 원칙

서비스를 설계하는 데에 필요한 기본 지식을 소개한다. 먼저 마이크로서비스 아키텍처에 널리 사용되는 REST API, SPA, 클라우드 네이티브 애플리케이션에 대해 알아보고 전통적인 웹 아키텍처와의 차이점과 전통적인 웹 시스템을 마이크로서비스 아키텍처로 전환할 때 고려해야 하는 점을 살펴본다. 그리고 서비스처럼 화면을 업무 단위로 분할할 때 필요한 프런트엔드의 분리 및 조합 기술을 알아본다. 또한 서비스 간의 건전한 의존 관계를 형성하기 위한 기본 원칙과 서비스 간의 의존 관계를 약하게 하여 변경을 쉽게 하고 장애 영향도를 낮추는 설계 원칙에 대해 알아본다.

 

6장_서비스 설계하기

선정한 서비스 동작을 설계하여 서비스 역할을 구체화하고 서비스 간의 관계를 도출하는 방법에 대해 소개한다. 또한 각자 익숙한 설계 방법으로 서비스 동작을 기술하여 서비스 간의 참조나 여러 서비스에 걸친 트랜잭션으로 발생할 수 있는 구현 이슈를 탐지하는 방법에 대해 알아본다. 그리고 서비스별로 변경 및 배포를 독립적으로 할 수 있도록 프로세스와 조직을 확인해보고 장애 격리, 확장성 등을 검토하여 마이크로서비스 아키텍처 도입 목표를 만족할 수 있는지 살펴본다. 마지막으로 마이크로서비스 아키텍처 서비스를 설계하는 데 도움이 될만한 다양한 예시를 소개한다.

 

7장_서비스 개발하기

마이크로서비스 아키텍처로 시스템을 개발하는 데에 필요한 내용을 소개한다. 먼저 시스템의 기본 동작을 결정하는 사용자의 인증/인가 방식에 대해 살펴본다. 그다음 사용자 로그인 상태를 관리하는 다양한 방식을 알아보고 각각의 방식을 기반으로 한 사용자의 인증/인가 방식을 확인해본다. 그리고 서비스가 다른 서비스를 참조할 때 데이터 유형에 따른 구현 방식을 살펴보고, 참조 성능을 최적화하는 방법에 대해 알아본다. 또한 서비스 간의 데이터 참조나 트랜잭션 구현에 필요한 기술을 알아본다. 마지막으로 외부 요인으로 서비스에 장애가 발생할 수 있는 유형을 살펴보고 이를 회피할 방법에 대해 설명한다.

 

 

추천사

 

최근에 클라우드 네이티브 같은 환경과 여러 설루션이 등장하여 마이크로서비스 아키텍처를 구현하기가 수월해졌다. 따라서 마이크로서비스 아키텍처를 구현하기 위한 서비스를 적재적소에 활용한다면 최소한의 인력과 시간으로 완벽하게 장애를 대비할 수 있는 고가용성의 시스템을 구성하고 운영할 수 있다. 이 책은 다양한 사례와 예시 코드를 제공하며 마이크로서비스 아키텍처 구축을 위한 노하우와 설계 시 고려해야 할 핵심 내용을 잘 짚어준다. 이 책에서 다루고 있는 사례들이 현장에서 고민하고 있는 부분과 일치하는 것이 많아서 큰 도움이 되었다. 마이크로서비스 아키텍처를 도입하고자 하는 조직이나 구성원에게 이 책이 훌륭한 가이드가 되어줄 것이다.

_권민승 - 백엔드 개발자

 

이 책의 제목이 내용을 아주 잘 담고 있다. 시중에 마이크로서비스 관련 책은 많이 있지만 실제 구현과 관련된 내용을 이렇게 자세하게 언급한 책은 처음인 것 같다. 매우 실용적인 예시를 담고 있어서 마이크로서비스 아키텍처 도입을 고민하는 독자나 조직에게 큰 도움이 될 것이다.

_백재연 - GDE for Google Cloud

 

실무 현장에서 마이크로서비스 아키텍처를 적용할 때 가장 어려워하는 부분이 서비스 설계와 구현에 대한 것이다. 특히 서비스를 분할할 때 명확한 기준이 존재하지 않아서 각 시스템의 특성에 맞는 설계가 필요한데 이 책에 이와 관련한 내용이 담겨 있다. 또한 저자가 국내 상황을 명확히 인지하고 있어 실무 현장에 적합하게 적용할 수 있는 팁이 많이 포함되어 있다. 단순히 패턴이나 이론 설명으로 그치는 것이 아니라 다양한 예시와 구현 코드, 테스트 결과 등을 제공함으로써 마이크로서비스 아키텍처를 설계하고자 하는 독자에게 많은 도움을 줄 것이다.

_이장현 - 삼성SDS

 

이 책은 마이크로서비스 아키텍처의 기본 개념부터 구현 및 구축에 대한 내용까지 폭넓고 상세하게 다루고 있다. 무엇보다 다양한 그림을 활용한 직관적인 설명으로 마이크로서비스 아키텍처에 대해 좀 더 쉽게 이해할 수 있었다. 또한 마이크로서비스 아키텍처를 구축하고 관리할 때 생길 수 있는 문제를 해결하기 위한 인사이트를 얻을 수 있으며 이와 관련한 유용한 조언도 가득하다. 기존 모놀리식 아키텍처 기반의 대용량 시스템에서 마이크로서비스 아키텍처로 전환을 고민하고 있다면 이 책을 추천한다.

_이석곤 - (주)아이알컴퍼니

 

이 책은 저자가 현장을 돌아다니며 많은 시행착오와 뼈아픈 장애를 경험하면서 얻은 노하우와 지식의 결정체이다. 다른 책과 비교했을 때 확실한 차별성을 가지고 있다. 단순히 개발을 어떻게 해야 하는지에 대한 내용이 아니라 마이크로서비스 아키텍처 도입 목표 수립부터 시스템 개발 완료까지 모든 단계를 다루며 중요한 핵심 포인트를 놓치지 않고 설명해준다.

_임재봉 - Elastic.co

모놀리식과 마이크로서비스.

회사에 입사 지원을 하는 분들도 자주 쓰는 용어이고

현업에서도 자주 언급되는 단어입니다.

 

그런데 막상, 두 가지 단어의 의미를 정확히 설명하는게 쉽지 않고

각 아키텍쳐를 사용했을 때의 시스템 구조나

서비스의 상호 작용을 설계하는 것도 만만치 않습니다.

 

이것은 모놀리스인가 마이크로서비스인가.

MSA를 표방하여 만든 물건도

과연 제대로 마이크로서비스가 추구하는 방향으로

설계되고 구현되고 있는 것인지 모호하기도 합니다.

 

누구를 위한 책인가?

이 책은 이미 모놀리식 아키텍쳐를 사용하고 있는 엔지니어가

새로운 시스템을 설계하거나 재구축하는 과정에 있어

마이크로서비스를 도입하고자 하는 니즈가 있는 독자를 대상으로 합니다.

 

물론 그렇지 않은 독자들도 이 책을 읽는 것은 상관 없겠지만

책 전반에 걸쳐 던지고 있는 "WHY"를 잘 이해하고

마이크로서비스 아키텍쳐가 지향하는 바가 무엇이며

왜 그렇게 하는 것이 좋은지 이해하기 위해서는

모놀리식에 대한 경험이 있는 것이 훨씬 도움이 되기 때문입니다.

 

엔터프라이즈 사례 중심의 구성

이 책의 장점이기도 하고 단점이기도 한것은

책의 전반적인 내용이 엔터프라이즈 사례 중심이라는 점입니다.

 

물론 그렇지 않은 시스템을 예시로 드는 경우도 보이지만

책 전반에 걸쳐 어쩔 수 없이

필자의 많은 경험이 치중되어 있는 분야에 방점이 찍힌 것은

분명 이 책의 명확한 장점이기도 하고 단점이기도 합니다.

 

책의 주된 스토리가 모놀리식으로 구성된 시스템을

마이크로서비스의 어떤 특징들을 이해하고 받아들여

MSA 구조로 변경할 것인가를 다루고 있기 때문에

어찌보면 자연스러운 진행이기도 합니다.

 

다만 독자가 책을 읽으면서 기대하는 전개 방향과

다소 다를 수도 있는 부분이기 때문에

책을 읽기 전에 미리 염두해 두는 것이 좋겠습니다!

 

실무자를 위한 훌륭한 지침서

필자의 많은 경험이 녹아있는 책이다보니

마이크로서비스 아키텍쳐를 구현한다 하더라도

어떤 식으로 각 서비스들이 연관 관계를 맺는 것이 중요하고

또 그 사이에서 발생할 수 있는 문제점들을

어떻게 보완할 수 있는지에 대한 많은 이야기가 담겨 있습니다.

 

면접에서 늘상 질문하게 되는 것이

"모놀리식은 문제가 있는 아키텍쳐인가?"

"마이크로서비스 구조를 도입하면 언제나 좋은것인가?"

와 같은 질문들입니다.

 

재미있게도 "어느 구조가 무조건 좋은 것은 아니다"라는 담론은

모든 후보자들이 자신있게 이야기하지만

구체적으로 어떻게 그런것이냐에 대한 부분으로 넘어가면

의외로 훌륭한 답변이 나오는 경우가 잘 없기도 합니다.

 

각 아키텍쳐가 갖고 있는 장점이 명확하고

제대로 사용하지 못했을 때의 단점 또한 극명하지만

실제로 경험을 많이 해보지 못한 상태에서

피상적인 이해만 갖고 있기 때문이 아닌가라는 생각을 해봅니다.

 

 

 


 

 

 

무늬만 마이크로서비스인가?

모놀리식의 새로운 변형인가?

 

정답은 없습니다.

다만, 우리가 지향해야 하는 것은 명확합니다.

 

사용자들이 쾌적한 경험을 할 수 있는 서비스를 만들어야 하는 것이고

엔지니어들이 걱정 없이 만들고 운영할 수 있는 시스템을 구축해야 하는 것입니다.

 

구현과 함께 조금 더 상위 관점에서의 마이크로서비스도 이해하고 싶다면

한빛미디어에서 출간한 이 책을 읽어보시길 권해드립니다.

 

본 리뷰는 한빛미디어 "나는 리뷰어다" 활동을 통해

서적을 무상으로 제공받아 읽고 작성된 글입니다.

다만, 업계 종사자로서 객관적으로 책의 장단점을 파악하여

책을 구매하는 분께 도움이 될 수 있도록 리뷰를 작성했습니다.

KakaoTalk_20230227_230709317.jpg

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

현재 재직 중인 직장에서는, 운영 중인 거대한 시스템을 재구축하는 프로젝트도 병행으로 진행 중입니다.

전체적인 흐름부터 세세한 변화와 의사결정 포인트들을 하나하나 다 알지는 못하지만

흐름의 키워드들을 기억하는 대로.. 만약 이 대규모 시스템을 마이크로서비스 아키텍처로 전환을 하는 것은 어떨까?

과연 모놀리딕 아키텍처보다 마이크로서비스 아키텍처가 비교적 적절할까?

 

빅뱅 오픈이 예정되어있지만 만약 단계적인 오픈으로 진행했다면 어땠을까?

 

현재의 업무분장과 인원 편성에서 만약 마이크로서비스 아키텍처로 시스템이 변한다면

조직은 어떻게 변화해야하고 장애상황과 정기/비정기 반영, 그 외 현재 운영하는 상황에서

발생하는 시스템 내, 외 적인 프로세스들은 어떠할까?

 

 

 

  이 책은 어플리케이션 레벨에서 마이크로서비스 아키텍처를 말하지만 결국 시스템은 하드웨어에서부터

운영체제, 어플리케이션이 모두 어우러져 운영을 하기위해서는 무엇이 변하면 좋을까?

그리고 변하는 것이 마냥 좋은가? 에 대한 내면의 질문을 생각하면서 읽은 책입니다.

  사실 지금도 답은 마이크로서비스 아키텍처보다는 현재의 모놀리딕 기반이 더 이 조직에선

걸맞아 보입니다. 사람들은 변화를 싫어하고 정말 이것이 너무너무 좋아요~ 하면 자신감과 믿음을 갖고 

열렬하고 지난한 설득의 과정을 거쳐야하겠지만 과연 그러한 장점이 있을지 잘 모르겠습니다.

정말 조직의 기반부터 프로세스 들이 다 새롭게 정의되어야 할 정도로 큰 작업처럼 느껴졌지만

'그럼에도 불구하고' 그 변화의 댓가가 보다 더 나은 상황이라면 할 만한 것 이지 않을까.. 생각했습니다.

 

많은 생각을 하게 만드는 책이었고,, 그만큼 책에서의 설명을 구체적인 실제상황의 예시로 빗대어 해석하면서

읽느라 참으로 더뎠습니다.

 

이 과정과 생각만으로도 큰 가치를 느꼈습니다.

애플리케이션은 플랫폼 위에서 동작한다. 그런데 어떤 플랫폼에 애플리케이션이 존재하느냐에 따라 이와 관련된 담론은 달라지게 된다. 최초에 모놀리스 환경에서 애플리케이션이 구현됐고, 시간이 흘러 SOA 형태로 애플리케이션의 형태가 진화했으며, 근래에 이르러서는 MSA가 소프트웨어 아키텍처의 새로운 바람으로 각광을 받고 있다. 인프라 측면에서 온-프레미스 기반의 환경이 클라우드로 전환되는 추세가 보편화되면서 이에 부응하여 CNA(클라우드 네이티브 애플리케이션)라는 조류가 또 하나의 주류가 되어 가고 있는 실정이다. 클라우드 플랫폼에 최적화된 애플리케이션을 떠받치는 여러 기둥이 존재하지만, MSA는 그 축을 담당하는 하나의 갈래로서 CNA와 떼려야 뗄 수 없는 관계에 놓여 있다. 모든 MSA가 반드시 CNA를 위해 존재하는 것은 아니지만 CNA의 이상적인 구조는 MSA를 떼어 놓고 이야기할 수 없다. 

 

기업의 디지털 트팬스포메이션이 가속화되면서 모든 인프라가 클라우드 위에 구축되고, 레거시 인프라 환경이 클라우드로 전환됨에 따라 이에 부응하는 새로운 변화는 애플리케이션에 지대한 영향을 끼치게 되었다. 이러한 변화는 MSA를 통한 애플리케이션 패러다임의 전환을 주도하고 있고, 이제 MSA를 빼 놓고 새로운 시대의 트렌드를 언급할 수 없게 만들었다. 하지만 MSA는 단순히 하나의 트렌드가 아니라 더 나은 비즈니스 가치를 제공할 수 있는 도구이자 수단이 되어 버렸다. 

 

오늘은 MSA에 대한 이야기를 담고 있는 책에 대해 소개하려고 한다. 그동안 MSA와 관련된 서적이 시중에 적잖이 존재했지만, 국내 실정을 반영하고 실질적인 도움이 될 수 있는 책은 결코 흔하지 않았다. MSA 자체가 워낙 쉽지 않은 탓이기도 하지만 현장에서 들리는 개발과 관련된 이해관계자의 목소리가 오롯이 투영되지 않고 이에 대한 충분한 논의가 포함되지 않았기 때문이기도 하다.  지금부터 소개하는 이 책은 그러한 어려움을 충분히 헤아려 독자에게 MSA로 향하는 여정에 등불이 되어 주는 서적이다. 

 

 

본 서적은 크게 두 가지 파트로 구성되어 있다. MSA에 대한 이해와 그리고 적용에 관한 이야기를 다룬다. MSA에 대한 이해를 바탕으로 현실 세계에 그것을 어떻게 적용하는지와 관련된 내용이 책의 전반을 관통하고 있다. 

 

MSA에 대한 본질적인 이해를 돕기 위해 저자는 일반적인 정의를 위시해서 세부적인 담론을 차례차례 이어 나간다. 저자 관점에서 실제 현장의 목소리를 구체화 후, MSA를 둘러싼 질문에 대한 해답을 제시함으로써 독자는 하나씩 MSA의 실체를 알아 가게 된다. 단순히 추상적으로 이해했던 개념이 저자의 전문성, 여러 상황과 맞물린 케이스 그리고 코드 예제를 통해 어느새 실체화 되면서 MSA가 온전히 해부되고 비로소 MSA를 있는 그대로 받아들일 수 있는 상황과 마주하게 된다. 

 

어느 정도 MSA에 대한 이해가 이뤄지고 나면, 본격적으로 MSA를 적용할 때 필요한 상세한 논의가 뒤따르고 있다. 서비스 선정을 위해 제시되고 있는 주요 전략 및 계획은 현실 세계에서 MSA를 적용할 때 지침과 가이드로서 손색없고 훌륭한 이정표가 되어 준다. 또한 서비스 설계 원칙을 통해 서비스 설계의 방향을 이해할 수 있고 그 원칙이 설계에 어떻게 녹아들어 있는지 맛볼 수 있게 된다. 마지막 장에서는 실제 서비스 개발에 필요한 주요 기술과 고려 사항에 대해 언급하며 놓치지 말아야 할 핵심에 대해 충실히 안내하고 있다. 

 

MSA가 하나의 패러다임으로 자리잡게 되었지만 이를 둘러싼 잡음이 도처에서 들려오며 회의론도 고개를 내미는 것을 심심찮게 목도하곤 한다. MSA가 마치 은탄환인 것 마냥 포장되고 미화되어서도 안 되겠지만 중요한 것은 MSA를 온전히 이해했을 때만이 현실 세계에 그것을 제대로 적용할 수 있다고 생각한다. MSA에 대한 환상과 맹종은 경계해야겠지만 그것에 대한 몰이해도 역시 바로잡을 필요가 있기 때문에 이 책을 통해 MSA의 본질과 마주하는 시간을 가져 보는 건 어떨까? MSA를 향한 여정의 시작이 필요한 이에게 이 책을 강력히 추천한다. 

 

P.S 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

마이크로서비스 아키텍처 구축 가이드.jpg

마이크로서비스 아키텍처. IT 쪽에 발을 담그고 있다면 언젠가부터 자주 듣게 된 말입니다.

급변하는 비스니스 환경에 대응하기에 모놀리식 시스템으로는 한계가 있다는 말을 심심치 않게 들을 수 있습니다.

마이크로서비스 아키텍처를 통해 대응할 수 있다고들 합니다.

얘기는 많이 들었지만 실제로 접해볼 기회를 만나기는 쉽지 않았습니다.

그러나 이젠 아닙니다. 현실에 두 발을 디디고 있는 마이크로서비스 아키텍처를 만날 수 있습니다.

 

궁금한 부분에 답하다

마이크로서비스 아키텍처 도입을 검토하려고 하면 바로 떠오르는 질문들이 있습니다.

주로 담당했던 기술 업무와 관련한 질문들과 미처 생각지 못했던 질문들,

아키텍처가 맡을 범위나 도입을 위해 배워야 할 기술들,

마이크로라는 단어가 떠올리게 하는 과도한 요청에 대한 우려 등등

 

책을 시작하며 이러한 질문에 답하고 있습니다.

이론적인 설명이나 근거보다 실제 구축하면서 현장을 통해 알게 된 내용들을 기반으로 얘기합니다.

피부에 와닿는, 현장감 넘치는 답변을 볼 수 있습니다.

 

해야 할 것들

아키텍처를 적용한 서비스를 만들기 위해 해야 할 내용들을 알려줍니다.

서비스 선정, 설계 원칙, 설계, 개발.

예시와 설명, 그림으로 서비스를 만들어가는 각 단계에서 해야 할 것들을 얘기합니다.

마이크로서비스 아키텍처를 적용한 전체 서비스를 그리지는 않지만,

서비스를 개발하며 반드시 알아야 할 내용들을 설명합니다.

 

반드시 따라야 할 원칙은 없다는 걸 여러 이슈를 통해 알려줍니다.

기술을 밀고 나가는데 매몰되지 않고 조율을 통해 문제를 합리적으로 풀어나가는 방식을 볼 수 있습니다.

 

방향을 가늠하다

구현하는 과정을 따라가다 보면 조금 더 설명이 있었으면 좋겠다는 느낌을 자주 받습니다.

얘기를 풀어나가는 저자도 범위를 두고 고민이 있었을 거라 짐작이 가는 부분입니다.

 

아키텍처를 얘기합니다. 그러나 기술 구현을 풀어내지 않습니다. 이 부분은 독자에게 맡긴다는 뜻이라 생각합니다.

읽는 사람마다 지식과 보유한 기술이 다르기에 격차는 있겠지만, 책을 통해 어디에 무엇이 필요한 지 알 수 있습니다.

 

왜, 어떻게, 무엇을 이라는 질문에

답하고 고민하기를 반복하며 비즈니스와 함께 가는 시스템을 만들 수 있으리라 생각합니다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

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

김용욱 지음

 

마이크로서비스란 ?

마이크로서비스는 무엇인가 ?

 

* 위키백과

애플리케이션을 느슨하게 결합된 모임으로 구조화하는 서비스 지향 아키텍처 (SOA) 스타일의 일종인 소프트웨어 개발기법이다. 마이크로서비스 아키텍처에서 서비스들은 섬세하고 프로토콜은 가벼운 편이다.

애플리케이션을 더 조그마한 여러 서비스로 분해할 때의 장점은 모듈성을 개선하고 애플리케이션의 이해, 개발, 테스트를 더 쉽게 해주고 애플리케이션 침식에 더 탄력적으로 만들어 준다. 규모가 작은 자율적인 팀들이 팀별 서비스를 독립적으로 개발, 전개, 규모 확장을 할 수 있게 함으로써 병렬로 개발할 수 있게 한다. 또 지속적인 리펙터링을 통해 개개의 서비스 아키텍처가 하나로 병합될 수 있게 허용한다. 마이크로서비스 기반 아키텍처는 지속적 배포와 전개를 가능케 한다.

 

* AWS

소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식입니다. 이러한 서비스는 독립적인 소규모 팀에서 보유 합니다.

마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축 할 수 있게 해 줍니다.

 

* Google

애플리케이션 개발을 위한 아키텍처 스타일을 의미합니다. 마이크로서비스를 사용하면 대규모 애플리케이션을 각각 담당 영역을 가진 소규모의 독립적인 구성요소로 구분할 수 있습니다. 마이크로서비스 기반 애플리케이션은 단일 사용자 요청을 처리하기 위해 여러 내부 마이크로서비스를 호출하여 응답을 작성할 수 있습니다.

 

* Redhat

소프트웨어를 구축하기 위한 아키텍처이자 하나의 접근 방식으로, 애플리케이션을 상호 독립적인 최소 구성 요소로 분할합니다. 모든 요소를 하나의 애플리케이션에 구축하는 전통적인 모놀리식 접근 방식 대신 마이크로서비스에서는 모든 요소가 독립적이며 연동되어 동일한 태스크를 완수합니다. 이러한 각각의 구성 요소 또는 프로세스가 마이크로서비스입니다.

 

* 책에서는 ...

일반적 정의,

마이크로서비스 아키텍처는 시스템을 독립적으로 배포할 수 있는 서비스들로 구성하고 각 서비스는 잘 정의된 API로 통신한다. 서비스는 비즈니스 기능 단위로 나뉘어 작고 독립적인 팀들이 담당한다. 또한 마이크로서비스 아키텍처를 적용하면 애플리케이션의 확장이 쉽고 개발 속도도 향상되기 때문에 새로운 기능을 출시하기까지의 시간을 단축시켜 준다.

 

마이크로서비스에 대해서 검색 했을 해보면,

여러 사전 및 문헌 그리고 여러 업체에서 마이크로서비스에 대해서 정의 및 장*단점에 대해서 잘 정리해주고 있습니다.

그만큼  핫하며 클라우드가 보편화 되면서 마이크로서비스에 대해서 많은 서비스에 도입되고 있습니다.

 

이 책은, 이러한 마이크로서비스에 대해서 이러한 여러 정의들을 알기 쉽게 잘 전달 하고자 노력하고 있으며, 여러 장*단점에 대해서 마이크로서비스에 대해 제시하는 기본적인 정의와 장*단점 기준으로 저자의 판단과 이해한 내용에 대해 독자들도 쉽게 받아 들일 수 있도록 서술하고 있습니다.

 

# 이 책에서 제시하는 대상 독자는 ...

중급자를 대상으로 한다고 되어 있으나, 초중급 대상으로도 나쁘지 않은 책입니다.

 

이 책은, 크게 아래와 같이  2가지의 주제로 나뉘어 다루고 있습니다.

1부, 마이크로서비스 아키텍처 이해하기

2부, 마이크로서비스 아키텍처 적용하기

 

1부, "마이크로서비스 아키텍처 이해하기"는 마이크로서비스 아키텍처에 대한 역사적 배경과 용어 설명 그리고 장*단점에 대해서 설명하고 독자가 이해하기 쉽도록 구성되어 있습니다.

1장 ~ 3장까지 총 3개의 장으로 구성되어 있습니다.

1장은 마이크로서비스 아키텍처에 대해 처음 접하는 독자들을 위해 마이크로서비스 아키텍처가 무엇인지에 대해서 설명하고 있습니다.

1장에서 마이크로서비스 아키텍처가 이해하기 어려운 이유를 저자 관점에서 서술하고 있는데, 공감이 가는 내용 입니다.

그리고, 직접적인 관련 없는 것들에 대해서 서술하고 있는 부분도 실제 마이크로서비스 아키텍처에 대해서 학습하면서 관점을 어디에 둘지 방향을 잡을때 도움이 됩니다. 다만, 마이크로서비스 아키텍처에 대한 예시들을 학습할 경우에는 필요한 내용들 입니다.

2장의 "어떻게 적용해야 할까" 를 통해서 자신이 진행하는 프로젝트 및 기업에 적용의 필요성을 찾아가는데 도움을 줄 수 있는 내용들로 구성되어 있습니다.

3장의 "데이터베이스를 분리한다고?"는 마이크로서비스 아키텍처에 대해서 "데이터베이스 분리"라는 주제를 통해서 적용 했을 경우의 장점과 적용해 가는 과정에 대해서 보여주고 있습니다.

 

2부, "마이크로서비스 아키텍처 적용하기"는 4장 ~ 7장까지 총 4개의 장으로 구성되어 있으며,

마이크로서비스 아키텍처를 적용할 서비스 선정 부터 설계 원칙 그리고 설계한 후 개발 진행까지 실무에 적용 할 수 있는 내용들로 구성되어 있습니다.

서비스에 대해서 적용 하는 부분에서 여러 유형들을 보여주는 부분에서도 자신이 적용하고자 하는 서비스와 비교해볼 수도 있고 간접 경험을 해볼 수 있도록 실무 기반에서 구성되어 있는건 좋은 것 같습니다. 

 

책은, 그림 및 표를 통해서 서술된 내용들을 함축 적으로 표현하고 있습니다.

책을 통해서 많은 것들을 보여주려하는 부분과 실무에 도움이 될 수 있는 부분들을 많이 보여주려 하다보니 기반 지식이 없는 상태에서 처음 보기에는 조금 딱딱 할 수는 있을 것 같습니다.

하지만,

마이크로서비스가 어떤 것인지 이해하기에 도움이 되는 책이며,

마이크로서비스 적용해 가는 부분에 대해 간접 경험 해볼 수 있는 책입니다.

그리고, 마이크로서비스 아키텍처를 적용하고자 할 경우 초기에 방향을 잡기 전 한번 읽어 보면 도움이 될 내용들이 많습니다.

 

예제 다운 경로 

  https://github.com/wharup/book-examples

현업 개발자라면 한 번쯤은 다들 들어본 마이크로서비스는 모두가 좋은 것은 알고 있지만 실체가 모호한 그런 개념이지 않나 싶다. 어떻게 구축해야 하는지, 기존 시스템을 어떻게 마이그레이션 할지, 할 수 있는지, 우리가 잘하고 있는지에 대해 명확하게 이해하고 있는 사람은 많지 않을 것이라고 생각한다.

 

이 책은 제목 그대로의 것을 잘 담았다. 마이크로서비스의 개념, 방식, 적용 과정을 End-To-End로 설명한다.

실무자가 가장 많이 했던, 궁금해하는 질문과 그에 대한 답변으로 구성되어 있고 내가 궁금해하는, 할 것 같은 그런 질문에 대한 답을 해준다. 심지어 그것이 납득이 되나 보니 술술 잘 읽혔다. 시니어 개발자님께 듣는 재밌는 마이크로서비스 이야기 같은 느낌이랄까.

 

책의 주제가 마이크로서비스를 도입 및 구축을 고려하고 있는 독자들이 타깃이고 그렇다 보니 PM, PL 등 어느 정도 연차와 경험이 있는 시니어를 대상으로 하고 있다고 생각할 수 있다. 하지만 주니어인 나도 충분히 이해할 수 있도록 쉽게 적혀있다. 특히 2부에서 다루는 서비스 설계 원칙, 설계, 개발 관련 챕터는 도움이 많이 되었다. 당장에도 적용해 볼 수 있는 개발 꿀팁들이 재밌었고 같은 것을 구현할 때 사용할 수 있는 다양한 방식과 안티패턴을 예시와 다이어그램과 함께 설명하는데 개인적으로 이 부분은 다시 읽어보려고 한다.

 

마이크로서비스를 도입하는 것을 고려하고 있거나, 혹은 우리 조직의 마이크로서비스가 그 목적에 맞게 올바르게 운영하고 있는지 등 마이크로서비스에 대한 전반적인 이해도를 높일 필요가 있다면 추천할 수 있는 좋은 책이라고 생각한다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

 

개발자로 일하면서 연차가 쌓이다보니 이제 슬슬 개발을 넘어서서 설계까지 맡아야하는 경우가 생기고 있습니다.

 

간단한 모듈 설계부터 전체적인 아키텍쳐 설계까지 여러가지 일을 맡게 될 일을 대비하여

 

디자인 패턴이나 여러가지 설계 패턴등을 공부하고 있었는데, 이번 기회에 말로만 듣던 MSA

 

마이크로서비스 아키텍쳐에 대한 공부를 위해 이 책을 읽어 보았습니다.

 

이 책은 크게 두가지 파트로 나누어져 있으며,

 

첫번째 파트에서는 마이크로서비스 아키텍쳐에 대한 전반적인 설명과 정의에 대한 내용을

 

질의응답식으로 설명해주고 있고,

 

두번째 파트에서는 마이크로서비스 아키텍쳐를 실제 다양한 분에 적용하는 방법을 

 

사례를 들어 설명해주고 있습니다.

 

이론정리를 질의응답식으로 설명해주는게 의외로 잘 와닿아서 설계에 대한 공부를 하면서 의문이 생겼던 내용을

 

굉장히 쉽게 설명해 주고 있습니다.

 

또한, 가상의 사례를 들어 마이크로서비스 아키텍쳐를 적용하면서 바뀌는 과정들을 보니 실제 적용할 때 어떻게 해야 할 지

 

어느정도 갈피가 잡히는 것 같았습니다.

 

마이크로서비스 아키텍쳐를 배워보고 싶거나 도입 및 구축하려는 개발자, PM, PL 등에게 추천 드리고 싶은 책입니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

기업은 언제나 비즈니스 성과를 높이기 위한 방안을 고민한다. 특히 IT 기술이 비즈니스의 성공을 좌우하게 되는 흐름이 계속해서 지속되면서 늘 빠지지 않고 거론되는 단어들이 바로 '디지털 트랜스포메이션'과 '애플리케이션 현대화'다. 이 때 함께 등장하는 개념이 바로 '마이크로서비스 아키텍처'.

 

마이크로서비스 아키텍처는 최근 몇 년간 매우 인기 있는 개발 방식 중 하나다. 이 아키텍처는 기업이 비즈니스 도메인을 더욱 효과적으로 분리하고, 각 도메인을 담당하는 작은 서비스들을 개발하고 배포함으로써 확장성, 유지보수성, 배포성 등을 높일 수 있는 장점이 있다.

 

이 아키텍처를 사용하면, 서비스를 별도로 구축하고 배포하기 때문에 모놀리식 아키텍처보다 유연하게 개발 및 배포할 수 있다. 또한, 서비스 간의 결합도가 낮아져서 변경 관리를 더욱 쉽게 할 수 있다.

 

하지만 마이크로서비스 아키텍처를 구현하는 것은 모놀리식 아키텍처보다 복잡하다. 각 서비스를 개발하고 배포하기 위해서는 서비스 간의 통신, 서비스 디스커버리, 로드 밸런싱, 로깅 등 여러가지 기능을 구현해야 한다. 이를 위해 많은 도구들이 개발되고 있지만, 이러한 도구들을 학습하고 사용하는 것은 개발자들에게 추가적인 노력이 필요하기도 하다.

 

이 책은 마이크로서비스 아키텍처의 도입과 구축을 목표로하는 시스템 담당자, 프로젝트 매니저, 프로덕트 리더, 그리고 개발자 등 중급 수준 이상의 독자들을 대상로 하는 책이다.

 

구성은 마이크로서비스 아키텍처 도입에 필수적인 체크 포인트를 시작으로, 도입 시의 장단점에 대한 설명을 포함한다. 이후에는 이 아키텍처를 성공적으로 적용하기 위한 방법에 대한 단계별 안내가 이어진다. 이 과정에서는 서비스를 선정하고 설계하는 방법, 서비스 역할을 구체화하고 서비스 간의 관계를 도출하는 방법을 다루며, 이 아키텍처로 시스템을 개발하는 데 필요한 내용을 설명한다.

 

마지막으로, 책은 외부 요인으로 인한 서비스 장애가 발생할 수 있는 유형들을 살펴보고 회피할 수 있는 방법 까지 제시하며 마무리 된다.

 

책을 읽으며 특히 좋았던 점은 저자가 국내 분이시라는 것, 그리고 단순한 기술 개념 나열이 아닌 현장에서 숨쉬는 경험적인 조언들이 담백하게 녹아 있어 실제 업무에서 참고할 수 있는 실무 밀착형 팁이 가득했다는 점이다.

 

그렇기 때문에 마이크로서비스 아키텍처에 관심이 있고 실제 도입을 고려하는 담당자라면 전체적인 프로세스 이해를 위해서라도 필독을 권하고 싶다.

 
 

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

 

KakaoTalk_20230226_205018327.jpg

 

 

마이크로 서비스 아키텍처를 처음 공부하거나 적용하려는 사람들에게 한 번쯤 읽어볼 법 한 좋은 책이 있어서 소개하려 한다.

우선 이 책은 아래와 같이 1부와 2부로 나눠져 있으며 총 7개의 장이 있다.

1부. 마이크로서비스 아키텍처 이해하기
2부. 마이크로서비스 아키텍처 적용하기
1장. 마이크로서비스 아키텍처란?
2장. 어떻게 적용해야 할까?
3장. 데이터베이스를 분리한다고?
4장. 서비스 선정하기
5장. 서비스 설계 원칙
6장. 서비스 설계하기
7장. 서비스 개발하기

마이크로 서비스 아키텍처에 대해서 한번쯤은 다들 생각해봤을 텐데 이 책에서는 마이크로 서비스 아키텍처를 처음 접하는 사람들에 맞춰 구성 노하우를 담아 놨다.

마이크로 서비스 아키텍처에 대한 정의는 아래와 같다.

마이크로 서비스 아키텍처는 시스템을 독립적으로 배포 할 수 있는 서비스들로 구성하고 각 서비스는 잘 정의된 API로 통신한다.

저 말만 봤을 때는 별거 아닌 것처럼 보일지도 모른다. 하지만 직접 구성하려고 하면 고민해야 할 것이 한두 가지가 아니다.

어떤 기준으로 서비스를 분리해야 하는가, 어디까지 분리 해야 하는가, 분리된 서비스는 어떻게 운용해야 하는가 등 여러 가지로 정말 고민할게 많다. 한번 잘못 만들면 나중에 쉽사리 고치기 어려워서 처음부터 잘 설계하고 만들면 좋을 텐데 관련 경험이 부족한 사람들에게는 머리 아픈 일이다..

그럼에도 불고하고 마이크로 서비스 아키텍처를 사용하는 이유는 장점이 명확하기 때문이다.
서비스 단위로 변경하고 독립적으로 배포할 수 있으며 기능을 재사용하고 조합하여 신규 기능을 만들 수도 있고, 유연한 장애 대응 등 여러모로 유연한 대응이 가능하고 장점이 많다.
(물론 관리 포인트가 늘어나는 단점도 있다고 생각한다)

하지만 모든 서비스에 마이크로 서비스 아키텍처를 적용한다고 효과를 본다고 말하기는 어렵다.
우리 시스템에 적합한지 판단하기 애매하고, 적합하다 해도 어떻게 적용할지 고민을 많이 해봐야 한다.
특히 마이크로 서비스 아키텍처는 상당히 추상적인 느낌이 강한데 정의가 명확하지 않기 때문이다.
귀에 걸면 귀걸이 코에 걸면 코걸이 같은 느낌이랄까..
때문에 잘 만들어야 하는 책임을 갖고 있는 우리로써는 설계 초반에 어려운 고민들을 많이 해야 한다.
이 책에서는 그러한 니즈를 정확히 파악하여 단계별로 구성 방식을 알려주고 있다.
내가 마이크로 서비스 아키텍처를 구성해 보면서 고민했던 부분에 대해 상세히 적혀 있는 부분이 많아서
내가 서비스를 구성하기 전에 이 책을 읽었더라면 조금 더 좋은 판단을 할 수 있지 않았을까 한다.
마이크로 서비스 아키텍처뿐만 아니라 서버 아키텍처적인 내용도 많이 볼 수 있다.
또한 책이 상당히 읽기 편안한 구조로 쓰여 있으며

기술적인 구성 방식만 알려주는 것이 아니라 용어나 내용에 대해  설명되어있는 부분이 많아서 어느 정도 아는 사람이 봐도 재밌게 읽을 수 있을 것 같다.

물론 이 책에서 말하는 것이 정답은 아니며 이 책을 읽더라도 실제 구성을 할 때는 많은 고민을 해야 할 것이다.

하지만 이 책을 통해 마이크로 서비스 아키텍처의 구성 방식, 기준과 정의에 대해 어느 정도 알 수 있고 또, 다양한 힌트를 얻을 수 있을 것 같다,
마이크로 서비스 아키텍처를 처음 적용해 보는 사람이라면 한번쯤 읽어보고 시작 해도 좋을 것 같다는 생각이 든다.

 

 
 

 

Author: 김용욱 지음

출판사: 한빛미디어

Score /5: ⭐️⭐️⭐️⭐️⭐️

 

마이크로서비스 아키텍처, 통칭 MSA라고도 불리는 개념은 중요하다면 중요할 수 있고 중요하지 않다면 중요하지 않은 개념이다. 하지만 기업의 비즈니스는 IT시스템이 필수아닌 필수이다 보니 빠른 의사결정을 위한 IT시스템의 보조는 필수다.

그러면 왜 마이크로서비스가 이렇게 중요할까? 그리고 마이크로 서비스가 중요하다면 실제 우리 프로젝트에 어떤 절차를 가지고 도입해야 할까?

실무자들이 생각할만한 생각이다. 실제로 찾아본다면 마이크로 서비스의 개념에 대해서는 설명한 책들이 많이 보이지만 어떻게, 어떤 절차를 가지고 도입해야 하는지 제대로 설명하는 책이 거의 없다. 그 부분에서 이 책을 접한다면 실무자들은 일종의 사이다를 들이킨 것 처럼 속이 뻥 뚫리지 않을까 생각이 든다.

이 책의 장점은 일단 간결하다. 쓸데없이 늘어 놓는 글이 없고 독자가 담백하게 핵심을 이해하도록 배려가 돋보인다.

두번째는 정말 실무를 경험한 실무자가 썼다라는 느낌이 팍팍 드는 책이다. 개인적으로는 읽는 독자들이 레퍼런스로 두고 실무에 써도 무리가 없으리란 생각이 들 정도로 실무에서 일어나는 일들과 어떤 절차를 가지고 도입을 해야할지를 명쾌하게 설명하고 있다. 

이 책은 설계자는 물론 마이크로 서비스를 모르는 개발자도 한번씩 참고할 만한 책이다. IT 업계는 겉으로는 보이지 않지만 치열하다. 해당 업계에 몸 담고 있는 사람이라면 안주하기 보다는 치열한 성장을 위해서 싸워야 한다. 그런 의미에서 마이크로 서비스는 저 멀리 있는 개념이 아니라 우리 앞에 다가와 있는 현재다. 그런 현재를 이겨 나가기 위해서 여러분들의 길잡이로 이 책을 읽어보고 고민하기를 권한다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평임."



한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

 

모놀리식 아키텍쳐 프로젝트를 하다가 msa로 변환할 계획이 있으면 읽기 좋은 책 같다.

msa를 도입해야 하는 이유, 어떻게 도입해야 하는지, 성능이 어떻게 개선되는지 등등 실제로 도입 가능하게끔 설명해준다.

그림이 함께 있어 이해하기도 더더욱 편하고, 한국저서라 그런지 변역체가 없어 읽기도 편했다.

그래서 나중에 msa로 변경하게 되면 꼭 다시 읽어야 겠다고 생각했다.

 

책 초반에는 msa에 대해 사람들이 많이 하는 질문에 대해 적어놨는데,이 부분을 읽으면서 혼자 생각했던 의문들에 대해 어느 정도 답이 될 수 있었다.

 

지금까지 모놀리식만 해봤고, msa는 그저 관심만 있는 정도였다.

그래서 한편으로는 msa로 변환하면 관리 포인트만 더 늘어나고 신경써야 하는 부분만 많아지는 것 아니야?!

했었는데 책을 보고 나서 생각을 바꾸었다.

어서 msa를 해보고 싶다.

 



요즘 IT 세상은 빨리 변화하고 있다. 하루에도 수많은 서비스가 등장하고 사라지기를 반복한다. 이러한 급변하는 환경에서 서비스가 살아남기 위해서는 시장의 요구사항을 얼마나 신속하게 서비스에 반영하느냐가 무척 중요한 시대가 되었다. 그래서 과거에 비해 시스템 개발 주기(기획에서 개발, 출시까지)를 최대한 줄여서 신속하게 새 버전의 서비스를 출시하고 빠르게 사용자의 피드백을 받아서 다시 새로운 버전을 빨리 출시하는 속도가 무척 중요해졌다. 그러나 이전 모놀리식 방식의 시스템에서는 여러 복잡한 기능들이 DB를 중심으로 하나로 통합되어 있다보니 새로운 기능을 추가하거나 하면 전혀 관련없다고 생각한 부분에서 예상치 못한 문제가 발생하는 경우가 많아서 새 버전 출시하는데 시간도 많이 걸리고 출시 당일에도 문제가 발생할까봐 조마조마 했던 기억이 있다. 그래서 이러한 어려움을 극복하고자 서비스 배포 주기를 빠르게 가져갈 수 있고 사용자 폭증에 대응하기도 유리한 마이크로서비스 아키텍처에 대해 알아보고자 이번 도서 리뷰 이벤트에 참가하게 되었다.



이 책은 크게 2부로 구성되어 있다.

1부에서는 "마이크로서비스를 왜 도입하는가?" 에 대한 근본적인 질문에 초점을 맞추고 있다. 그리고 실제 현장에서 마이크로서비스 도입 시 우려하는 내용을 정리하고 어떤 식으로 해결할 수 있는지를 알려준다. 나 또한 서비스 간 네트웍 통신으로 인한 성능 저하 문제라던가, 결국 핵심 정보가 저장되어 있는 DB는 어떻게 처리하는지 등등이 궁금했었는데 관련 내용도 잘 설명되어 있어서 마이크로서비스 아키텍처에 대해 이해하는데 많은 도움이 되었다.

  

2부에서는 마이크로서비스 아키텍처를 성공적으로 도입하기 위한 방법을 단계적으로 설명한다. 각 단계마다 중요하게 고려해야 할 사항이나 예상되는 어려움, 그리고 실제 구현 방법 등을 간단 명료한 문체와 그림, 코드 등으로 설명하고 있어서 어려운 내용을 습득하는데 많은 도움이 되었다.

msa.jpg

 <내용의 이해를 돕는 다이어그램>

 

이 책을 읽으면 학습할 수 있는 내용들을 간단히 요약해 보았다.

* 마이크로서비스 아키텍처를 도입해야 하는 이유를 명확히 정리하자. 그래야 상황에 맞는 적절한 방법을 적용할 수 있다.

* 마이크로서비스 아키텍처를 도입할 때 현장에서 우려하는 문제를 정리하고 이에 대한 해결책 제시

* 모놀리식 아키텍처와 마이크로서비스 아키텍처와의 특징 비교

* MVC 아키텍처와 SPA & API 서버 기반 아키텍처의 특징 비교

* 실제 마이크로서비스 아키텍처를 적용하는 방법에 대한 명확하고 단계적인 설명

* 마이크로서비스 아키텍처를 잘 도입할 수 있도록 서비스를 선정하는 방법

* 마이크로서비스 아키텍처를 적용하기 위한 효율적인 조직 구성

* ACID 트랜잭션 부재를 해결하는 방법

* 다양한 외부 장애 발생 유형과 이를 대응하는 방법 등등

 

 위의 내용 이외에도 작가님의 실무 경험을 기반으로 작성된 책 답게 마이크로서비스 아키텍처를 도입하면서 겪을 수 있는 많은 어려움들과 이를 극복할 수 있는 방안 그리고 도입 시 중요하게 고민해야할 내용 등을 알 수 있으니 마이크로서비스 아키텍처를 도입하려는 분들은 시간과 노력을 아끼는 차원에서라도 꼭 읽어보시길 추천드린다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 
 
 

 

1-230226.jpg

 


모놀리식 서비스에서 마이크로서비스 아키텍처로 전환하는 추세입니다.


모놀리식의 경우 업데이트시 전체 애플리케이션을 다시 빌드하고 배포해야 합니다.


반면에 마이크로서비스의 경우 애플리케이션을 작은 단위로 분해하며 독립적으로 배포할 수 있습니다.


마이크로서비스 관련 책을 살펴보려 하는데요.

살펴볼 책은 ‘마이크로서비스 아키텍처 구축 가이드’입니다.


마이크로서비스는 모 놀리실 서비스에 비해 기능을 빠르게 변경할 수 있습니다.


또한 서비스를 개별적으로 확장하거나 장애가 발생해도 영향받는 서비스는 최소화됩니다.


마이크로서비스는 어떤 아키텍처인지 같이 살펴보겠습니다.


2-230226.jpg

 



 

◆ 모놀리식과 마이크로서비스

모놀리식은 하나의 컴퓨터에서 운영하는 서비스로 장애가 발생 시 전체 서비스에 영향을 끼칩니다.


마이크로서비스는 장애가 일어난 서비스만 문제가 발생하고 그 외 다른 서비스에는 영향을 끼치지 않습니다.


마이크로서비스 아키텍처는 서비스 간의 상호작용을 세밀하게 제어할 수 있는 장점이 있기 때문에 이러한 문제를 해결하기에 좋은 아키텍처입니다.


서비스를 그대로 유지할 수 있는 부분이 장점이긴 하지만 관리를 못 하면 문제가 발생합니다.


이 문제를 해결하기 위해 분산 트랜잭션을 지원하는 데이터베이스를 사용해야 합니다.


여러 서비스 운영시 트랜잭션에서 자동 롤백과 동시성이 보장 안 되는 상황이 발생할 수 있습니다.


데이터베이스는 운영시 데이터 불일치 문제가 있는지와 일관성이 깨지지 않는지 또한 트랜잭션 충돌이 발생할 수 있는지 살펴봐야 합니다.


이 문제를 해결하는 방법을 생각해보면 분산 트랜잭션 관리 시스템을 사용하거나 서비스 간의 상호작용을 잘 설계하여 문제를 최소화해야 합니다.


3-230226.jpg

 



 

◆ 마이크로서비스 아키텍처 적합도

마이크로서비스 아키텍처가 모든 서비스에 적합한 것은 아닙니다.


비즈니스 로직, 팀의 구조, 운영을 고려하면서 결정해야 합니다.


서비스 간의 의존성은 줄어들지만, 운영 부담이 증가할 수 있습니다.


단순한 시스템의 경우 서비스를 여러 개로 만드는 것은 복잡도를 높이고 좋지 않습니다.


대규모 시스템은 의존성이 낮기 때문에 부하 분산과 가용성을 보장할 수 있습니다.


비즈니스 로직을 서비스 간의 경계를 정의하고, 판단해야 합니다.


시스템의 특성과 조건을 정확하게 파악하고 적용 여부를 결정하시길 바랍니다.


4-230226.jpg

 



 

끝으로 마이크로서비스 아키텍처를 도입하고 구축하는 것을 목적으로 합니다.


마이크로서비스 아키텍처에 대한 이해와 도입 전에 고려해야 할 사항을 알려줍니다.


모놀리식에서 마이크로서비스로 전환을 고려하지만, 어디부터 시작해야 할지 고민인 분들도 계실 겁니다.


마이크로서비스 도입을 고려하는 분들에게 마이크로서비스 아키텍처 사례들이 도움 될 것입니다.


마이크로서비스 아키텍처 구축에 관심 있는 분들에게 이 책을 추천합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

마이크로서비스아키텍처구축가이드 이미지.jpeg

 

 

# 소개

* 이 책은 마이크로서비스의 아키텍처 구축을 위해 노하우와 설계시 핵심 내용을 잘 짚어줍니다.

그렇다면 목차를 토대로, 한번 살펴보도록 하죠.

 

## 1부 마이크로서비스 아키텍처 이해하기

* 제목과 같이 이 파트에서는 이 단어에 대한 정의와, 핵심적인 특징, 도입했을 때의 장점을 다룹니다.

* 일부 인상적인 내용을 소개하자면..

 

> 셋째, 업무 단위로 장애를 차단하고 확장할 수 있다. 장애에 민감한 업무는 다른 업무로부터 분리하여 보호하고, 다른 업무는 장애에 대한 부담을 덜에 쉽게 변경할 수 있다. <마이크로서비스 아키텍처의 장점중 3번째>

 

> 국내 이커머스 업체인 쿠팡은 기존 모놀리식 시스템의 한계를 극복하기 위해 2013년부터 2년에 걸쳐 마이크로서비스 아키텍쳐로 전환하였다...

<마이크로 서비스 적용 사례 중에서>

 

> 마이크로서비스 아키텍처는 도메인 주도 설계가 함께 언급되는ㄴ 경우가 많다. 하지만 도메인 주도 설계와 마이크로 서비스 아키텍처 간의 직접적인 연관은 없다. ... 하나일 뿐 다른 방법으로도 성공적으로 구축 할 수 있다. <질문7 도메인 주도 설계를 배워야할까? 중에서>

 

> 이렇듯 기존에 데이터 베이스가 자동으로 해주던 데이터베이스가 자동으로 해주던 데이터베이스 롤백이  안된다고 하면 불안하게 느껴질 수도 있다. 하지만, 모놀리식 시스템이 네트워크로 통신할 때도 항상 해오던 일이다. <질문3 자동으로 롤백이 안 된다고? 중에서>

 

 

## 2부 마이크로서비스 아키텍처 적용하기

* 적용 파트에서는 적용할 서비스를 선정하고, 설계하고 개발하는 구체적인 방법을 제안합니다.

* 일부 인상적인 내용을 소개하자면..

> API 게이트웨이가 요청에 담긴 래퍼런스 토큰을 직접 검증하는 방식도 가능하다.  ... 벨류 토큰을 추가하여 넽워크로 전달하면, 내부 네트워크의 서비스는 별도의 토큰 검증없이 API에 동봉된 벨류 토큰을 이용한다. <서비스 개발하기, 토큰 기반 인가 중에서>

 

 

# 정리하면..

* 이 책은 마이크로서비스 아키텍쳐의 도입을 검토하는 회사에서 책을 통해 간접경험을 익히고 대처하여 **MSA 도입시 앞으로 마주할 이슈를 사전에 확인하여 생산성을 높일것** 입니다.

* 직접적으로는 그렇고, 모놀리식 아키텍처에서 벗어나 MSA 관심이 가진 개발자, 엔지니어들이 읽으면 매우 효과적이겠죠?

* 배운 내용은 잘 이해했는지는 목차와 뒤의 INDEX를 통해서 확인해 볼 수 있어서 효과적입니다.

* MSA분야에서 다년간의 경험을 해온 저자이기에 믿고 볼수 있다.

 

 

 

 

# 도서 제공

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

이 책은 크게 1부, 2부로 나누어져 있습니다.

1부. 마이크로서비스 아키텍처 이해하기

1부는 마이크로서비스 아키텍처에 대한 근본적인 정의와 마이크로서비스를 효과적으로 운영하는 방법에 대해서 상세하게 설명해주고 있습니다. 책에서 독자에게 질문을 던져 생각을 한 번 더 하게끔 해 독자의 상황과 예제의 상황을 비교하거나, 참고할 수 있습니다.

2부. 마이크로서비스 아키텍처 적용하기

2부는 마이크로서비스 아키텍처를 구축하는 방법과 실제 예제 및 문제점과 해결방안과 함께 설명되어 쉽게 따라 할 수 있게 구성되어 있습니다. 하지만 다양한 도구를 다루기 때문에, 도구에 익숙하지 않을 때 따라 하기 어려울 수 있습니다.

마이크로서비스 아키텍처를 구축한다면 참고하기 좋은 도서라 생각됩니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

마이크로서비스란 단어가 사용되기 시작한지는 대략 10년정도 됬지만 널리 알려진지는 얼마 되지 않았다. 마이크로서비스가 없는 세상에서는 서비스/앱 개발에 대해서 백엔드를 위한 서버 인프라와 모바일 또는 웹 클라이언트로 크게 분류하고 백엔드는 layered architecture로 구현되고 있었다. 트래픽이 점차 늘어나게 되면 로드밸런서를 도입하여 어플리케이션 서버를 확장하거나 DB scale-up 전략이 일반적이었다고 생각한다. 

페이스북, 트위터, 넷플릭스등 폭발적인 성장을 하는 서비스의 등장으로 엔지니어들은 빠른 비지니스 변화에 대한 수용과 서비스 배포주기, 몇백 몇천명 수준의 개발자들이 서로 의존성을 최소화하면서 서비스를 개발하고 확장 가능한 구조가 필요했을 것이다. 

마이크로서비스는 명시적인 스펙이 아니다. 그래서 회사 마다 바라보고 적용하는 수준이 다를 수 있다. 그러다보니 자사의 서비스에 마이크로서비스를 도입하는게 맞는지 그리고 도입하게 된다면 맞는 구조란 무엇인지가 모호하게 느껴지는 것도 사실이다. 이 책은 마이크로서비스란 무엇인지로 시작하여 도입을 고민하고 싶다면 어떠한 기준이 필요한지 장단점에 대한 설명으로 시작하고, 이어서 온라인 강의 서비스를 구축한다는 가정으로 하나하나 섬세하게 마이크로서비스에 대한 적용 단계를 설명한다. 


- 자주 변하지 않는 데이터는 로컬 캐시를 도입함으로써 성능을 향상 시킬 수 있다.
- 마이크로서비스에서 API 일괄 요청에 로컬 캐시를 도입하게 되면 모놀로식의 단일 SQL(1번)과 거의 동일한 처리 속도가 나오게 된다.
 

"3장 데이터베이스를 분리한다고?" 에서는, 모놀로식 대비 마이크로서비스로 서비스를 개발하게 될 때 경험하게 되는 문제점들을 나열하고 해결방안에 대해서 서술한다. 전반부에 이러한 내용들이 잘 정리되어 있는 점이 인상적이었고 설명을 매끄럽게 잘하는 점이 좋았다. 대략 3-4년전 마이크로서비스로의 전환 작업을 진행했을 때 직면했던 문제점들에 대해 잘 정리되어 있어 놀랐다.

 

가벼운 마음으로 읽기 시작했는데 꽤 몰입해서 보게 된 책이었다. 마이크로서비스를 구축하려는 계획이 있는 사람이 이 책을 메인으로 시작하여 다른 책을 1-2권을 비교하고 설계 작업을 점진적으로 진행한다면 상당한 도움을 받을 수 있지 않을까하는 생각이 들었다. 한편 백엔드 개발 경험 또는 운용 경험이 없다면 한번에 와닿지 않거나 이해하기 어려울 부분이 있을수 있다.

이미 마이크로서비스를 운용 중이라면 안정적으로 서비스를 개발 및 보완할 수 있게 하는 길잡이 역할이 되어줄 것이다. 꼭 한번 읽어보길 추천한다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

 

"나는 리뷰어다 2023 2월"의 선정도서로

MSA 구축의 개념과 원리를 볼 수 있는 책을 받았다.

사실 MSA의 구축보다 MSA의 개념과 원리에 대한 공부를 하고 싶었다.

그러던 도중 이 책을 발견했고, 바로 신청하게 되었다.

사실 나는 개발자보다 데이터 사이언티스트를 준비하는 사람으로서,

소화하기 힘든 부분이 많았다.

이처럼 작가님도 MSA 도입과 구축하려고 하는 사람들을 위한 책임을 밝혔다..

그래도 재미있게 읽은 책 중 하나라고 볼 수 있다. 특히 MSA의 유익한 부분을 많이 알 수 있었다.

하지만 MSA를 적용하고 로직이나 세션, 서비스와 트랜잭션 등의 키워드를 통해 시스템을 구축하고 관리하며 이를 보완하는 방법에 대한 이론적인 내용이 담겨있다.

MSA의 체크포인트를 정리하고

이에 따른 아키텍처 적용 과정을 탐색한 뒤

프로세스를 따라 시스템을 개발하는 형식의 방향으로 진행되는 도서이다.

어느정도의 실력을 갖춘 개발자나 막 시작한 주니어 개발자 혹은 IT업계에 종사하는 사람이라면

시야와 견문을 넓히는데 있어 도움이 될 수 있는 책이라고 생각한다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B9403623796 

 

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

이 책은 마이크로서비스 아키텍처와 관련하여 실무자가 가장 많이 했던 질문과 그에 대한 답변을 담고 있다. 따라서 이 책으로 마이크로서비스 아키텍처에 대한 막연했던 궁금증을 풀 수 있으

www.hanbit.co.kr

책 표지가 굉장히 귀엽다. 레고 같은 느낌이랄까.. MSA를 잘 표현한 표지인것 같다.

이 책은 MSA를 구성할 때 고민하는 내용들을 잘 다루고 있다.

'마이크로서비스 아키텍처를 적용하는 목표가 명확하지 않다.' 너무나도 정확한 표현이다. 

아직도 많은 패턴들에 갑을론박이 엄청 많은 아키텍처이기 때문에 이런 생각을 항상 하게 되는 것 같다.

책을 읽다보면 '질문?' 이라는 내용들이 나온다. 큰 제목을 통해 독자에게 먼저 질문하는 것 같은 느낌을 준다. 개인적으로 이 부분은 너무 좋았다. 내가 생각하는 것과 동일한 답변을 주는지, 내가 알고 있는지게 맞는지 등에 대한 검증을 하면서도 스스로 생각해볼 시간을 주는것 같았기 때문이다. 

 

7장. 서비스 개발하기에서 부터는 본격적으로 서비스를 개발하는 방식에 대해서 나오고, 소스코드도 조금씩 나오기 시작한다. 정확히 말하면 전체를 구성하는 코드는 나오지 않는다. 책에서는 기본 개념을 설명하고 있고 코드로 많은 부분을 설명하고 있지는 않다. 코드가 너무 많으면 가독성이 떨어진다는 느낌을 받는데 코드가 적어서 문학 서적을 읽는 듯 마이크로서비스 아키텍처에 대해서 익힐 수 있도록 도와준다.

 

책 후반부에서는 트랜잭션에 대한 이야기가 나온다. 다만 책에서는 CQRS 나 SAGA 패턴에 대한 내용은 없다. 이 부분은 조금 아쉬운 부분이었다. MSA를 구성하다보면 CQRS나 SAGA 패턴등을 고민하게 되는 시간이 많은데 이런 내용은 부족했던거 같다.

 

책은 전반적으로 MSA에 대한 내용을 아주 잘 다루고 있다. 

여러가지 질문과 자세한 내용을 통해 MSA를 익히기에 아주 좋은 책이다. 입문용으로 내용을 익히고 조금 더 자세한 내용에 대해서 궁금하다면 https://microservices.io/ 페이지를 참고해도 좋을것 같다.


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

배송료 안내

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

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

닫기

도서판매처

리뷰쓰기

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

* 리뷰 작성시 유의사항

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

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

오탈자 등록

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

도서 인증

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

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

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

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

닫기

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

자료실