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

한빛출판네트워크

클라우드 네이티브 애플리케이션 디자인 패턴

애플리케이션의 배포와 운영을 고려한 7가지 설계 패턴

한빛미디어

번역서

판매중

  • 저자 : 카순 인드라시리 , 스리스칸다라자 수호티얀
  • 번역 : 박수현
  • 출간 : 2022-06-02
  • 페이지 : 368 쪽
  • ISBN : 9791162245675
  • 물류코드 :10567
  • 초급 초중급 중급 중고급 고급
4.8점 (44명)
좋아요 : 1

API, 데이터, 이벤트 및 스트림을 이용한 실무 패턴

 

클라우드가 제공하는 강력한 비용 절감 효과와 확장성 덕분에 클라우드 네이티브 애플리케이션은 이미 많이 도입되었습니다. 이제는 도입보다는 어떻게 운영해야 하는지에 대한 고민이 필요한 시점입니다. 이 책은 그린 필드 및 브라운 필드 개발 모두에서 활용할 수 있는 API, 데이터, 이벤트 및 스트림으로 클라우드 네이티브 애플리케이션을 구축하는 가장 일반적인 설계 패턴에 대해 설명합니다. 또한, 규모에 맞게 비용과 시간을 효율적으로 관리할 수 있게 도와주며, 방대하고 효율적인 클라우드 네이티브 애플리케이션을 점진적으로 설계, 개발하고 구현하는 방법에 대해 소개합니다.

 

 

 

최종_700(상세이미지)클라우드 네이티브 애플리케이션 디자인 패턴.jpg

 

카순 인드라시리 저자

카순 인드라시리

저자이자 프로덕트 매니저, 소프트웨어 아키텍트로서 다양한 마이크로서비스 및 클라우드 네이티브 아키텍처, 메시징 및 통합 플랫폼 관련 경험을 가지고 있습니다. 『gRPC 시작에서 운영까지』(에이콘출판사, 2020), 『엔터프라이즈 환경을 위한 마이크로서비스』(에이콘출판사, 2020), 『Beginning WSO2 ESB』(Apress, 2016)을 저술하였습니다. <KubeCon + CloudNativeCon North America 2020>, 샌프라시스코에서 열린 <O’Reilly Software Architecture Conference 2019>, 시카고에서 열린 <GOTO Con 2019, API Specification Conference 2020>, <APIDays Interface 2020>, <GOTOpia Europe 2020> 학회에서 연설하기도 했습니다. 아파치 소프트웨어 재단의 기여자이자 PMC 멤버로 활동하고 있습니다.

스리스칸다라자 수호티얀 저자

스리스칸다라자 수호티얀

9년 이상 데이터 프로세싱 플랫폼과 이벤트 주도 시스템 설계 경험을 가진 소프트웨어 아키텍트입니다. 마이크로서비스를 통해 데이터 처리 능력을 확장할 수 있으며 쿠버네티스 에코시스템에 포함되어 있는 클라우드 네이티브 스트림 프로세서 Siddhi의 설립자이기도 합니다. 초빙 교수로서 대학원에서 빅데이터, 분산 시스템, 데이터 과학에 대한 강의도 진행하고 있습니다. 또한 런던에서 열린 <O’Reilly’s Strata Data Conference 2017>, 샌프란시스코에서 열린 <Structure Data Conference 2016>, 모스크바에서 열린 <BigData Days 2019>, 샌프란시스코와 런던, 바르셀로나, 콜롬보 등지에서 열린 여러 <WSO2 User Conferences>에서 연설가로 활동하기도 했습니다.

박수현 역자

박수현

홍익대학교 컴퓨터공학과에서 박사 학위를 받았으며 현재는 SK텔레콤에서 개발자로 일하고 있습니다. 커널, 시스템, 클라우드 컴퓨팅, 쿠버네티스, 웹 등 다양한 개발 분야에 관심을 가지고 있으며, 『자바스크립트는 왜 그 모양일까?』(인사이트, 2020), 『스벨트 앤 새퍼 인 액션』(한빛미디어, 2021), 『클라우드 네이티브 애플리케이션 디자인 패턴』(한빛미디어, 2022)을 번역했습니다. 

CHAPTER 1 클라우드 네이티브 애플리케이션이란?

1.1 클라우드 네이티브의 개념

1.2 클라우드 네이티브 애플리케이션 개발 방법론

1.3 클라우드 네이티브 애플리케이션 디자인 패턴

1.4 클라우드 네이티브 애플리케이션 참조 모델

1.5 마치며

 

CHAPTER 2 통신 패턴

2.1 동기 메시징 패턴

2.2 비동기 메시징 패턴

2.3 서비스 정의 패턴

2.4 동기 메시징 패턴 구현에 사용할 수 있는 기술

2.5 비동기 메시징 패턴 구현 기술

2.6 테스팅

2.7 보안

2.8 관측 가능성 및 모니터링

2.9 데브옵스

2.10 마치며

 

CHAPTER 3 연결성 및 조합 패턴

3.1 연결성 패턴

3.2 서비스 조합 패턴

3.3 마치며

 

CHAPTER 4 데이터 관리 패턴

4.1 데이터 아키텍처

4.2 데이터의 타입과 형태

4.3 데이터 저장소

4.4 데이터 관리

4.5 데이터 조합 패턴

4.6 데이터 확장 패턴

4.7 성능 최적화 패턴

4.8 신뢰성 패턴

4.9 보안: 볼트 키 패턴

4.10 데이터 관리 패턴 구현 기술

4.11 테스팅

4.12 보안

4.13 관측 가능성 및 모니터링

4.14 데브옵스

4.15 마치며


CHAPTER 5 이벤트 주도 아키텍처 패턴

5.1 이벤트 주도 아키텍처

5.2 이벤트 전달 패턴

5.3 상태 관리 패턴

5.4 오케스트레이션 패턴

5.5 이벤트 주도 아키텍처에서 사용하는 기술

5.6 테스팅

5.7 보안

5.8 관측 가능성 및 모니터링

5.9 데브옵스

5.10 마치며

 

CHAPTER 6 스트림 프로세싱 패턴

6.1 스트림이란?

6.2 스트림 프로세싱이란?

6.3 스트리밍 데이터 프로세싱 패턴

6.4 확장성 및 성능 최적화 패턴

6.5 신뢰성 패턴

6.6 사용 기술들

6.7 테스팅

6.8 보안

6.9 관측 가능성 및 모니터링

6.10 데브옵스

6.11 마치며

 

CHAPTER 7 API 관리 및 사용 패턴

7.1 API 관리 패턴

7.2 API 사용 패턴

7.3 마치며

 

CHAPTER 8 클라우드 네이티브 패턴 적용하기

8.1 온라인 쇼핑몰 시스템 만들기

8.2 고수준 아키텍처 만들기

8.3 외부 API 만들기

8.4 서비스 연결

8.5 데이터 관리

8.6 이벤트 주도 아키텍처

8.7 스트림 프로세싱

8.8 클라우드 환경에서 동적 관리 기능 구현

8.9 마치며

빠르게 변화되는 IT 시장 속 클라우드의 바다에서 

성공의 길로 인도해주는 가장 큰 등대, 클라우드 네이티브 애플리케이션 디자인 패턴

 

이 책은 새로운 클라우드 네이티브 애플리케이션을 개발하거나, 혹은 기존의 애플리케이션을 클라우드 네이티브로 전환하고자 할 때 어떤 기술 스택을 사용하고 어떤 구조를 사용할 것인지에 대한 전반적인 방향을 제시해줍니다. AWS나 Azure, GCP와 같은 퍼블릭 클라우드 환경뿐 아니라 온프레미스 환경에서도 사용할 수 있는 다양한 구조와 그에 잘 맞는 소프트웨어 및 애플리케이션을 함께 소개합니다.

 

언제나 그렇듯 빠르게 변화되는 시장 속에서 애플리케이션 개발은 어렵지만, 최소한 어떤 방향으로 나아갈지를 정하고 시작하는 것과 그렇지 않은 것에는 큰 차이가 있습니다. 이 책을 통해 여러분이 개발하고자 하는 애플리케이션에 적합한 패턴을 찾아 더 효율적으로 애플리케이션을 설계하고 개발할 수 있기를 진심으로 바랍니다.

 

 

주요 내용

  • 클라우드 네이티브 애플리케이션의 기본 사항 학습
  • 주요 클라우드 네이티브 커뮤니케이션, 연결 및 구성 패턴 탐색
  • 분산형 데이터 관리 기술 학습
  • 이벤트 기반 아키텍처를 사용하여 확장 가능한 클라우드 네이티브 애플리케이션 구축
  • API 관리 및 사용에 가장 일반적으로 사용되는 패턴 탐색클라우드 네이티브 시스템 구축에 필요한 도구 및 기술 검토

기술의 발전은 어지러울 정도이다.

특히 ‘클라우드' 분야는 더더욱 그러하다.

새로운 기술, 서비스를 이해했나 싶으면 더 좋은 기술과 서비스가 나온다.

물고기를 잡는 기술이 아니라 물고기에 집중하기에 그런 것 같다.

 

cloud.jpg

 

이 책은 클라우드 네이티브 애플리케이션에 대한 전반적인 기술을 소개하고 있다.

특정 클라우드 서비스를 소개하는 것이 아니라 전체적이고 일반적인 내용을 알려준다.

특히 ‘운영'에 관한 전반적인 흐름과 서비스, 디자인 패턴을 잘 보여준다.

책은 클라우드 네이티브에 대한 설명으로 시작하고 있다.

클라우드 관리를 위한 다양한 디자인 패턴을 소개하고 있다.

통신 패턴, 연결 및 구성 패턴, 데이터 관리 패턴, 이벤트 기반 아키텍처 패턴, 스트림 처리 패턴, API 관리 및 사용 패턴.

마지막에는 앞에서 소개한 디자인 패턴이 어떻게 적용되고 있는지 쇼핑몰을 구성하는 애플리케이션을 통해 보여준다.

 

method_1.jpg

 

위 그림은 클라우드 네이티브 애플리케이션 개발방법론을 잘 보여주고 있다.

이 그림을 보며 각각에 필요한 서비스가 무엇인지, 어떤 디자인 패턴이 필요한지를 생각해 보자.

 

pattern_1.jpg

 

pattern2.jpg

 

위 그림처럼 각 디자인 패턴이 장단점과 사용할 경우와 사용해서 안되는 경우를 잘 요약해서 보여준다.

은총알을 없다.

아무리 좋은 방법, 기술이라도 적합한 곳에 사용되어야 한다.

이 책을 보면서 가장 좋았던 것은 바로 이것이다.

디자인 패턴에 대한 설명을 해주는 책은 있지만, 어느 곳에 적합한지를 알려주는 책은 보지 못했다.

 

frontend.jpg

 

관심있는 분야라서 제일 집중적으로 본 것 같다.

각 패턴을 소개하기에 앞서 위 그림처럼 전반적인 흐름과 구성을 보여준다.

도표를 통해 보니 훨씬 더 이해하기 쉬웠다.

클라우드 네이티브 애플리케이션은 단순하지 않다.

하지만 그 흐름을 전체적으로 이해하고 있다면 그리 어렵지 않다.

클라우드는 복잡하고 어렵다는 생각으로 도입을 망설이고 있다면 이 책을 통해 전반적인 이해를 할 수 있을 것이다.

무엇보다 클라우드 네이티브 애플리케이션을 올바르게 사용할 수 있을 것이다.

 

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

 

 

 

개요

클라우드 네이티브 애플리케이션이라 함은 기존의 Monolithic Architecture 에서 MSA(Micro Service Architecture) 설계한 애플리케이션을 클라우드 환경에서 운영함을 말할 수 있다.

클라우드 환경 내에서 애플리케이션 서비스 제공은 쉽게 Scale-Up, Scale-Out이 가능해야 하며, 이를 위한 방법을 각 Chapter에서 소개하고 있다.

Chapter 구성은 Chapter를 이루는 개념에 대해서 소개하고, 이를 해결할 수 있는 방법론에 대해서 설명한다.

각각의 방법론이 가지는 Trade-off를 소개한 뒤, 각 방법론이 적용된 기술을 소개 한다.

마지막으로 보안적 관점과 CI/CD 를 하기 위해 테스트, 모니터링, 배포적 관점에서 적용 방안에 대해서 설명한다.  


목차

Chap1. 클라우드 네이티브 애플리케이션이란?

이번 장은 클라우드 네이티브 애플리케이션의 개념과 이를 뒷바침하는 기술에 대해서 간략히 소개하고 있다.

클라우드 네이티브 애플리케이션 개발은 클라우드 환경 내 배포함에 따라서, 기존 모놀로그 애플리케이션 개발과 다르게 좀더 세분화된 개발 사이클을 가지며 이를 소개하고 있다.

마지막으로 이 도서에서 소개할 디자인 패턴에 대해서 간략하게 설명하고 있다. 

 

Chap2. 통신 패턴

이번 장은 서비스 간 통신 시, 다양한 방법론에 대해서 설명한다.

MSA로 설계한 애플리케이션은 서비스별로 분리된 Container화 했음을 의미한다.

각각의 서비스간 데이터를 주고 받기 위해서 통신을 해야하며, 동기적 방법론과 비동기적 방법론으로 나뉠 수 있다. 

 

Chap3. 연결성 및 조합 패턴

Chap2에서 서비스 간 통신에 대한 설명을 하였다. 이번 장은 통신을 하기 위한 구체화로써, 연결성과 조합에 대해서 설명한다.

서비스의 연결이라 함은 MSA간 또는 외부의 다른 시스템 간 연결함을 말하며, 이를 통해서 원하는 결과를 가질 수 있음을 말한다.

서비스 연결 전략은 서비스 관리소에서 지원되는 방식을 가져와서 직접 연결 하거나, 프록시를 통해서 간접적으로 연결을 지원하는 방식으로 나뉠 수 있다. 

 

Chap4. 데이터 관리 패턴

이번 장은 애플리케이션의 영속성을 위해 관리되어야 하는 데이터를 관리하는 방법론에 대해서 설명한다.

서비스의 속성에 따라서 SQL과 NOSQL로 나뉘어서 사용할 수 있으며, 내부에서도 좀더 세분화된 방법론으로 적용할 수 있다.

또한, 데이터의 크기가 커짐에 따라서, 필요한 샤딩에 대해서도 소개한다. 

 

Chap5. 이벤트 주도 아키텍처 패턴

이번 장은 비동기 처리와 분산 처리가 목적인 이벤트 방식의 애플리케이션에 대해서 설명한다.

이벤트 전달은 최소 한번 전달 보장이 이루어져야 하며, 애플리케이션의 목적에 따라서 적용가능한 이벤트 전달 패턴이 달라질 수 있다.

 

Chap6. 스트림 프로세싱 패턴

이번 장은 Chap5에서 다루었던 이벤트 주도 아키텍처 패턴의 심화로써, 이벤트 발생된 순서 또는 처리되어야 하는 순서가 중요시 되는

애플리케이션에 적용하는 스트림 프로세싱 패턴에 대해서 설명한다.

 

Chap7. API 관리 및 사용 패턴

이번 장은 서비스 내 API 구현 후 애플리케이션 내 도입 시, 효율적인 API 관리를 위한 방법론 대해서 설명하고 있다.  

 

Chap8. 클라우드 네이티브 패턴 적용하기

이번 장은 Chap2 ~ 7에서 다루었던 방법론을 어떻게 적용할 수 있는지에 대한 예제 사례를 가지고 설명하고 있다. 

 


마무리

단언컨데 쉬운내용도 아니며, 간단한 내용도 아니다.

클라우드 네이티브 애플리케이션 디자인 패턴은 많은 사람들의 시련과 고난 속에서 해결을 위한 고민의 결과물이다.

애플리케이션 설계라 함은 하드웨어, 소프트웨어, 네트워크 등 다양한 환경를 고려해가며 이루져야 한다.

또한, 확장성 있고 신뢰성을 가질 수 있어야 한다.

실제 환경 내에서 초석을 쌓아올리는 애플리케이션은 거의 없다.

기존에 있는 애플리케이션을 요구사항에 따라서 개발되어지며 진화하는 경우가 대부분이다.

이 도서에서 제시한 방법론들을 활용해서, 점진적으로 도입함으로써 클라우드 환경에 좀더 적합한 애플리케이션으로 나아갈 수 있기를 희망한다.

 

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

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

 

클라우드 서비스 및 스프링 부트를 이용한 배포를 하면서 클라우드 아키텍처 구성에 대한 자료 및 여러 책을 학습하였는데 이번에 "클라우드 네이티브 애플리키이션 디자인 패턴" 책을 읽어 보게 되었습니다. 

 

우선 해당 "클라우드 네이티브 애플리키이션 디자인 패턴" 책의 장점은 

1. 8 가지 Chapter에 거쳐 핵심적인 패턴 학습

2. 각 Chapter 별 패턴 도식을 이용한 이해와 설명 

이라고 생각합니다. 다른 책에는 없는 큰 개념에서 세부 개념으로 패턴을 전체적으로 볼 수 있는 구성으로 되어 있습니다. 

 

 

"클라우드 네이티브 애플리키이션 디자인 패턴" 책은 총 8개의 Chapter로 구성되어 있습니다. 

1. 클라우드 네이티브 애플리케이션이란?

2. 통신 패턴

3. 연결성 및 조합 패턴

4. 데이터 관리 패턴

5. 이벤트 주도 아키텍처 패턴

6. 스트림 프로세싱 패턴

7. API 관리 및 사용 패턴

8. 클라우드 네이티브 패턴 적용하기 

 

​저는 개인적인 궁금 및 시간적인 이유로 순차적으로 읽지 않았는데 각 Chapter로 별로

1. 핵심 설명

2. 기술 설명 

3. 세부 패턴에 대한 설명 (관련 패턴) 

4. 고려할 사항 

5. 모니터링, 테스팅, 데브옵스 등등 

으로 핵심 및 상세 패턴까지 자세히 설명하고 있습니다. 

각 패턴을 학습한 후에 나에게 맞는 여러 패턴을 업무에 적용한다면 효과적인 클라우드 개발을 할 수 있다고 생각합니다. 

 

​"클라우드 네이티브 애플리키이션 디자인 패턴" 책의 패턴 개념을 잡기에 딱 좋은 내용이라고 생각합니다.  

전체적인 패턴 상세 내용은 아니지만 적용할 패턴이 무엇인지 그리고 어떤 기술을 활용할 수 있는지 파악할 수 있습니다. 모듈리닉 아키텍처에서 클라우드로 변환을 고려하는 입장에서 저에게는 개념 및 공부 방향을 정하는데 많은 도움이 된 것 같습니다.   

 

 

마지막으로 이 책은 클라우드를 이용한 프로그램을 개발한다면 읽어보는 것을 추천하고 싶습니다. 

특히 저 같이 스프링 프레임워크를 이용한 클라우드 프로그래밍을 진행한다면 꼭 읽어 봤으면 좋겠습니다.

내용도 어렵지 않고 개념잡기에 쉽습니다. 

다양한 패턴과 도식으로 어떻게 설계 및 개발을 해야하는지 확실히 알 수 있게 좋은 내용이 많습니다. 

추천합니다. 



[도서 소개]

API, 데이터, 이벤트 및 스트림을 이용한 실무 패턴

클라우드가 제공하는 강력한 비용 절감 효과와 확장성 덕분에 클라우드 네이티브 애플리케이션은 이미 많이 도입되었습니다. 이제는 도입보다는 어떻게 운영해야 하는지에 대한 고민이 필요한 시점입니다. 이 책은 그린 필드 및 브라운 필드 개발 모두에서 활용할 수 있는 API, 데이터, 이벤트 및 스트림으로 클라우드 네이티브 애플리케이션을 구축하는 가장 일반적인 설계 패턴에 대해 설명합니다. 또한, 규모에 맞게 비용과 시간을 효율적으로 관리할 수 있게 도와주며, 방대하고 효율적인 클라우드 네이티브 애플리케이션을 점진적으로 설계, 개발하고 구현하는 방법에 대해 소개합니다.

 

[주요 내용]

- 클라우드 네이티브 애플리케이션의 기본 사항 학습

- 주요 클라우드 네이티브 커뮤니케이션, 연결 및 구성 패턴 탐색

- 분산형 데이터 관리 기술 학습

- 이벤트 기반 아키텍처를 사용하여 확장 가능한 클라우드 네이티브 애플리케이션 구축

- API 관리 및 사용에 가장 일반적으로 사용되는 패턴 탐색클라우드 네이티브 시스템 구축에 필요한 도구 및 기술 검토

 

[서평]


빠르게 변화되는 IT 시장 속 클라우드의 바다에서

성공의 길로 인도해주는 가장 큰 등대, 클라우드 네이티브 애플리케이션 디자인 패턴

 

이 책은 새로운 클라우드 네이티브 애플리케이션을 개발하거나, 혹은 기존의 애플리케이션을 클라우드 네이티브로 전환하고자 할 때 어떤 기술 스택을 사용하고 어떤 구조를 사용할 것인지에 대한 전반적인 방향을 제시해줍니다. AWS나 Azure, GCP와 같은 퍼블릭 클라우드 환경뿐 아니라 온프레미스 환경에서도 사용할 수 있는 다양한 구조와 그에 잘 맞는 소프트웨어 및 애플리케이션을 함께 소개합니다.

 

언제나 그렇듯 빠르게 변화되는 시장 속에서 애플리케이션 개발은 어렵지만, 최소한 어떤 방향으로 나아갈지를 정하고 시작하는 것과 그렇지 않은 것에는 큰 차이가 있습니다. 이 책을 통해 여러분이 개발하고자 하는 애플리케이션에 적합한 패턴을 찾아 더 효율적으로 애플리케이션을 설계하고 개발할 수 있기를 진심으로 바랍니다.

 

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


20221230_232436.jpg

 

20221230_232521.jpg

 

우리가 실제 서비스를 개발할 때 (특히 클라우드 환경) 어떤 기술 스택이 필요하고 DB는 NoSQL이 좋은 지 관계형 데이터베이스가 좋은 지, 혹은 여러 시스템 간에 데이터를 주고받을 때 어떤 프로토콜이 효율적인지 직접 경험해 보지 않으면 쉽게 해답을 찾을 수 없습니다. (책 후반부에 소개된 온라인 쇼핑몰 시스템 개발과 같은 경우)

 

예시) 온라인 쇼핑몰 시스템 개발

 

1. 주문 서비스는 RESTful API 형태로 서비스 제공

2. 고객 서비스는 GraphQL 사용

3. 주문 서비스는 REST/HTTP와 같은 동기식 프로토콜 통해 메시지 전달

4. 주문 요청은 AMQP를 통해 RabbitMQ로 비동기식으로 전달

5. 외부 시스템 간의 통신은 gRPC와 같은 고성능 동기식 메시징 기술 사용

6. 상품과 관련된 DB 구성은 아래 이미지 참조

 

20221230_234242.jpg

 

 

이 책에는 위와 같은 우리들의 공통된 고민을 해소하기 위한 클라우드 환경에서의 애플리케이션 구성과 방법론을 몇 가지의 정형화된 디자인 패턴으로 묶어서 제시하고 있습니다.

 

즉, 책 제목이 모든 것을 말해주듯이 클라우드 네이티브 애플리케이션 개발에 필요한 기술 스택과 설계 패턴을 설명한 책입니다.

 

저는 AWS 같은 클라우드 인프라, 도커 같은 컨테이너 기반 시스템 그리고 분산 애플리케이션 구성을 위한 gRPC등에 관심을 가졌다가 자연스럽게 마이크로서비스와 클라우드 네이티브 애플리케이션이라는 것을 알게 되었습니다.

 

현업에서 관련 기술 스택이나 아키텍처를 협업자들과 공유하거나 실무 적용 시 참고하기 위해 한번은 꼼꼼하게 정리할 필요성을 느끼게 되었습니다.

 

애플리케이션의 구조나 개발에서 배포까지의 라이프 사이클을 도식 등으로 정리하는 것은 쉬운 일은 아닌데, 감사하게도 이 책에 제가 필요했던 클라우드 네이티브 애플리케이션 개발을 위한 기술 스택이 디자인 패턴이라는 이름으로 잘 정리가 되어 있습니다. 

 

<강조: 독자의 이해력을 높이기 위해 책 곳곳에 삽입된 아키텍처 구성도나 서비스 흐름도만으로도 이 책은 소장할 가치가 충분합니다!>

 

이 책의 핵심인 디자인 패턴은 크게 7가지의 클라우드 네이티브 애플리케이션 개발 패턴으로 나누어져 있습니다. 

 

각 패턴마다 개요, 동작 방식, 사용 방법, 관련된 패턴 소개, 해당 패턴 적용 시 고려해야할 사항들이 상세히 설명되어 있습니다.

 

패턴 속 여러 용어들이 조금 낯설기는 하지만 도입부의 개요 설명을 꼼곰히 읽어 보면 우리가 대부분 한번은 들어보고 직접 개발도 해본 방법론(예. RPC, 큐, API등)이라서 크게 어렵지는 않습니다.

 

저자의 오랜 경험에서 축적된 노하우도 책의 곳곳에 적혀 있는데, 예들 들어 동기 메시징 패턴을 사용하면 안되는 경우를 표로 잘 정리해 놓아서 실제 해당 패턴을 적용할 때 유용한 참고사항이 됩니다.

 

책에는 단일 기술에 대한 언급만 있는 것이 아니 라서 마이크로서비스, 컨테이너, RPC, NoSQL 등에 지식이 있으면 이해하는데 큰 도움이 됩니다.

 

책의 마지막에는 앞에서 설명한 클라우드 네이티브 애플리케이션 개발에 사용할 다양한 패턴을 어떻게 활용할 수 있는지 온라인 쇼핑몰 시스템을 통해 살펴볼 수 있습니다.

 

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

 

애플리케이션의 배포와 운영을 고려한 7가지 설계 패턴

카순 인드라시리, 스리스칸다라자 수호타얀 지음

박수현 옮김

 

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

 

2022년 12월

2022 나는 리뷰어다 활동의 아홉 번째 리뷰

 

12월에 리뷰할 책은 "클라우드 네이티브 애플리케이션 디자인 패턴"이다.

벌써 2022 나는 리뷰어다 활동도 마지막 12월이 되었다.

 

2022년 한해는 이직후로 굉장히 바쁘게 1년을 보낸 것 같다.

(하지만 지금 또 다시 이직 준비중이다.)

 

더 실력있는 개발자가 되자라고 다짐했었는데 그만큼 노력을 많이 하지 않은 것 같아 후회도 많이 남는 2022년이다.

 

아무튼 리뷰를 시작해보자.

 

우선, 클라우드 네이트브 아키텍처란 무엇일까?

비즈니스 기능별로 독립적인 마이크로서비스들이 느슨하게 결합된 소프트웨어 애플리케이션을 통칭하는 말이다.

각 마이크로서비스는 각각의 실행 환경(퍼블릭, 프라이빗, 하이브리드, 멀티클라우드)에서 실행되며 자동화되고 확장성을 지원하며 탄력적인 관리 및 관찰을 제공한다.

 

클라우드 환경은 민첩함과 신뢰성, 경제성, 확장성이라는 장점 덕분에 클라우드 네이티브 애플리케이션 개발이 점점 더 각광받고 있다. 최근 애플리케이션의 배포 및 운영에 대한 관심이 늘어나면서 기존의 개발 패턴이나 기술을 적용하기는 힘든 상황이 되고 있다.

 

이 책에서는 이런 문제점들을 API와 데이터, 이벤트, 스트림 기반 패턴을 통해 해결해볼 것이다. 이 방법들을 통해 클라우드 네이티브 애플리케이션의 목적에 맞게 설계하고 개발하고 배포할 수 있으며 최소의 비용과 시간, 노력으로 애플리케이션을 관리하고 유지보수 할 수 있다.

 

클라우드와 클라우드를 기반으로 하는 네이티브 애플리케이션은 변화 속도가 굉장히 빠르다.

기존의 상업 애플리케이션 뿐만 아니라 ML, AI와 같이 새롭게 각광 받는 분야의 애플리케이션들 역시 클라우드 기반으로 개발하면서 다양한 도메인들이 클라우드로 쏟아져 들어오는 상황이다.

 

이런 상황에서 개발하고자 하는 애플리케이션에 적합한 구조나 메시지큐, 데이터베이스 등을 선택하는 것조차 매우 어렵다.

 

클라우드 네이티브 애플리케이션은 다양한 디자인 패텬을 통해 구성하고 개발할 수 있다. 이 책에서는 주로 클라우드 네이티브 애플리케이션의 비즈니스 로직을 만들 때 반드시 적용해야 할 개발패턴을 살펴본다.

 

또한, 이 책은 클라우드 네이티브 애플리케이션을 개발하거나, 혹은 기존의 애플리케이션을 클라우드 네이티브로 전환하고자 할 때 어떤 기술 스택을 사용하고 어떤 구조를 사용할 것인지에 대한 전반적인 방향을 제시해 줄 수 있다. AWS나 Azure, GCP와 같은 퍼블릭 클라우드 환경뿐 아니라 온프레미스 환경에서도 사용할 수 있는 다양한 구조와 그에 잘 맞는 소프트웨어 및 애플리케이션을 소개한다.

 

목차를 살펴보자.

 

1장. 클라우드 네이티브란?

2장. 통신 패턴

3장. 연결 및 구성 패턴

4장. 데이터 관리 패턴

5장. 이벤트 기반 아키텍처 패턴

6장. 스트림 처리 패턴

7장. API 관리 및 사용 패턴

8장. 실례로 살펴보는 클라우드 네이티브 패턴

 

으로 구성이 되어 있다.

 

애플리케이션의 특성에 따라, 그리고 개발할 때 사용하는 패턴에 따라 배포나 확장성, 보안, 관측, 가능성 구현이 서로 다를 수 있다. 이런 다양한 패턴이 서로 어떤 차이가 있는지, 장단점은 무엇인지 생각하면서 이 책을 보면 좋을것이다.

 

Love Yourself.

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

 

 

현대의 개발자라면 클라우드 서비스에 다양한 인스턴스를 배포하고 관리하는 것과 뗄레야 뗄 수 없습니다.

 

따라서 클라우드 디자인 패턴으로 이미 많은 개발자들이 직접 경험하고 효율적으로 관리하는 시스템에 대해 이해함으로써 시행착오를 줄이고 효율적으로 개발 프로세스를 관리하는 방법에 대해 이해할 수 있는 책이라고 생각합니다.

 

또한 약간의 쿠버네티스와 컨테이너 지식을 요구하여, 플라이 휠처럼 새로운 지식들을 엮어나가면서 큰 지식을 만들 수 있는 기회를 이 책을 통해 접하리라 생각합니다.

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


서버가 클라우드에서 어떻게 돌아가는지,, 조금 알아보고자 했다

제목부터 디자인 패턴이니만큼 설계 패턴을 중점적으로 다룬다.

한빛미디어에는 클라우드 네이티브에 관련된 다른 도서들도 많으니 깊게 읽어보고 싶은 사람들은 함께 읽으면 좋을 것 같다!



 

크게 8개의 장으로 구성되어 있으며, 그 내용은 이러하다.

각 요소 혹은 관점 별로 어떤 패턴을 적용하는 것이 좋을지에 대해 설명한다.

하나의 애플리케이션에 이렇게 많은 패턴들이 적용되다니,, 역시 백엔드의 세계는 너무 넓다..

(물론 프론트쪽도 일부 다루고 있다)

 

앞으로 나오는 사진들을 보면 알겠지만 정말 깊은 내용을 다루는 것 같다. (모바일 개발자에게는 어렵..)

어느 책이든 그렇듯 첫장을 통해 책의 전반적인 구성을 볼 수 있을 것 같다.

개념부터 나오는 것은 국룰이다.


 

이 책에서 말하는 애플리케이션(나는 서버, 백엔드로 이해함)이라는게 이렇게 생겼음을 알 수 있다.

저자는 이 구조를 어떻게 바꾸고 어떤 패턴을 적용해야 할 지 근거를 들어 설명하며 방향을 제시한다.

거의 노하우를 전수해주는 수준이다. 내가 실무자였다면 정말 큰 도움이 되었을 거라 생각이 든다.


 

나는 모르겠지만 중요한 내용에 해당하는 듯하다.


 

설명에 그림이 아주 잘 활용되고 있다. 어느정도 기본기만 있다면 이해하는데 큰 문제는 없을 것이다. (나는 없었기에...)

 

내가 배경지식이 부족하다보니 서평이 부실해지는 듯하다.

그렇지만 저자가 자신의 노하우, 지식들을 아낌없이 적어낸 덕분에

실무자들은 이 책을 통해 큰 도움을 받을 수 있을 것 같다.

안드로이드도 이런 책이 있다면 찾아 읽고 싶었다.

책소개

 

클라우드 네이티브 애플리케이션 디자인 패턴은 중급이상의 MSA에 대한 기본 개념이 있는 독자를 대상으로 설계의 방향성에 대해 설명하고 있다.

1장에서 아주 기본적인 클라우드 애플리케이션에 대한 설명을 하고 패턴을 요약 설명하고 있다.

그 후 2장부터 7장까지 통신패턴, 연결성/조합패턴, 데이터관리 패턴, 이벤트주도 아키텍처 패턴, 스트림 프로세싱패턴, API관리 및 사용패턴에 대해 상세히 설명하고 있다.

나도 현재 MSA로 시스템을 설계/구현하고 있는데 클라우드 패턴은 어떤 특정패턴을 하나만 적용해서 설계/구현되는 것이 아니라 위에 나온 패턴을 거의 모두 사용해서 구현하고 있다.

RabbitMQ, 웹소켓를 이용한 통신패턴, ESB연결 등을 위한 서비스 메시 패턴, 서비스 오케스트레이션 패턴, 데이터 관리 패턴, 아직은 사용하고 잇지 않지만 샤딩 패턴, Feign을 이용한 이벤트주도 아키텍처 패턴, 아파치 스파크를 이용한 스트림 프로세싱 패턴 등은 많이 사용하고 있다.

이 책은 각 패턴들의 이해를 위해 업무와 관련된 이벤트를 제시하고 그에 따른 패턴을 어떻게 사용할 수 있는지와 고려사항은 무엇인지, 관련된 패턴은 무엇이 있는지 등을 제시한다. 추가로 설계에 도움이 되는 많은 도식화된 그림을 사용하고 있으며 패턴을 구현하기 위한 기술들에 대해서도 이해를 위한 범위 내에서 설명을 하고 있다.

이 책의 가장 좋은 점은 각 7가지 패턴 장마다 패턴의 세부 기술에 대해 비교하는 표가 있는데, 사용하면 좋은 경우와 사용하지 말아야 하는 경우에 대해 요약 설명을 하고 있고 사용 기술에 대해서도 비교하는 표를 제공한다는 것이다. 책을 읽으면서 최종적인 결론을 내려주는 듯한 정리된 표는 해당 패턴을 정확하게 이해하는데 많은 도움을 준다.

내 생각에는...

책에서 설명하는 많은 패턴들이 클라우드 네이티브 환경에서는 자연스럽게 스며들어 사용하고 있기 때문에 개념 정리를 위해서 반드시 한번은 읽어 볼 책이라고 생각한다.

패턴을 생각하고 설계나 환경을 맞추는 것은 아니지만 패턴을 이해하고 설계는 것은 반드시 필요하다고 생각한다.

이런 이유로 이 책을 강력하게 추천한다.

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



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

 

​애플리케이션에 대한 설계 패턴에 대해 공부해볼 수 있는 책이다.

총 8장으로 구성된 이 책은 주로 클라우드 네이티브 애플리케이션에 대한 비즈니스 로직을 개발할 때 반드시 적용해야 하는 개발 패턴을 다룬다.

이러한 다양한 패턴들이 어떤 차이가 있고 장/단점은 무엇인지를 공부해볼 수 있다.

1. 클라우드 네이티브 애플리케이션이란?

퍼블릭, 프라이빗, 하이브리드, 멀티 클라우드와 같은 환경에서 실행할 수 있는 독립적인 비즈니스 기능 중심의 마이크로서비스들을 느슨하게 결합하여 크기 조절이 가능하고 탄력적이며 관리와 용이한 자동화 소프트웨어 애플리케이션을 만드는 것이라고 정의할 수 있는데, 이는 사람과, 기관에 따라 서로 다른 의미를 가진다.

본격적인 설계 패턴들에 대해 공부하기 전 클라우드 네이티브에 대한 개념과 특징, 요소와 애플리케이션을 만들 때 디자인 패턴의 중요성을 다룬다.

 

2. 통신 패턴

클라우드 네이티브 애플리케이션을 만들 때 주로 사용할 수 있는 통신 패턴을 다룬다.

통신 패턴은 마이크로서비스들 간에나 외부 시스템 혹은 애플리케이션 등과 같이 애플리케이션을 사용하는 다른 애플리케이션과의 통신 채널을 만들 때 사용한다.

동기, 비동기 통신의 기본적인 통신 패턴에 대한 동작방식과 함께 이 통신 패턴을 이루는 여러 패턴과 매체들을 상세하게 소개하며 이들이 어떠한 방식으로 서로 상호작용하는지 공부해볼 수 있다.

또한 통신 패턴을 설계하면서 고려해야 하는 사항들도 같이 정리해볼 수 있어 설계 과정에 놓칠 수 있는 부분들도 이 책을 통해서 다시 리마인드 해볼 수 있다.

 

3. 연결 및 조합 패턴

마이크로서비스들을 다른 마이크로서비스나 애플리케이션과 연결하는 다양한 패턴을 공부해볼 수 있다.

특히 서비스들을 연결하여 이 서비스들 간의 기능을 조합해서 우리가 만들고자 하는 비즈니스 기능을 제공할 수 있다.

특히 이 장에서는 그림을 통해 각 패턴들 간의 동작방식을 소개하여 이해하기 쉽도록 구성되어 있다.

또한 추후 서비스를 연결하여 비즈니스 기능을 클라이언트들에게 제공해야 할 때 고려해볼 수 있도록 한다.

마이크로서비스 혹은 다른 애플리케이션 간의 연결에 네트워크를 사용할 수 없는 상황 속에서 어떻게 탄력적으로 연결하는 지에 대한 기법에 대한 이해는 실 업무에서도 많은 도움이 될 것이라고 생각된다.

 

4. 데이터 관리 패턴

클라우드 네이티브 애플리케이션에서의 데이터와 데이터를 관리하는 방법에 대해 알아본다.

데이터 아키텍처가 무엇이고, 어떻게 데이터를 모아서 처리하고 저장하는 흐름을 공부해볼 수 있다.

또한 데이터의 구조와 크기 등을 여러 관점에서 살펴보는데, 이후에는 데이터 관리 시에 어떤 저장소를 사용할 수 있는지를 소개한다.

이후에는 실제로 여러가지 다양한 패턴을 소개하며, 데이터를 중앙집중화하고 분산처리, 데이터 조합, 캐싱, 관리, 성 최적화, 신뢰성, 보안 등의 요소를 다루어 데이터를 어떤 방식으로 설계할 수 있는지 점차 이해도를 높일 수 있다.

 

5. 이벤트 주도 아키텍처 패턴

동기와 다른 비동기로 동작하는 이벤트 주도 아키텍처를 낮은 결합도로 개발하여 확장도 쉽고 대규모 분산 처리를 할 수 있는 기본 구조인 이벤트 주도 아키텍처에 대한 개념을 시작으로 내용을 다룬다.

또한 이 장에서 가장 많이 등장하는 이벤트라는 용어를 예시로 소개하고 이벤트를 어떤 목적에서 다루는지도 정리해볼 수 있다.

이벤트와 관련된 내용에서 아마 가장 많이 들어본 개념인 이벤트를 소비자에게 전달하는 방식인 최대 한번 전달, 최소 한번 전달, 딱 한번 전달의 개념도 정리해볼 수 있다.

또한 메시지와 브로커의 역할과 여러 패턴들의 동작방식, 사용방법, 고려사항 등이 잘 정리되어 있다.

 

6. 스트림 프로세싱 패턴

스트림과 스트림 프로세싱이란 용어에 대한 이해를 시작으로 이 장을 다룬다.

이 장도 다른 장과 마찬가지로 어떤 패턴이 있고 각 패턴들의 동작방식을 그림으로 소개한다.

또한 상태, 무상태 클라우드 애플리케이션이 대규모 이벤트 스트림을 어떻게 처리할 수 있는지 다루고, 실제로 장애가 발생하였을 때, 메모리에 저장된 상태 정보를 어떻게 안정적으로 보호하고 신뢰성을 구현하는지도 공부해볼 수 있다.

 

7. API 관리 및 사용 패턴

API 관리에서 가장 많이 사용하는 패턴에 대해 공부해볼 수 있다.

API 관리 패턴에서는 가장 많이 알려진 API 게이트웨이 패턴을 시작으로 API 마이크로게이트웨이 패턴, 서비스 메시 사이드카 게이트웨이 패턴에 대한 동작방식, 구성요소, 사용방법, 고려사항 등을 다룬다.

또한 각 패턴별로 사용하면 좋은 경우와 그렇지 않은 경우를 표로 정리되어 있어서 실제 운영 환경에서 어떤 패턴을 적용해야 되는지도 이해해볼 수 있다.

API 사용 패턴에서는 프론트엔드를 위해 사용하는 몇가지 패턴을 소개한다.

이 패턴들에는 마이크로서비스와 직접 통신을 하는 패턴과 API 게이트웨이를 통해서 프론트엔드를 사용하는 패턴, 특정 프론트엔드 애플리케이션을 위해 사용할 수 있는 패턴을 다룬다.

이 내용에서도 패턴들의 동작방식, 구성요소, 사용방법, 고려사항 등을 다루고, 각 패턴별로 사용하면 좋은 경우와 그렇지 않은 경우도 표로 정리되어 있다.

 

 

8. 클라우드 네이티브 패턴 적용하기

마지막 장에서는 지금까지 다룬 패턴들을 실제 운영 환경에서 어떻게 활용할 수 있는지를 예시를 들어 설명한다.

각 장에서 공부한 패턴들을 조합하여 온라인 쇼핑몰을 만드는 과정을 하나하나 소개한다.

운영 환경에서 발생할 수 있는 여러 상황을 고려하여 하나의 시스템을 만들어 가는 과정에서 앞서 다룬 패턴들을 하나씩 적용하는 과정을 따라갈 수 있다.

 

이 책이 좋았던 부분은 각 패턴별이 어떤 방식으로 동작하고, 사용법과 이를 도입했을 때 고려해야 하는 사항들을 필수 내용으로 포함다는 점인데, 패턴별로 특정상황에서 적합한 패턴을 선택하는데 참고해볼 수 있을 것 같다.

많은 아키텍처 서적들을 봐왔지만, 디자인 패턴이라는 실무 중심 레퍼런스라는 달콤한 주제의 책.

 

이책은 기본적인 micro arhitecture 기반으로 서비스를 해본 경험이 있는 분이 읽어보길 권장합니다.

 

머신 리소스에 대한 container 화 기능이 발달함에 따라서 서비스들을적당한 단위로 나누어 각 서비스 간 통신을 기반으로 둔 서비스 아키텍처가 요즘 대세라 할 수 있다. (MSA)

 

우리가 즐겨보는 Netflix를 비롯한 LinkedIn 그리고 우버 등 수많은 서비스들이 위의 MSA를 기반으로서비스가 계발되었고 지금도 서비스 중이기 때문이다.

 

그렇다면 왜 이토록 많은 서비스들이 MSA 형태로 서비스를 사용자들에게제공하는 것일까?

 

 그것은 바로 가변성과 유연한 서비스 대응이 가능하기 때문이라 생각된다. 가변성은특정 서비스(모듈)의 사용량이 증가하면 해당 머신을 자동화한컨테이너가 가변적으로 그 수를 조정해 주는 것이라 볼 수 있고, 유연한 서비스 대응은 적당한 단위로서비스들이 잘게 나뉘어 있기 때문에 필요한 부분만 새로이 조정하여 배포해 주면 되는 그러한 구조를 의미한다.

 

 위의 모든 내용들은 학부 단위에서는 약간 경험하기 어려울 수 있다. 특히나한 머신에 여러 컨테이너를 띄우고 각 서비스 간 통신하는 과정을 살펴보기란, 머신의 스펙도 스펙이지만전체 서비스 흐름을 이해하는 데에 있어 한계점이 두드러지기 때문이다. (하지만, 이를 머릿속으로 잘 추상화가 가능하다면, 로컬 머신에서 환경을 구축하여실습해 보는 것도 나쁘진 않다.)

 

따라서 위의 책은 어느 정도 MSA에 대한 경험이 있는 분이 공부하시길권장한다.

 

【책의 구성】 "클라우드 네이티브 애플리케이션 디자인 패턴"의 구성은?

 이 책은 코드보다는 이론을 중점적으로 설명한 책이다. 각각의 패턴을 소개하고 이 패턴이 어느 서비스에 어떤 형태로 쓰이면 좋을지 적당한 지침을 독자들에게 전달하고있다.

 

 또한 책 전체 내용으로 보건대, 이 책 한 권을 제대로 이해하고 공부하였다면충분히 현업에 투입되어 MSA 기반의 서비스 아키텍처를 구성하는 데에 어느 정도 능숙히 작업에 임할수 있을 것이라 예상된다.

 

 다만, 이 책은 어디까지나 이론적인 내용 즉 추상화된 개념을 독자에게전달하기 때문에 직접 구축하고 테스트해 보며 서비스 간의 통신이 어떤 형태로 주고받는지는 직접 실습을 통해 깨닫는 수밖에 없다.

 

1 : 클라우드 네이티브애플리케이션이란?

 이 장은 단락의제목 그대로 "클라우드 네이티브 애플리케이션"이무엇인지에 대해서 설명한다. 기존의 모놀리틱 개념과 서비스를 세분화하여 관리하는 MSA 기반의 서비스의 차이점 그리고 이러한 MSA 기반의 서비스가가능케한 배경에 대해서 자세히 설명하고 있다.

 

 따라서 MSA가 무엇인지, 클라우드기반의 서비스 아키텍처가 무엇인지, 기존의 서비스 구성과 비교하여 장점과 단점이 무엇인지. (솔직히 모놀리틱 구성과 비교하여 단점은 거의 없어 보이긴 하다.) 등에대해 저자 나름 잘 정리하였으니 꼭 자세히 읽어보도록 하자.

 

2: 통신 패턴 

 이 장을 읽으며필자가 느낀 점은 그냥 적당하게 생각했던 구성에 어떤 식으로든 "이름"이라는 것이 붙어있구나라는 것이었다. 실무에서 일하다 보면책에서 말하는 다양한 통신 패턴에 대해서 알게 모르게 사용하게 된다.

 

 다만, 사용할 당시에는 그 구성이 이 패턴인지, 이 패턴이 저 구성인지 잘 모른다. 그냥 논리적인 추론과 효율에따라서 구성해 봤을 뿐인데, 패턴이 되는 것이다.

 

 즉, 패턴이라 함은 대중적이고 효율이 좋은 구성, 기법 등을 패턴이라 칭하는 것이므로 패턴이 만능이다!라는 생각은잠시 접어두도록 하자.

 

3: 연결성 및 조합패턴

 MSA 서비스를 구성할 때에는 수많은 통신 패턴과 다양한메시지 브로커 등을 사용하여 이벤트와 메시지들을 처리한다. 다양한 구성이 가능하다는 것은 그만큼 상당한조합 패턴이 발생할 수 있음을 의미한다.

 

 이 챕터에서는 '연결성 패턴', '추상화패턴', '탄력적인 연결성 패턴', '사이드카 패턴' 등등 수많은 패턴에 대해서 정리하고 있다. 무엇보다 각 패턴이 무엇이고어떻게 동작하고 어디에 사용되는지 잘 정리되어 있으니 차분히 공부해 보도록 하자.

 

【 클라우드 네이티브 애플리케이션 디자인 패턴 】

 컨테이너 기술이고도화됨에 따라서 장비의 리소스를 추상화할 수 있게 되었다. 이 말이 무엇인고 하니, 이제는 수많은 머신을 하나의 머신의 풀이라 생각하고 이것들을 머신 단위로 나누는 것이 아니라 리소스 단위로보다 효율적으로 잘게 나누어 사용할 수 있게 되었음을 의미한다.

 

 즉, 이전의 방식은 크기가 정해진 포장 상자였다면 이제는 크기가 가변적으로늘었다 줄었다 하는 포장 상자를 사용하는 방식으로 바뀌었다고 생각하면 된다.

 

 이는 어찌 보면 누구나다 한 번쯤 상상해 보았을법한 그런 기술이라 할 수 있지만, 구축된 내부를 들여다보면 수많은 연구자들과 개발자들의 헌신이 깃들어 있음을 알 수 있다.

 

 이 글을 빌려 컨테이너 고도화에 헌신하신 모든 분께 감사를 드린다.

 

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

 

1. 클라우드 네이티브(Cloud Native)란?

Linux Foundation의 산하기관인 CNCF(Cloud Native Computing Foundation)는 클라우드 네이티브에 대해 이렇게 정의하고 있다.

 

Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exmplify this approach. 

These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.

The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.

 

요약하면 클라우드 네이티브(Cloud Native)의 특징은 아래와 같다.

 

  • 클라우드와 같은적인 환경에서 확장 가능한 애플리케이션을 개발 및 운영
  • 관련 기술로는 컨테이너(Container), 서비스 메시(Service Mesh), 불변(immutable) 인프라, 선언형(Declarative) API 등을 사용
  • 회복성, 관리 편의성, 가시성, 느슨하게 결합된(loosely coupled) 시스템
  • 자동화 기능과 결합해 최소한의 노력으로 자주, 예측가능하게 변경 작업을 수행할 수 있음.

 

클라우드 네이티브 애플리케이션 디자인 패턴에 의하면, 클라우드 네이티브 애플리케이션은 독립적으로 만들어진 서비스들을 느슨하게 결합하는 것으로 설계되며, 각 서비스는 각 주어진 비즈니스 요구를 잘 충족해야한다. 그리고 이 요건들을 충족하는 것이 바로 마이크로 서비스 아키텍처(Microservice Architecture)라고 말하고 있다.

 

 

2. 클라우드 네이티브 애플리케이션 디자인 패턴 리뷰

그렇기 때문에 이 책은 클라우드 네이티브 애플리케이션 디자인 패턴에 관한 책이자 마이크로서비스 아키텍처 디자인 패턴에 관한 책이라고 할 수 있다.

 

이 책은 총 8개의 챕터로 구성되어있다.

 

맨 첫 챕터에서는 클라우드 네이티브 애플리케이션이란 무엇인가에 대해 다룬뒤, 챕터 2~7까지는 클라우드 네이티브 애플리케이션의 각 디자인패턴에 대해 알아본다. 그리고 마지막 챕터에서는 클라우드 네이티브 패턴의 적용사례를 들어 설명하고 있다.

 

다만 제목에서 눈치 챘을 수 있겠지만, 이 책은 어디까지나 애플리케이션 디자인 패턴에 대한 설명을 위한 책이라 코드 레벨에서의 예시는 없다(일단 책에서 다루는 범위가 매우 광대한 데에 반해 전체 400페이지도 안되는 분량이라 이미 예상하실 수 있을 듯).

 

따라서 특정 디자인 패턴의 특정 기술을 구현하는 방법을 알고싶은 개발자에게 적합하기 보다는, 클라우드 네이티브(Cloud Native)한 애플리케이션의 아키텍처를 구현해야하는 역할이 부여된 아키텍트들이나 시니어 개발자를 대상으로 쓰여진 책인듯 하다.

 

챕터 2~7를 살펴보면, 클라우드 네이티브 애플리케이션에서 적용할 수 있는 디자인 패턴과 해당 디자인 패턴에서 사용되는 기술들이 나열되어있는데, 각 기술의 개념 설명과 동작원리 뿐만 아니라 장단점, 그리고 적합한 사용예까지 기재되어있어 구현하려는 애플리케이션의 특성을 고려해 어떤 디자인 패턴을, 그리고 어떤 기술을 적용할지에 대한 가이드라인을 제시해준다.

 

뿐만아니라 특정 디자인 패턴에 대해 자세히 알고싶은 경우에 찾아볼만한 책도 같이 소개하고있어, 개인적으로는 아키텍트 / 시니어 개발자 외에도 내가 레거시 환경이 아닌 클라우드 네이티브 환경에서 개발을 하고있는데(혹은 하고싶은데), 어떤 디자인 패턴을 깊게 파 보아야 할지 알고싶은 주니어 개발자에게도 추천할 만한 책이었다.

 

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

클라우드 네이티브 애플리케이션 디자인 패턴

카순 인드라시리, 스리스칸다라자 수호타얀 지음 / 박수현 옮김

 

처음 이 책을 주문했을 때는 마이크로서비스 아키텍처를 어떻게 가져가야 할 지에 대한 구체적인 내용이 들어 있으리라 기대했다. 우선 처음 기대는 무너졌다. 저자 이름이 인도계 여서 마치 현업 개발자 느낌도 들었었다. 하지만 이들의 활동 분야가 학회란 점에 처음 기대는 접었다. 대개 하계에서 발표되는 내용은 커다란 아키텍처 그림으로 끝나기 때문이다.

 

그렇다고 아주 실망했다는 건 아니다. 내가 지금까지 몰랐던 기술들을 포괄적으로 소개해 주기 때문이다. 큰 그림이란게 나쁜 것은 아니란 거다. 책을 읽다 보면 현장 일을 모르고 쓴 건 아니란 느낌이 분명하다. ESB, CORBA 같은 기술을 언급한 것으로 보아 소프트웨어 분야에 오랫 동안 몸담아 왔다는 점도 알 수 있다. 기술에 대해 거의 이름만 찍고 넘어가는 느낌인데 이 점도 다소 이해가 간다. 책이 얇기 때문에 조금만 뎁스를 낮췄다면 분량이 확 늘어나 버렸을 것이다.

 

최근 유행을 넘어 대세로 자리잡고 있는 클라우드. 근래 내가 참여하는 프로젝트에 클라우드가 아닌 곳이 드물어지고 있다. 그 와중에 내가 경험했던 것은 역시나 아주 일부분이었다는 점을 알려줬다는 점에서 이 책에 점수를 충분히 주고 싶다.

 

 

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

 

 

클라우드네이티브애플리케이션.jpg

 

 

 

 

 

번년도에도 한빛 미디어의 나는 리뷰어다에 선정되어 매달 책 한 권씩을 읽을 수 있게 됐다. 7월 미션으로 나온 책 중에 하나인 클라우드 네이티브 애플리케이션 디자인 패턴을 받게 됐고, 이번 달에 읽어보게 됐다. 이 글은 이 책에 대한 간단한 리뷰이다.

내가 개발을 시작할 시점부터 이미 클라우드가 활발히 도입되어 있었고, 실제로 내가 개발을 하는 공간 역시 모두 AWS 위에서만 개발했지만, 무엇이 클라우드 네이티브적 특성을 갖는지 알 수 없었다. 이 책을 읽으면서도 뭔가 이게 클라우드와 연관된 것인지 그냥 MSA를 구성하기 위한 여러 방법들을 나열한 것인가 싶었다. 간간히 클라우드 컴포넌트에 대한 명시적인 언급이 있긴 했지만, 보다 어울리는 제목은 MSA 디자인 패턴이 아니었을까 싶다.

 

그런 관점에서 이 책은 지식을 넓히기에 적합했다. 굉장히 얇은 느낌으로 이해하고 있던 부분들이 이번 기회에 아주 명확한 표현으로 이해할 수 있었던 것 같다. 현재 실제 업무로 사용하고 있는 사이드카 패턴, BFF, Event Driven 등 개념을 적립하게 도움이 많이 된다. 이 책의 유일한 단점은 책 이름이 책의 일부분에 치중한 느낌이라는 점이고 (이것은 내가 잘 모르기 때문에 이렇게 느끼는 것일 수도 있다고 생각한다.) 특정 규모 이상의 서비스를 만드는 팀에 합류했는데 그곳에서 사용되는 인프라 아키텍처에 대해 생소한 감이 드는 개발자들에게 추천해주고 싶은 책이다.

도서 '클라우드 네이티브 애플리케이션 디자인 패턴'은 새로운 클라우드 네이티브 애플리케이션을 만들거나 기존 애플리케이션에 클라우드 네이티브를 전환하려고 할 때, 개발자가 어떤 기술을 쓰고 어떤 구조를 쓸 것인지 가이드를 해주는 책이다. 같은 출판사의 '클라우드 네이티브'라는 책을 통해 클라우드 네이티브에 대해 배웠다면, 이 책을 통해 더 실용적이고 현실적인 사용을 할 수 있게 된다.

 

KakaoTalk_20220724_231317389.jpg

 

오렐리의 책답게 표지는 멸종 위기 동물인 말레이시아 소공작이 그려져 있다. 아주 제한된 범위에서 서식하는 반면, 번식률도 낮고 번식 속도도 낮다. 다른 오렐리 책들이 그렇지만, 책 내용과는 별 관계가 없다. 표지를 기획한 사람은 클라우드 네이티브 애플리케이션 디자인 패턴과 말레이시아 소공작이 무언가 관련이 있다고 생각했을지도 모르겠지만.

 

KakaoTalk_20220724_231317389_02.jpg

 

이 책은 클라우드 네이티브의 기본 사항을 간단하게 학습하고, API와 데이터, 이벤트 및 스트림을 이용한 실무 패턴을 익힐 수 있도록 가르쳐준다. 책의 내용을 보면 놀랍게도 그 방법이 너무나 디테일한데, 한 번 읽고 처박아 둘 책이 아니라 두고두고 찾아보기에도 좋은 구성으로 되어 있다.

 

KakaoTalk_20220724_231317389_03.jpg

 

이 책을 통해서 독자(개발자)는 적합한 구조와 기술 스택을 선택하고 개발에 착수하는 것뿐이다. 옮긴이의 말대로 개발을 할 때는 어떤 방향으로 나아갈지를 정하고 시작하는 것과 그렇지 않은 것에 큰 차이가 있다. 기획서를 작성할 때도 방향이 정해져 있는 기획과 뭘 해야 할지 아직 명확하지 않은 기획서를 쓸 때는 작업시간이 천지차이로 차이가 나기 때문이다. 시간이 곧 비용인 개발 현장에서 어떤 방향으로 개발할지 가이드를 받을 수 있다는 것은 훌륭한 사수와 함께 하는 것과 마찬가지다. 그런 의미에서 이 책은 정말 유용할 수밖에 없다.

 

KakaoTalk_20220724_231317389_04.jpg

 

'클라우드 네이티브'라는 책이 있지만, 그 책을 보지 않은 사람이라도 '클라우드 네이티브'가 무엇인지 알 수 있도록 1장은 클라우드 네이티브에 대해 배우고 지나가는 내용이 수록되어 있다. 클라우드 네이티브 애플리케이션의 주요 특성에 대해 알아보고 디자인 패턴이 왜 중요한지를 일깨워준다.​

 

그 이후로는 다양한 패턴들을 배우게 되는데, 통신 패턴, 연결 및 구성 패턴, 데이터 관리 패턴, 이벤트 기반 아키텍처 패턴, 스트림 처리 패턴.

 

KakaoTalk_20220724_231317389_05.jpg

 

그리고 API 관리 및 사용 패턴의 총 6개의 패턴을 배운다. 마지막 8장에서는 클라우드 네이티브 패턴을 사용하는 실제 예제들을 통해 다양한 패턴을 알아볼 수 있다.

 

KakaoTalk_20220724_231317389_07.jpg

 

이 책에서는 애플리케이션의 패턴을 배우고 구조와 동작을 시각적으로 배워볼 수 있다. 실행 플로우를 그림으로 시각적으로 보여주기 때문에 글자로 되어 있는 것보다 보다 더 쉽게 이해할 수 있다.

 

KakaoTalk_20220724_231317389_08.jpg

 

내가 꼽은 이 책의 가장 좋은 점은 모든 디자인 패턴마다 핵심 포인트를 다뤄주고 있다는 점이다. 이 부분이 이 책의 가장 큰 강점이다. 각 디자인 패턴마다 어떻게 동작을 하는지, 어떻게 사용할 수 있는지, 고려해야 할 사항들, 그리고 관련 패턴들까지 정말 친절하게 다뤄주고 있다. 

 

KakaoTalk_20220724_231317389_09.jpg

 

특히 고려해야 할 사항들이 경험이 부족해 직접 배우거나 경험하지 못한 실수들을 겪지 않을 수 있도록 도와준다는 점에서 나는 이 책이 정말 친절하고 유용한 책이라고 생각했다.

 

KakaoTalk_20220724_231317389_11.jpg

 

그리고 앞에서 학습한 디자인 패턴들을 표로 다시 한번 정리해 준다. 문장으로 되어 있는 부분을 표로 간단하고 보리 좋게 정리해 줌으로써 활용도를 높여준다. 패턴과 함께 사용하면 좋은 경우와 사용해서는 안 되는 이유. 그리고 패턴의 이점까지 다뤄주기 때문에 개발에 드는 시간을 큰 폭으로 줄여주고 개발 비용을 줄이는 데에 한몫하기도 한다.

 

KakaoTalk_20220724_231317389_12.jpg

 

개인적으로 현재 업무에서 가장 실용적으로 다가왔던 부분은, 5장의 '이벤트 주도 아키텍처 패턴'이다. 특히 '딱 한 번만 처리하기' 부분이 꽤 쓸모 있었다.​

 

클라우드 네이티브 애플리케이션을 개발하거나, 혹은 기존 애플리케이션을 클라우드 네이티브로 전환하고자 하려는 개발자에게 다른 어느 책보다 유용하게 쓰이는 책이 될 것이다.

 

 

- MSA 환경을 준비하거나, 회사에서 사용하고 있다면 읽어보면 좋을 책.

- 친숙하지 않은 개념들도 포함되어 있어 읽기는 조금 어렵지만, 시간을 투자해 읽어본다면 분명 도움이 될 것이다.

내용이 그렇게 친숙한 것은 아니어서 용어 위주로 정리해봤다.

읽었는데도 잘 와닿지 않는 부분들이 존재했는데 개인적으로 경험이 더 필요하다고 생각된다.

말 그대로 디자인 패턴에 관한 책이기 때문에 따로 코드는 존재하지 않는다.

하지만 책 곳곳에 디자인 패턴에 관한 도식이 존재하기 때문에 관련해서 큰 그림을 그려볼 때, 혹은 큰 그림이 그려지지 않을 때 참고하면 좋겠다.

그리고 아무래도 디자인 패턴이다 보니 여러 관련 분야의 지식도 필요한데 이런 부분에 대해서도 책에서 추천하는 책이 있으므로 여러 갈래로 참고해서 지식을 뻗어나가게끔 적혀있다.

예) 도메인 주도 설계에 대한 부분을 조금 설명하고 난 뒤에 에릭 에반스의 '도메인 주도 설계'를 언급하는 부분이 있다.

이렇게 되면 이 책을 처음 읽는 사람이라도, 혹은 도메인 주도 설계를 좀 더 알고 싶은 사람이라도 지식의 확장 방법을 손쉽게 얻을 수 있다. 

 

그래서 만약 클라우드 네이티브 애플리케이션 디자인에 대한 개요를 알고 싶다면 책 내용을 가볍게 읽되, 이해가 더 필요한 키워드나 분야가 책에서 나온다면 추천하는 책을 읽거나 해당 부분을 좀 더 보완 후 책을 N회독 하면 되겠다.

 

 

마이크로서비스 : 독립적으로 만들어진 서비스로 주어진 비즈니스 요구를 충족한다.

*참고 : 모놀리식 애플리케이션(복잡하고 크기 조절 어려움, 유지보수 비용 소모, 개발 민첩성 떨어짐)

서비스 지향 아키텍처 : 특정 비즈니스 기능을 지원하는 서비스들을 조합하여 소프트웨어 애플리케이션을 만드는 모듈성 개념을 선보임

 

클라우드 네이티브 애플리케이션에서 중요 역할을 하는 것

설계 및 개발 : 마이크로서비스

패키징과 실행 : 컨테이너(ex. 도커)

컨테이너 라이프사이클 관리 : 컨테이너 오케스트레이션(ex. 쿠버네티스)

 

컨테이너 : 사실상 표준 플랫폼으로 도커가 있음

마이크로서비스를 좀 더 쉽게 옮기고 여러 환경에서 동일하게 실행할 수 있음

 

쿠버네티스 : 컨테이너 관리 플랫폼. 

-kubelet : 쿠버네티스 노드들에서 노드 상태를 관리하는 에이전트가 실행됨. 쿠버네티스 API 서버와 직접 통신해서 해야 할 일을 전달받고 현재 노드의 상태를 알려줌

-pod : 주어진 노드에서 실행되는 애플리케이션 실행 환경을 의미하는 가장 기본적인 배포 단위. 1개의 pod에서 1개 이상의 컨테이너 실행 가능. 

 

클라우드 네이티브 애플리케이션 개발 방법론

1. 앱 설계

비즈니스 로직 추상화, 개별 소프트웨어 구성 요소로 구성

2. 앱 개발

-독립된 코드베이스, 명시적 의존성, 별도의 설정 관리, 독립 테스트(단위테스트, 통합테스트), 컨테이너화

3. 연결성 및 API 구현

-서비스 주도 상호작용, 서비스 간 통신 및 조합, 기능을 관리형 API로 외부에 제공하기

4. 개발, 릴리스, 배포 자동화

5. 동적 환경에서 실행

6. 동적 환경 관리를 위한 컨트롤 플레인 구현

7. 관측 가능성 구현

이를 통해 앱에 대한 통찰력을 얻고 다음 앱 설계에 반영함

 

 

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

현대의 모든 시스템은 두 가지로 분류할 수 있다. 클라우드 환경에 기반을 두고 있는 워크로드와 그렇지 않은 것으로 말이다. 그만큼 대부분의 워크로드는 클라우드 위에 자리잡고 있고, 일부는 온프레미스에 존재하지만 머잖아 모든 워크로드가 클라우드 환경으로 마이그레이션 될 상황은 시간의 문제일 뿐, 그 여정은 언제든지 시작될 수 있다. 
 
그런데 클라우드 환경에 애플리케이션이 구성되어 있다고 해서 그게 과연 클라우드 다운 모습을 갖추고 있다고 말할 수 있을까? 그렇다면 클라우드 다운 워크로드 또는 애플리케이션은 무엇이란 말인가? 클라우드에 기반한 애플리케이션을 클라우드 답게 만들기 위해선 무엇이 필요하단 말인가? 이 질문에 대한 답을 제공하는 책을 오늘 소개하고자 한다. '클라우드 네이티브 애플리케이션 디자인 패턴'이 바로 그 주인공이다. 
 

KakaoTalk_20220711_134540476.jpg

 

온프레미스에 기거하고 있던 애플리케이션을 클라우드로 이전하여 서비스를 실행하거나 혹은 애초에 클라우드 환경 위에 애플리케이션이 구동되는 환경을 마련하는 일은 이제 더이상 생경한 풍경이 아니게 되었다. 모든 워크로드는 클라우드로의 여정을 준비하고 있거나, 그 시기를 저울질 하고 있을 뿐, 더이상 클라우드를 빼 놓고 IT 서비스를 논의하는 게 무의미해지는 시대에 노정돼 있다. 

 

그런데 애플리케이션을 클라우드위에 구축했다고 해서 과연 클라우드가 제공하는 이점을 충분히 활용할 수 있을까? 단순히 애플리케이션이 클라우드 환경에 존재하는 것 자체가 은탄환이 될 수 있을까? 이에 대한 물음에 조응하여 탄생한 개념이 바로 '클라우드 네이티브'이다. 보다 자세히 말하면 클라우드 네이티브한 애플리케이션을 개발하기 위한 다양한 방법론이 클라우드 네이티브의 본질이라고 할 수 있겠다. 그렇다면 도대체 클라우드 네이티브한 애플리케이션이란 또 무엇인가?

 

이 책은 클라우드 네이티브 애플리케이션이 무엇인지에 대한 개념을 풀어 놓은 것으로 서막을 열고 있다. 클라우드 네이티브 애플리케이션 방법론과 그에 따른 디자인 패턴 그리고 참조 모델을 통해서 진정한 클라우드 네이티브 애플리케이션의 핵심 가치를 정립할 수 있게 된다. 

 

이윽고 MSA 환경에서 주로 사용되는 통신 패턴에 대해 상세한 설명을 이어 간다. 동기 메시징 패턴, 비동기 메시지 패턴, 서비스 정의 패턴 등의 개념과 장단점을 접하게 되며 어느 상황에 어떤 패턴을 사용할 수 있을지에 대한 명징한 솔루션을 얻게 된다. 

 

이어서 연결성 및 조합 패턴, 데이터 관리 패턴, 이벤트 주도 아키텍처 패턴, 스트림 프로세싱 패턴, API 관리 및 사용 패턴 등의 다양한 패턴과 활용 사례, 특징, 핵심 가치 등에 대해 학습하게 되면서 클라우드 네이티브 환경에서 애플리케이션을 전개할 수 있는 패턴의 정수를 접하게 된다. 그리고 마지막으로 클라우드 네이티브 패턴을 적용할 수 있는 여러 상황과 사례들을 다시 한번 들추어 내어 클라우드 내이티브의 애플리케이션 디자인 패턴이 제공하는 이점을 여실히 깨닫게 된다. 

 

클라우드 네이티브 환경과 짝을 이루는 컴포넌트들은 다양하게 존재한다. MSA, 컨테이너, CI/CD, 데브옵스 등등. 클라우드 네이티브 애플리케이션 디자인 패턴이 온전히 현실 세계에 적용되기 위해선 각각의 컴포넌트들이 뒷받침 되어야 하며, 그 컴포넌트들과 유기적인 합일을 이룰 때 비로소 클라우드 네이티브 환경이 갖춰질 수 있음은 두말 하면 잔소리다. 

 

번역서임에도 불구하고 매끄러운 번역을 통해 책을 읽는 내내 텍스를 재해석하는 일이 없어서 무척 좋았고, 다양한 그림을 통해 클라우드 네이티브 애클리케이션 디자인 패턴의 개념을 큰 어려움 없이 소화할 수 있어서 학습 효과가 배가되었다. 클라우드 환경에 애플리케이션을 이전하거나 새로 구성해야하는 모든 이해관계자들은 이 책을 통해 진정한 클라우드 네이티브 애플리케이션의 개발의 정수를 꼭 맛보길 강권한다. 

 

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

 

 

IMG_5333.jpeg

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

 클라우드 네이티브 애플리케이션 디자인 패턴 책은 이제는 어쩌면 당연해진 클라우드 환경에서 애플리케이션을 어떻게 올릴 것인지에 대한 계획을 세우는데 도움을 주려고 한다.

 

특히 특정 클라우드 서비스에 올리는 방식, 방법 등이 아닌 제목처럼 설계 패턴을 중점적으로 보여주고 있다.

 

책은 총 8개의 장으로 이루어져있고

1장. 클라우드 네이티브란?

2장. 통신 패턴

3장. 연결 및 구성패턴

4장. 데이터 관리 패턴

5장. 이벤트 기반 아키텍처 패턴

6장. 스트림 처리 패턴

7장. API 관리 및 사용 패턴

8장. 실례로 살펴보는 클라우드 네이티브 패턴

1장의 소개, 8장의 실예를 제외하고 6개의 장에서 각기 설계 패턴을 각기 설명한다

 

각기 패턴마다 어느때 사용하면 좋을 지, 사용하면 안되는 지를 자세히 알려주는 점이 특징이며 제일 좋은 점이었다.

구현하려는 애플리케이션이 뭔지에 따라 좀 더 손쉽게 디자인 패턴을 이용할 수 있도록 가이드를 제안하는 느낌이라 좋았다.

그리고 테스팅에 대한 팁도 나와서 실제 설계를 할 때 마지막까지 도움이 될 것 같았다.

도표와 그림을 통해 더욱 이해를 도우려는 노력이 돋보였다.

 

전체적으로 읽기도 쉽고 정리도 잘 된 책으로 느껴졌다.

장점이 많은 책이다보니 클라우드 설계를 막 시작했거나 하고 있더라도 막연하게 설계된 내용을 따라하고 있었다면 꼭 읽어보고 구성해보면 정말 전략적인 설계를 하도록 도움을 줄 것같은 책이었다.

 

 

[BOOK] 클라우드 네이티브 애플리케이션 디자인 패턴 - 카순 인드라시리, 스리스칸다라자 수호티얀 지음 / 박수현 옮김
 

2022-07-24 21.46.01.jpg

 

부제: "애플리케이션의 배포와 운영을 고려한 7가지 설계 패턴"
 
 
소프트웨어 어플리케이션 개발 방법이 모놀리식 애플리케이션 아키텍처에서 마이크로서비스 아키텍처(MSA)로 변화했습니다.
마이크로서비스의 조합으로 만들어지는 클라우드 네이티브 애플리케이션에도 MSA의 주요 개념이 적용됩니다.
이 책에서는 MSA의 기본 원리와 주요 패턴들을 살펴보고 클라우드 네이티브 애플리케이션 개발에 적용하는 법을 다루고 있습니다.
 
 
 
컨테이너, 서비스 메시, 마이크로서비스, 불변 인프라스트럭처, 선언적 API들을 활용하여 관리와 관찰이 쉽고 탄력성 있는 느슨하게 결합된 시스템을 만들 수 있습니다. (p. 20)
 
 
책은 총 8개의 장으로 구성되어있고, 1장에서 클라우드 네이티브 애플리케이션에 대한 전반적인 내용을 설명합니다. 2장부터 7장까지는 통신, 연결성, 구성, 데이터, 이벤트, 스트림 처리, API 관리 및 사용이라는 일곱 가지 종류의 패턴에 대해 소개합니다. 8장에서는 온라인 쇼핑몰을 예시로 앞서 소개된 패턴들을 어떻게 적용하는지 살펴봅니다.
 
 
클라우드와 클라우드 환경에 최적화된 클라우드 네이티브 애플리케이션 개발은 빠르게 변화하는 분야이고, 도메인과 애플리케이션에 따라 적용하는 기술이 다양합니다.
또한, 개발 뿐만아니라 운영에 대한 고민을 함께 해야합니다. 애플리케이션 개발을 시작했는데 고려하지 못한 것이 무엇인지, 막연하게 알고 있는 부분을 명확하게 정리할 필요가 있다면 디자인 패턴을 통해 점검해보는 것도 좋은 방법입니다. 클라우드 네이티브 애플리케이션은 기존의 애플리케이션 개발 패턴으로 고려할 수 없는 부분이 존재합니다.
 
클라우드 네이티브 애플리케이션에 대한 패턴이 정리된 이 책을 이용해 점검해보면 어떨까요?
 
 
"한빛미디어 [나는 리뷰어다] 활동을 위해서 책을 제공받아 작성된 서평입니다."

수 많은 애플리케이션들이 클라우드 분야로 쏟아져 들어오는 가운데 경험이 전무한 상태에서 개발하고자 하는 애플리케이션에 적합한 구조 등을 알지 못하여 시행착오를 겪는 경우가 많다.
용어나 개념도 확실히 정립되지 않은 부분도 많은지라 검색을 해서 해결하기 힘든 경우도 많다.

이 책을 통하여 클라우드 어플리케이션을 개발 시 유용하게 사용할 수 있는 7가지 설계 패턴들을 배울 수 있으며, 어떤 기술 스택을 사용하고, 어떤 구조를 사용할지에 대해 방향성을 잡을 수 있다.

 

'클라우드 네이티브 아키텍쳐'란 비즈니스 기능별로 독립적인 마이크로서비스들이 느슨하게 결합된 소프트웨어 애플리케이션을 통칭하는 말이다.

 

클라우드 환경이 제공하는 민첩함, 신뢰성, 경제성, 확장성 등의 장점 덕분에 네이티브 애플리케이션 개발이 점점 더 각광을 받고 있으며, 최근 주목하는 부분은 애플리케이션의 배포 및 운영 측면이다.

이 책에서는 API와 데이터, 이벤트, 스트림 기반 패턴을 기반으로 최소의 비용과 시간, 노력으로 애플리케이션을 관리하고 유지보수 할 수 있는 방법들을 습득할 수 있다.

다음과 같은 8개의 장으로 나뉘는데 각 장을 통해 클라우드 네이티브에 어떤 식으로 접근해야할지에 대해 체계적으로 설명하고 있다.

 




1장. 클라우드 네이티브란?
클라우드 네이티브 애플리케이션(이하, 애플리케이션)의 주요 특성에 대해 설명하고 있으며, 디자인 패턴이 왜 중요한지 설명하고 있다.

 

2장. 통신 패턴
애플리케이션을 만들 때 주로 사용할 수 있는 통신 패턴과 구현 기술에 대해 설명하며, 동기/비동기 통신에 사용 되는 기본 패턴 등을 배울 수 있다.

 

3장. 연결 및 구성 패턴
마이크로 서비스들을 다른 마이크로서비스나 애플리케이션과 연결하는 여러 패턴들을 설명하고 있다. 서비스 구성 패턴을 이용하여 서비스들을 통합하고 비즈니스 기능을 만드는 방법을 배운다.

 

4장. 데이터 관리 패턴
애플리케이션의 데이터 관리 패턴을 설명하며, 어떤 데이터 스토어를 사용할지, 데이터 구성을 통해 애플리케이션의 확장성과 신뢰성, 성능 최적화를 지원할 수 있는 데이터 통합 방법을 배울 수 있다.

 

5장. 이벤트 기반 아키텍쳐 패턴
애플리케이션을 활용한 이벤트 기반 아키텍쳐를 만드는 디자인 패턴을 설명하고 있으며, 기본적인 이벤트 전달, 이벤트 소싱, 다양한 비동기 애플리케이션 간에 이벤트들을 어떻게 조율하는지 배울 수 있다.

 

6장. 스트림 처리 패턴
상태 (stateful), 무상태 (stateless) 애플리케이션 모든 곳에서 대규모 이벤트 스트림을 어떻게 처리할 수 있는지 설명하고 있으며, 실시간 애플리케이션에서 오류 발생 시 메모리에 저장된 상태 정보를 어떻게 보호하고 신뢰성을 구현하는지 배울 수 있다.

 

7장. API 관리 및 사용 패턴
API 관리에서 가장 많이 사용하는 패턴 몇 가지를 살펴보며, 웹 애플리케이션이나 모바일 애플리케이션, 데스크탑 애플리케이션과 같이 API를 사용하는 프론트앤드 애플리케이션에서 주로 사용하는 몇 가지 API 사용 패턴을 배울 수 있다.

 

8장. 실례로 살펴보는 클라우드 네이티브 패턴
서로 다른 목적으로 실제 구현된 애플리케이션들을 통해 다양한 패턴을 배울 수 있다.

 


 

최근들어 과거와 같이 모놀리틱한 서비스에서 탈피하여 마이크로 서비스를 구성하여 서비스를 운영하는 경우가 대세를 이룸에 따라 나도 새로 도입되는 기능이나, 기존 모놀리틱 서비스 중 떼어낼 수 있는 부분에 대해 마이크로 서비스로 전환을 하고 있다.

서비스 개발이나 운영 모든 측면이 기존의 그것과는 다르기에 시행착오를 많이 겪을 수밖에 없었고, 어찌어찌 돌아가기는 하나 '이게 맞나' 싶은 부분 애매한 부분들도 많이 있었던 터라 이 책의 내용들이 더 소중하게 다가왔다.

좀 더 나은 클라우드 애플리케이션을 개발 할 수 있을 것 같아 마음도 가벼워졌다.

책의 목차를 보고 든 생각은 "내용이 아주 '빽빽' 한것이 전체적으로 한 번 가볍게 훑어본 되 내가 필요한 부분만 찾아서 해답을 얻는 '바이블'의 역할도 톡톡히 해줄 것 같다." 이다.

 

현재 진행중인 프로젝트에 책의 내용을 바로 적용해보고 있다.

 

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

도서명은 클라우드 네이티브 애플리케이션 디자인 패턴입니다.

 

 

이 책은 한 마디로, __ 입니다.

클라우드 환경에서 운영되는 애플리케이션에 적합한 설계 방법을 제시하는 책

이 책은 __ 인/한 사람들에게 추천하고 싶습니다.

이 책은 온프레미스 환경에서 클라우드로 애플리케이션을 마이그레이션하는 개발팀, DevOps팀, 혹은 운영팀에게 추천하고 싶습니다. 온프레미스 환경에서 A라는 방식으로 운영했던 것들을, 이제는 어떻게 설계해야 더 효율적일까? 클라우드 환경이라면 어떤 방식을 사용할 수 있을까? 주의해야 할 점은 무엇이 있을까? 가 궁금하신 분들을 타겟으로 한 책입니다. 

이 책을 통해 __(한) 정보를 얻어가실 수 있습니다.

클라우드 환경으로 애플리케이션을 마이그레이션할 때 필요한, 이 마이그레이션에서 내가 어떤 혜택을 누릴 수 있고, 어떤 요소를 유의해 가면서 마이그레이션해야 하는지를 알려 주는 책입니다. 또 클라우드 서비스 제공자들로부터 제공되는 다양한 서비스들 중 우리 애플리케이션에 적합한 서비스는 어떤 서비스인지를 판가름하기 어려울 때도 참고하면 좋은 책입니다. 
예를 들어, 우리 애플리케이션 로직 중 일부를 이벤트 드리븐 방식으로 변경한다고 가정해 보도록 하겠습니다. 이벤트를 전달하는 방식으로 제가 프로듀서-컨슈머를 사용할 수도 있고, 퍼블리셔-구독자 형태로 사용할 수도 있습니다. 제가 트위터 같은 걸 만들어서 구독자에게 메시지를 fan out해야 하는 애플리케이션을 만들았다면 후자의 서비스를 사용하는 것이 적합하겠지요? 앞의 문장을 읽고 어..모르겠는데요? 라는 생각이 드셨다면 이 책이 많은 도움이 될 것 같습니다. 
즉, 애플리케이션의 용도와 형태에 따라 적합한 패턴과, 각 패턴은 어떤 식으로 동작하는지, 그리고 해당 패턴의 한계점은 무엇인지를 다루는 책입니다.  

총평

좋습니다. 저는 생각지도 못하게 만족스러웠던 책이었습니다. 시니어가 없는 팀이라면 다같이 한 번쯤은 읽어봤으면 싶은 책이었습니다. 저도 클라우드 경험이 많지 않다 보니 클라우드 네이티브 설계를 할 때 생각보다 알아야 할 것도 많고, 고려해야 할 것도 많다는 것을 많이 느끼고 있는데요. 설계에 대한 확신이 없을 때, 그리고 클라우드가 처음일 때, 아니면 더 나은 베스트 프랙티스가 궁금할 때 정말 추천하고 싶은 책입니다. 보통 이렇게까지 좋다좋다 이야기만 하지는 않는데 이 책은 정말 추천합니다. 

이 서평은 한빛미디어 <나는 리뷰어다> 활동을 위해 책을 제공받아 작성된 서평입니다.
(도서는 제공받았으나 저자와는 어떠한 관계도 없으며, 서평의 내용은 모두 개인의 의견으로 작성되었습니다.)

 

독립적인 기능 중심의 마이크로 서비스들을

다양한 클라우드 환경에서 실행할 수 있는

애플리케이션을 만드는 것을 클라우드 네이티브라 한다.

 

이 애플리케이션은 느슨하게 결합하고,

크기 조절과 관리/관찰이 용이하며 자동화되어야

그 의미가 맞을 것이다.

 

 

클라우드네이티브애플리케이션디자인패턴.jpg

 

클라우드 네이티브 애플리케이션에 맞게

설계, 개발, 배포, 관리, 유지보수할 수 있으려면

다양한 측면을 고려한 개발 패턴들이 적용되어야 하는데

 

이런 특성과 디자인 패턴이 왜 중요한지를 알려주고

통신, 연결성, 구성, 데이터 관리,

이벤트 기반, 스트림 처리, API관리/사용등의

다양한 패턴들과 실제 구현된 애플리케이션을 통해

패턴의 적용과 개발을 위한 구조와 방향까지 알려주며

 

동기/비동기의 기본적인 통신 패턴과

마이크로서비스들의 통합,

확장성과 신뢰성, 성능 최적화를 위한 구성

데이터 통합 방법까지 설명하고 있다.

 

또한 이벤트의 전달/소싱, 비동기 애플리케이션 간의 이벤트 조율과

상태에 따른 대규모 이벤트 스트림 처리와

오류 상태 보호를 위한 신뢰성 구현,

API관리 사용 패턴까지 실제 구현된 애플리케이션들을 통해

다양한 패턴을 알려주는 알찬 책인 것 같다.

 

 

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

 

 

 

클라우드 환경에서 애플리케이션이 갖추어야 할 일곱 가지

 

클라우드 네이티브 애플리케이션 디자인 패턴.png

보통 디자인 패턴 하면 애플리케이션에서 다양한 요구사항에 대응하는 모습을 떠올립니다. 하지만, 이 책에서 말하는 디자인 패턴은 그 대상이 조금 다릅니다.

 

애플리케이션 기능을 위한 디자인 패턴이 아니라 클라우드 환경에서 운영을 위한 개발 패턴을 얘기합니다. 예를 들어, 익히 알고 있는 디자인 패턴이 집안에 방과 거실, 부엌을 배치하고 동선을 짜고 편의성과 뷰를 위한 고민이었다면, 이 책에서 말하는 디자인 패턴은 아파트 단지에서 동의 배치, 주차 공간과 동선, 세대 간 통신 같은 인프라와 커뮤니케이션 방식을 통해 단지 입주민들이 원활하게 잘 지낼 수 있는 방법을 고민합니다.

 

클라우드에서 움직일 애플리케이션이 필요로 하는 것들이 들어 있습니다. 애플리케이션 자체를 만드는, 코드를 위한 디자인 패턴은 없습니다.

 

 

일곱 가지 패턴을 알려줍니다.

 

클라우드 환경으로 인해 기존에 없었던 비즈니스 기능별로 독립하여 만들어진 애플리케이션이 만들어지기 시작했습니다. 이런 애플리케이션들은 다른 서비스와 어떤 식으로든 연결해야 합니다. 그리고 클라우드 환경이 제공하는 다양한 장점들을 사용하기 위해서는 느슨하게 연결할 수 밖에 없습니다.

굳이 클라우드 환경이 아니더라도 많은 애플리케이션은 다른 애플리케이션이나 서비스와 어떤 식으로든 연결하여 움직입니다. 다만, 지금까지는 많은 부분을 서버 인프라에서 지원했기 때문에 그 정도만으로도 웬만한 환경에서는 크게 신경 쓰지 않아도 되었던 부분입니다.

클라우드 네이티브 애플리케이션은 이러한 서버 인프라에 맡겨졌던 기능 가운데 몇 가지를 수면 위로 끌어올렸습니다. 애플리케이션과 같이 고민해야 하는 상황이 된 것입니다. 빠른 대응, 경제성, 확장성이라는 클라우드 가진 장점으로 인해 서버, 애플리케이션에서 클라우드, 애플리케이션, 패턴으로 애플리케이션 환경이 바뀌었습니다.

이 책에서는 그런 패턴들 가운데 일곱 가지를 살펴봅니다.

통신, 연결, 구성, 데이터, 이벤트, 스트림 처리, API 관리 및 사용

 

 

구성도 패턴을 이루고 있습니다.

 

많은 그림을 사용합니다. 패턴과 아키텍처가 가진 특성으로 인해 설명이 길어지거나 다른 부분과 혼동을 일으킬 수 있습니다. 다양한 이미지를 사용하여 설명한 패턴의 이해를 돕고 있습니다. 이미지를 통해 설명을 보완하고, 이미지를 설명하며 패턴을 알려줍니다.

1_sata_pattern.png

 

  • 어떻게 동작할까요
  • 어떻게 사용할 수 있나요
  • 고려해야 할 사항들
  • 관련 패턴들

이렇게 반복하는 패턴에 익숙해지면 책에서 설명하는 패턴에 조금 더 쉽게 다가갈 수 있습니다.

 

2_pipe_filter.png

 

 

각 섹션 마지막에 정리를 하고 있습니다. 주제별로 다양한 패턴과 기술을 설명하고 있기에 섹션이 끝나갈 쯤이면 뭐가 이렇게 많은지 정신없을 수 있습니다. 그럴 즈음에 앞서 풀어놓았던 패턴이나 기술을 표를 이용하여 깔끔하게 정리해 줍니다.

사용하면 좋은 경우와 사용해서는 안 되는 경우, 사용할 때 얻을 수 있는 이점을 한눈에 볼 수 있습니다. 그리고 각 장을 마무리하며 그 장에서 했던 얘기를 정리합니다.

3_streaming_data.png

 

 

마이크로서비스나 클라우드 네이티브 애플리케이션이 아니라도 알아둘 가치가 충분한 내용들입니다.

 

 

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

 

학부 시절과 졸업 이후 제일 달라진 점은 개발도구를 비롯해서 대부분의 프로그램들을 최신버전으로 세팅해서 쓰지 않는 것 같습니다. 업데이트 노트를 보면서 써보고 싶은 기능도 있고, 가려운 점을 긁어주는 기능이 나왔지만 현재 쓰는 주요 라이브러리가 호환이 안되서 못 쓰는 경우가 많은 것 같습니다. 개발 중 라이브러리 뿐 아니라 정말 예기치 못한 곳에서 호환 문제가 생겨서 다시 다운그레이드를 몇 번 한 뒤로 최신버전이 릴리즈 되도 바로 못 올라가고 있는 것 같습니다.

개발론도 아무리 최신 기법이 나오고 새로운 방법이 나와도 레거시한 방법을 무시할 순 없습니다. 개념적으로 레거시한 방법에서 발전되고 변형되면서 나온 방법이거나 대척되는 개념으로 나온 것들이 많기 때문에 레거시를 이해하지 못한채로는 트렌드를 따라가는 것은 쉬운 방법은 아닙니다.

또 소프트웨어가 점점 커지고 복잡해지고 다야한 리소스를 보다 손쉽게 사용할 수 있게 되면서 나온 방법론도 많기 때문에 입문 단계에서는 맞지 않는 방법일 수도 있습니다. 제 입장에서 모놀로식 방법과 이 책에서 다루고 있는 클라우드 네이티브 방법론이 그렇습니다.

클라우드 네이티브 애플리케이션은 탄련적으로 결합된 작은 단위의 독립적인 서비스들의 모음입니다. 프라이빗, 퍼블릭 상관 없이 하이브리드 된 상태의 클라우드 환경에서 지속적인 CI/CD가 이뤄지고 확장성과 가용성이 높은 애플리케이션입니다. 그래서 마이크로서비스가 필수불가결하게 따라오게됩니다. 마이크로서비스는 과거 모놀로식 애플리케이션 처럼 모든 서비스가 거미줄처럼 끈끈하게 연결되어 한 곳의 보수를 위해선 전체적인 구조 개선 등이 필요해서 시간과 비용이 많이 소모되는 것과 달리 확장이나 수정이 필요한 서비스 단위로 컨트롤이 가능하고, 다른 서비스의 생존 유무 관계없이 정상 작동 가능합니다.

그래서 이 책은 과거 모놀로식 애플리케이션에서 클라우드 네이티브 애플리케이션으로 넘어가려고 하거나 처음부터 클라우드 네이브트 형태로 개발을 하려는 분들의 개발 여행의 가이드를 위한 책입니다.

과거 단일한 통신 프로토콜로 전체 프로그램이 돌아갔던과 달리 다양한 프로토콜과 언어, 패턴의 조합으로 애플리케이션이 구성되고 동작합니다. 이 책에서는 그 패턴들을 통신, API, 데이터 관리 등 분류별로 모아서 전체적 개념과 각 패턴의 특징들을 설명하고 있습니다. 입문자면 처음부터 끝까지 한 번 읽으면서 전체적인 감을 잡는 것을 추천하고, 이미 클라우드 네이티브를 도입하고 있다면 본인이 원하거나 관심있는 내용을 발췌식으로 레퍼런스 북 삼아 읽는 방법을 추천합니다.

물론 이 책 하나로 클라우드 네이티브를 이해할 수는 없습니다. 비지니스 로직을 어떻게 서빙할지 결정하는 서비스 단계의 이야기다보니 수 많은 컴퓨터 공학의 기본 지식을 요구합니다. 컨테이너, RPC, 오케스트레이션, 게이트웨이 등 입문자 분들은 용어 부터 낯설 수 있습니다. 이 책으로 용어들을 익히고 탑다운으로 공부 하면서 적용할 수도 있겠지만, 이 책을 제대로 즐기고 누리기 위해선 어느 정도의 학습을 하고 오셔야 합니다.


한빛미디어 2022 도서 서평단 "나는 리뷰어다"의 일원으로 도서를 제공받아 작성한 리뷰입니다.

클라우드 현업에서 일하는 사람으로 어느 정도 개념을 잡는데 도움이 되는 책이었습니다. 
다만 책의 내용이 그리 쉽게 읽히는 책은 아니었습니다.
오레일리 책을 읽을 때마다 느끼는 점은 개념을 잡아주는 책으로는 굉장히 좋지만 그 개념을 쉽게 잡을 수는 없는 책(?)이라는 생각이
들었습니다. 그만큼 이번 책도 쉽지만은 않은 책이었습니다.
1장에서는 클라우드 네이티브란? 개념을 잡아주는 것으로 현업에서 일반적으로 클라우드 네이티브에 대해서 잡고 있는 개념과는 
조금 차이가 있었지만 1장에서 이 책의 전체적인 개념을 잡아준다고 생각해도 될 것 같습니다.
2장 통신 패턴, 3장 연결 및 구성 패턴, 4장 데이터 관리 패턴, 5장 이벤트 기반 아키텍처 패턴, 
6장 스트림 처리 패턴, 7장 API 관리 및 사용 패턴, 8장 실례로 살펴보는 클라우드 네이티브 패턴으로 구성되어 있습니다.
책의 전체적인 내용이 특정 CSP를 기반으로 작성했다기 보단 전체적인 클라우드 개념을 통해서 작성이 되었으며,
그림과 텍스트 위주로 구성이 되어 있어서 초보자가 읽기에는 어려울 수 있으니 어느 정도 클라우드에 대해서 
프로젝트도 수행을 해보고 운영도 해본 경험자가 읽어 보기에는 적당한 난이도의 책이라고 생각이 들었습니다.
개념을 잡아주기에는 좋은 책이지만 다만 아쉬운 점은 실례에 대해서 작성된 
8장의 내용이 너무 적어서 좀 더 많은 양이 할애되어 있지 않은 점이 아쉬웠습니다.
	"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
 

# 클라우드 네이티브 애플리케이션 디자인 패턴

 

- 최근 다양한 개발 방법론이 등장하고 개발 환경이 발전함에 따라 클라우드 기반의 개발과 애플리케이션, 서비스가 주목을 받고 있습니다.

- 클라우드 네이티브, 마이크로서비스, 쿠버네티스와 같은 단어를 들어보셨거나, 앞으로 들어볼 일이 있다면 [이 책]을 읽어보는게 도움이 될 수 있습니다. 이 책은 클라우드 네이티브 환경으로 변경 또는 개발을 시작할 때 필요한 필수적인 내용이 담겨 있습니다.

 

## 클라우드 네이티브의 입문서

 

- 이 책은 클라우드 네이티브의 개념으로 시작해서 필수적인 몇 가지 패턴을 소개하고 있습니다. 데이터 관리 패턴(4장), 이벤트 기반 아키텍처 패턴(5장), API 관리 및 사용 패턴(7장)은 **개인적으로** 입문자가 반드시 알아야할 내용이라 생각합니다.

- 이처럼 입문자가 알아야할 클라우드 네이티브 패턴을 보다 효과적으로 학습하기 위해 **4가지 핵심 포인트**를 활용합니다. 4가지 핵심 포인트는 (어떻게 동작할까요, 어떻게 사용할수 있나요, 고려해야 할 사항들, 관련 패턴들)로 구성됩니다.

- 또한 세부적인 패턴을 학습한 뒤에는 마지막에 지금까지 학습한 내용을 다시 정리하고 있어, 보다 오래 기억할수 있도록 도와주고 깔끔하게 정리되어 있다는 장점이 있습니다.

 

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

20220724_190027.jpg

새롭게 클라우드 네이티브 애플리케이션을 개발할 계획이라거나,  주로 소규모 프로젝트에서 사용 중인 모놀로식 아키텍처에서 마이크로 서비스 아키텍처로 전환해 볼 계획이라면 꼭 한번 읽어보면 좋을 책입니다.

클라우드를 이용하여 애플리케이션을 설계, 구현하는 과정을 제대로 겪어보지 않아서 한번 읽었을 때는 좀 어렵게 느껴졌는데요 

내용들이 잘 정리되어 있고, 각 패턴들을 설명할 때마다 표, 그림 등이 같이 있어 클라우드 네이티브 애플리케이션이 뭔지 몰랐던 저도 

대략적인 개념과 흐름은 배울 수 있었어요.

또 디자인 패턴별로 사용하면 좋은 경우와 사용해서는 안 되는 경우를 명확히 알려주어 초보자가 학습하기 더 좋았어요. 

초보자가 학습하고 기술을 사용할 때 이걸 어디에 써야 하는지 먹먹할 때가 있는데, 이 책은 그 고민의 시간을 확 줄여줍니다.

또한 이 책은 각 패턴들마다 어떻게 동작하는지, 어떻게 사용해야 하는지, 고려해야 할 사항들이 무엇인지, 관련 패턴들은 어떤 것이 있는지에 대해 상세히 적혀있어서 바로 공부해서 실무에 적용해야 할 때 보면 좋을 것 같습니다. 

단순 이론적인 개념만 적혀있는 것이 아니라 설계부터 개발, 구현 및 운영 방안까지 익혀볼 수 있게 구성되어 있으니까요.

 

** 본 리뷰는 한빛미디어 <나는 리뷰어다> 리뷰어 활동으로 도서만을 제공받아, 리뷰어의 주관적인 견해로 작성된 리뷰입니다. **

	

클라우드 네이티브 라는 말을 많이 듣기는 했지만 무슨 뜻인지 어렴풋이 짐작만 할 뿐이었는데, 이 책에서 그에 대해 설명을 한다. 

CNCF에서 내세운 정의를 언급하는데, 

"퍼블릭이나 프라이빗, 하이브리드, 멀티 클라우드와 같은 환경에서 실행할 수 있는 독립적인 비즈니스 기능 중심의 마이크로서비스들을 느슨하게 결합하여, 크기 조절이 가능하고 탄력적이며 관리와 관찰이 용이한 자동화된 소프트웨어 애플리케이션을 만드는 것"

이라고 설명한다. 

 

와, 저러면 좋겠다 라는 생각이 드는 말이다. 저런게 클라우드 네이티브구나.

 

직무 특성상 자연스럽게 클라우드 환경에서 쿠버네티스를 다루게 되는 일이 많다. 

컨테이너로 격리된 실험 환경, GPU 리소스의 자연스러운 분배, 각기 다른 다양한 모델의 서빙 테스트 들을 수행하기 위해서 자연스럽게 쿠버네티스를 기본적으로 전제로 깔고 업무를 수행하게 된다. 

여러 MLOps 와 관련된 오픈소스들도 다수 자연스럽게 쿠버네티스 환경을 전제로 하고 있는 것 같아 보인다. 

 

그런 일들을 클라우드 네이티브적으로 하고 싶어졌다. 그래서 이 책을 골랐다. 

 

이 책을 읽어야 하는 이유 

클라우드 네이티브적인 설계 전문가가 아니라면, 이 책에서 설명하는 각각의 기술을 써 본적이 있거나 잘 알고 있다고 해도, 쿠버네티스 자체에 대해서 심도 깊은 이해를 하고 있다고 해도 고민은 생길 것 같다. 

어떤 식으로 서비스들을 엮을 지, 통신은 어떻게 구현할 지, 어디에 보관 할지.

 

전체를 보는 눈을 갖고 어떤게 최선일지를 아는 것은 정말 어려운 일일 것 같다. 

이 책은 그런 고민을 옆에서 들어주고 조금이나마 도움이 되는 역할을 할 수 있는 책이라는 생각이 든다. 

 

누가 읽어야 하는가

클라우드와 쿠버네티스를 다뤄본 경험이 있고 아키텍쳐를 설계함에 있어서 다양한 선택지들과 방향성에 대한 도움이 필요한 사람이 읽으면 좋을 것 같다. 

 

책의 특징

  • 책의 분량은 368페이지 정도로 얇은 책은 아니지만 책이 다루는 내용을 생각하면 또 두꺼운 책은 아니다. 
  • 개념을 알려주기 위한 구조화가 잘되어있다. 

예를 들어 요청-응답 패턴에 대해 설명을 한다고 하면,

이 패턴의 동작방식과 어떻게 사용할 수 있는지, 고려해야 할 사항까지 함께 알려준다. 

 

이 과정에서 내가 헷갈리거나 부족했던 개념이 있다면 다시금 이해하고 설계 단에서 어떻게 활용해야 할지를 생각해보게 된다. 

개념을 알려줌에 있어서 구조화를 잘하고 독자에 대해 깊이 고려를 했다고 생각하는 부분이다. 

 

내가 겪어보지는 않았지만 단점을 개념적으로 알고 있다면 이를 고려해서 설계에 반영할 수 있다. 

물론 체화되지 않은 지식은 그대로 갖다 쓰기 어렵겠지만 지식이란 그런게 아닌가싶다. 실제로 내가 겪어보지 못한 일일지라도 알게된다.

 

  • 제언도 명확하게 해준다. 왜냐하면 이 책의 제목은 "클라우드 네이티브 애플리케이션 디자인 패턴" 이기 때문이다. 클라우드 네이티브한 설계를 추천해주는 것이 책의 목적이다. 

어떤 상황에서는 무엇이 좋고, 안좋은지 판단할 수 있는 기준을 세워준다. 

"요청-응답 패턴은 반드시 외부 사용자나 시스템, 혹은 마이크로서비스 간에 서로 메시지를 계속 주고받는 방식으로 통신할 때만 사용하는 것이 좋습니다. 그 외의 경우에는 이 장의 나중에 살펴볼 비동기 통신 방법을 사용하는 것이 좋습니다. 애플리케이션 개발에서는 요청-응답 패턴과 다른 통신 패턴을 같이 사용하는 경우가 많습니다."

 

  • 같은 계열에 있는 패턴들을 서로 비교해주는 표도 제공한다. 머릿속에 아주 명확하게 그려진다.

설계에 대한 경험이 없을 지라도, 이 책을 깊게 이해하면 머릿속에 방향성이 쉽게 쉽게 서지 않을까 싶다. 

 

책의 구성

선형적으로 읽어나갈 필요가 있는 책은 아니라고 생각하지만 전체적으로 읽으면서 얼개를 잡아나가면 좋을 것 같다. 

 

* 클라우드 네이티브 애플리케이션의 개념을 다시 잡아준다. 아마 이 책을 잡는 사람이라면 숙지하고 있거나 대충은 알고 있을 내용들이겠지만 구성요소들을 다시 살펴보면서 전체적인 밑그림을 다시 떠오르게 해준다. 

* 통신 패턴에서는 동기, 비동기 메시징 패턴을 설명하고 그 구성요소들을 비교한다. 요청-응답, RPC, 단일 수신자, 다중 수신자. 그리고 각 패턴 구현에서 사용할 수 있는 기술들도 살펴볼 수 있다. 예를 들어 동기에는 RESTFul, GraphQL, Web Socket, gRPC 등이 있다. 사용하고 있거나 도입을 고려하고 있을 기술들이겠지만 다시 이렇게 개념을 살펴보면서 장, 단점을 머릿속에 넣고 있기는 쉽지 않다. 그래서 좋다고 생각한다. 

* 연결성 및 조합 패턴에서는 클라우드 네이티브 애플리케이션 내의 마이크로 서비스 간 혹은 외 시스템과의 연결을 살펴본다. 서비스 연결성 패턴, 서비스 추상화 패턴 등을 설명한다. 용어 자체로는 와닿지 않은 분류일 수 있으나 도식과 함께 어떻게 동작하는지 어떻게 사용해야 할지도 같이 설명해주기 때문에 어떤 것인지 쉽게 이해할 수 있다. 예를 들어 서비스 추상화 패턴이란건, 쿠버네티스 인그레스로 MySQL DB, 카프카 등 각 애플리케이션에 해당하는 서비스에 연결하는 구조를 설명한다. 

* 데이터 관리 패턴은 클라우드 네이티브에서의 데이터 아키텍쳐 자체를 다룬다. 데이터 스토어를 무엇을 쓸지 각 기술이 어떤 특성들을 갖고 있는지를 일목요연하게 볼 수 있다. 그리고 데이터 관리를 어떻게 조합할지 어떻게 확장할지로 이어진다. 데이터 확장의 예로는 데이터 샤딩을 통해 부하가 고루 분산되게 하는 방식 등이 있다. 데이터 아키텍쳐 전체를 다루기 때문에 좀 더 세분화했어도 좋았을 것 같은 장이다. 

* 데이터 관리 패턴에서 4.7 성능 최적화 패턴에는 실제로 써서 성능 향상을 노릴 수 있을 만한 새롭게 알게 된 내용들이 있었다. 구체화된 뷰 패턴, 데이터 지역성 패턴, 캐싱 패턴 등을 설명하고 있다. 

출처: https://mokpolar.tistory.com/26 [TOUCHING ELEPHANT:티스토리]

클라우드 시장이 폭발적으로 확산하면서 기업들의 클라우드 전환은 이제 선택이 아닌 필수 과제가 됐다. 더불어 클라우드의 장점을 최대한 활용할 수 있도록 애플리케이션을 구축하고 실행하는 방식인 클라우드 네이티브 또한 중요한 키워드로 떠오르고 있다.


이렇게 빠르게 변화하고 있는 상황 속에서 새롭게 마이크로서비스 또는 클라우드 네이티브 애플리케이션을 개발해야 하거나, 기존의 애플리케이션을 클라우드 네이티브 방식으로 전환하고자 하는 상황에 직면할 때 기술자들은 사용해야 할 기술 스택과 구조에 대한 선택의 어려움을 겪게 된다.


이 책은 위와 같은 상황의 문제를 해소할 수 있도록 도움을 주는 책이다. 총 368p로 다른 기술 서적보다는 상대적으로 얇은 편이라고 생각되지만, 클라우드 네이티브 관련 용어나 개념과 동작 원리에 대한 기초적인 이해가 필요한 독자에겐 충분히 유용할 것이다.


비록 직접 따라 하며 동작 원리를 확인해볼 수 있는 실습 내용은 없지만, 비교적 쉬운 설명과 풍부한 그림, 표를 통해 구성된 점이 맘에 든다. 클라우드 관련 업무를 하는 모든 엔지니어, 아키텍트, 개발자에게 일독을 권하고 싶다.

 

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

안녕하세요 마개입니다.

 

이번에 소개해 드릴 책은 "클라우드 네이티브 애플리케이션 디자인 패턴"입니다. 해당 책에 대해 알아보도록 하겠습니다.

 

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

 

도서 소개

● 도서명 : 클라우드 네이티브 애플리케이션 디자인 패턴

● 지은이 : 카순 인드라시리, 스리스칸다라자 수호타얀

● 옮긴이 : 박수현

● 출판사 : 한빛미디어

● 출간 일자 : 2022-06-02

● 페이지 : 368쪽

● 가격 : 정가 28,000원

 

이 책은 새로운 클라우드 네이티브 애플리케이션을 개발하거나 기존의 애플리케이션을 클라우드 네이티브로 전환하고자 할 때 또는 기존에 모놀리식 아키텍처에서 MSA로 전환하고자 고민하고 있는 분들에게 도움이 되는 책입니다.

 

 

이 책에서는 아래와 같은 6가지 설계 패턴을 주제로 다룹니다.

  • 통신 패턴
  • 연결성 및 조합 패턴
  • 데이터 관리 패턴
  • 이벤트 주도 아키텍처 패턴
  • 스트림 프로세싱 패턴
  • API 관리 및 사용 패턴

 

 

그리고 각 패턴에 대해 4가지 포인트로 설명합니다.

  1. 어떻게 동작할까요?
  2. 어떻게 사용할 수 있나요?
  3. 고려해야 할 사항들
  4. 관련 패턴들

 

 

4가지 포인트로 알려주기 때문에 클라우드 애플리케이션 설계에 대해 고민하고 있을 때 많은 도움이 됩니다. 설계를 아직 시작하지 못하고 있어도 처음부터 상세하게 알려주며 상황에 따라 맞는 설계를 알려줍니다. 또한 각 패턴에 대해 테스팅 하는 방안이나 모니터링하는 방안 등 전체적으로 필요한 것들을 다루고 있어서 개념부터 운영 방안까지 파악할 수 있습니다.

 

이 책에서는 각 패턴들마다 도식을 보여주며 쉽게 설명해 주고 있습니다. 도식을 통해 전체적인 큰 그림을 파악할 수 있으며 적용해 볼 수 있습니다. 또한 패턴에 대한 마지막 정리와 필요한 기술들을 표의 형태로 정리하여 비교하기 쉽게 보여줍니다.

 

여기에 등장하는 기술들의 종류는 많고 난이도가 쉬운 편은 아니라서 따로 더 깊은 공부를 해야 합니다. 이 책에서는 모든 기술들을 다 다루지는 못하고 간단한 소개를 하고 있습니다. 적용해야 할 패턴에 대해 먼저 파악을 해보고 그것에 맞는 기술들은 무엇이 있으며 상황에 맞는 것이 어떤 것이 있는지 먼저 파악을 해본 후에 해당 기술들에 대한 공부를 따로 진행하면 좋을 것 같습니다.

 

 

총평

설계에 대해 알려주는 책인데도 지루하지 않고 전체적으로 읽기 쉽고 직접 코딩을 하거나 서비스를 다루지도 않는데 흥미로웠던 책입니다. 그만큼 개념에 대해 정리가 잘 되어 있고 다양한 패턴들에 대한 설명도 명확하게 되어 있습니다. 클라우드를 이용하여 애플리케이션을 구축하고자 하는 분들에게는 강력하게 추천해 드리며 많은 도움이 될 것이라고 봅니다.

현재 저의 경우 회사에서 MSA를 할 정도로 규모가 크지 않고 클라우드는 일부만 사용하고 있지만 미래의 변화를 대비하고자 여러 번 학습하려고 합니다.



한빛미디어 출판사 나는 리뷰어다를 통해 제공받아 작성된 서평입니다.

KakaoTalk_20220724_132612033_01.jpg

 

KakaoTalk_20220724_132612033.jpg

 



책 신청 이유

평소에 aws를 이용해서 서비스를 운영 중이지만 좀 더 효율적으로 애플리케이션 서버의 인프라를 클라우드 환경에서 좀 더 효율적으로 운영할 수 있는지 다양한 사례 및 패턴을 익히고 싶어서 신청하게 되었습니다.

목차

1장은 클라우드 네이티브 애플리케이션에 대해서 다양한 설명 및 방법론 디자인 패턴이 설명되어 있습니다.
2장은 통신패턴 (동기/비동기) 통신에서 쓸 수 있는 패턴 및 기술 및 테스팅 보안 모니터링 데브옵스에 대한 설명이 적혀있습니다.
3장은 연결성 및 조합 패턴
4장은 데이터 관리 패턴
5장은 이벤트 주도 아키텍처 패턴
6장 스트림 프로세싱 패턴
7장 API 관리 및 사용 패턴
8장 클라우드 네이티브 패턴 적용하기

서평
일단 실무에서 많이 쓰이는 다양한 패턴들이 설명되어 있고 비록 이해가 안 되는 부분이라도 나름 아키텍처 구성을 그림으로 잘 이해를 시키려고 노력을 한것 같습니다.


저 또한 제가 아직 실무에 안쓰이는 아키텍처 및 패턴들이 있어서 재밌게 읽어본 것 같습니다.


이렇게 안쓰이는 아키텍처는 본인이 테스트 및 아키텍처 구성을 해봐야 이것을 실제로 적용을 해야 할 것인지 말아야 할 것인지 알 수가 있는데 이렇게 책에서나마 이렇게 간접적으로 구성을 볼 수 있어서 더욱더 좋았던 것 같습니다.


저 또한 이책은 한 번으로 읽히는 것보단 제가 추후에라도 구성해보고 싶은 아키텍처가 있으면 꼭 참고를 할 것 같습니다. 

		
		

[ Design Patterns for Cloud Native Applications (O'REILLY) ]

  클라우드 네이티브 애플리케이션 디자인 패턴

     카순 인드라시리, 스리스칸다라자 수호티얀 지음

     박수현 옮김

부제 : 애플리케이션의 배포와 운영을 고려한 7가지 설계 패턴

 

이번 책은, "O'REILLY Design Patterns for Cloud Native Applications (클라우드 네이트브 애플리케이션 디자인 패턴)" 이라는 책 입니다.

애플리케이션의 배포와 운영을 고려한 7가지 설계 패턴 이라는 부제에서 보여지듯 책은 1장에서 클라이드 네이티브에 대한 기본적인 개념과 개발 방법론 및 디자인 패턴 종류에 대한 소개를 한 후 각 패턴에 대한 상세 설명을 2장 부터 각 패턴에 대해 개론적인 설명 및 고려할 사항, 동작 형태 그리고 사용할 수 있는 기술 등을 설명 하고 있습니다. 

그리고, 8장에서 실제 패턴 적용에 대한 설계 방법에 대하여 간략하게 설명하고 있습니다.

어떤 패턴들이 있는지와 각 패턴들에 대한 기본 개념을 이해하고 설계에 반영 할 수 있도록 도와주기 위한 지침서 입니다.

* 책 구성

책 내용은 너무 딱딱하지 않게 강의 듣는 듯한 느낌입니다.


책은,

1장은, 클라우드 네이티브 애플리케이션에 대한 개념 및 개발 방법론 그리고 책에서 설명하는 7가지 디자인 패턴에 대한 소개로 구성되어 있습니다.

2장 부터 7장까지 1장에서 소개한 디자인 패턴들에 대해 구성방법, 동작 형태, 적용 기술 들에 대해서 설명 하고 있습니다. 


      2장 : 통신 패턴

      3장 : 연결성 및 조합 패턴

      4장 : 데이터 관리 패턴

      5장 : 이벤트 주도 아키텍처 패턴

      6장 : 스트림 프로세싱 패턴

      7장 : API 관리 및 사용 패턴

8장은, 패턴을 적용한 설계에 대해 "온라인 쇼핑몰 시스템 만들기"라는 예제를 통하여 적용 방법에 대해 설명 하고 있습니다.

각 장의 마지막에는 "마치며" 섹션을 두어 해당 장에서 알고자 했던 부분 그리고 다음 장에서 할 내용에 대해 그리고 저자의 생각 등을 통하여 각 장의 강의를 마무리 하고 있습니다. 


책 내용 중간 중간에 추가 설명 필요한 내용이나 관련 내용에 대하 참고할 장 또는 참고할 책이나 자료 등에 대해 "Note" 블럭을 두어 학습에 도움을 주고 있습니다.


섹션 마지막에는 학습한 내용을 표로 다시 정리하여 쉽게 볼 수 있게 제공 하고 있습니다.

* 결론

클라우드 이점을 최대한 살리기 위하여 클라우드 네이티브 어플리케이션이 많이 도입 되어 있습니다.

많은 자료들과 책들이 있지만, 

새롭게 도입 하고자 하는 경우나 기존의 어플리케이션을 클라우드 네이티브로 전환하고자 할 때 어떤 기술을 적용하고 어떤 구조를 사용할 것인지를 원하는 경우 읽어 보면 많은 도움이 될 것 같습니다.

책 내용이 쉽지는 않지만, 클라우드 네이티브 어플리케이션에 대해서 처음 접하더라도 기존의 방식들과 비교해 가며 공부 해보면 좋을 내용들 이기에 추천 합니다.

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

 

 

책을 읽으면서 현재 실무에서 적용하고 사용하고 있는 기술들에 대해서 고민하게 해준 책이었다. 처음 책 목차를 보고는 당황했다. 동기 메시징패턴/비동기 메시징 패턴 등 이렇게 많은 패턴들이 있고 어려울 것 같은 느낌을 주는 책이었기 때문이다.

 

책을 보다보니 책을 보기 전에 생각했던 고민들은 아무것도 아니었다. 처음보는 용어들이 적혀있는 패턴들이지만 술술 잘 읽히고 이해하기 어렵지 않았다. 많은 부분들에 있어서 실무에서 이미 사용하고 있는 패턴들이었기 때문에 더욱 이해하기 쉬웠을 수도 있다는 생각을 했다.

 

책에서는 여러 패턴들을 설명하면서 각각의 장/단점과 고려해야하는 부분들에 대해서 자세히 설명해주고 있다. 예를 들어 관계형 데이터 베이스와 NoSQL 데이터베이스를 선택할 때 서로 고려해야하는 부분과 Apache Kafka와 ActvieMQ/RabbitMQ 처럼 이벤트 처리를 위한 메시지 서비스에 있어서 서로의 장/단점과 차이점, 그리고 각각 고려해야하는 부분을 정말 상세하게 기술해주고 있다.

 

책 중간중간 정리되어 있는 부분은 책을 잘 이해했는지를 다시 한 번 살펼볼 수 있게 해주는 부분이다. 내용을 잘 이해했는지 뿐아니라 스스로도 정리할 수 있는 기회가 되는 좋은 부분이었다.

 

개인적으로 이 책은 온프레미스 환경에 구축된 서비스를 클라우드 환경으로 올리려는 사람들 혹은 클라우드 환경에 대한 개념이 없는 사람들에게 추천하고 싶다. 책을 한 번 읽고 나면 클라우드 환경에서 서비스를 구축할 때 도움이 많이 될 것 같다. 내가 이 책을 조금 더 빨리 만났다면 이라는 생각을 할 정도로 내용이 좋은 책이기 때문이다.

 

한빛미디어에서 발간된 Design Patterns for Cloud Native Applications, 아주 흥미로운 책입니다. 기존에  micro service architecture를 소개하던 여럿 책들과 비슷하게 내용은 흘러가지만 제목 그대로 클라우드 네이티브 애플리케이션 디자인 패턴을 망라하고 있습니다. 

아키텍처를 구축하는데 필요한 다양한 패턴을 배울 수 있는데요, 2장- 통신 패턴, 3장- 연결 및 구성 패턴, 4장- 데이터 관리 패턴, 5장- 이벤트 기반 아키텍처 패턴, 6장- 스트림 처리 패턴, 7장- API 관리 및 사용 패턴, 8장- 실례로 살펴보는 클라우드 네이티브 패턴까지 순차적으로 다룹니다. 

 

 

 

아래처럼 언제 사용하면 좋은지, 사용해서는 안 되는 경우는 또 언제인지 비교를 통해 나열합니다

 

 

 

데이터베이스 쪽도 착실하게 다뤄줍니다. 여기 나열된 데이터베이스는 여러 방면에서 많이 사용되고 있는 것들이기 때문에 알아두면 좋습니다.

 

 

 

이 책은 쉽지 않습니다. 온전히 모든 내용을 흡수하는 것도 단기간에는 어려울 겁니다. 경력이 있어서 다뤄본 패턴이 많다면 이야기가 다르겠지만요. 오히려 그런 분들은 복습하는 차원으로 읽어보시면 무척 좋을 겁니다. 아무튼, 이미 사용하고 있거나 사용해본 경험이 있지만 그게 패턴인지는 모르는 경우도 있었을 겁니다. 아마도 이 책을 보면서 무릎을 탁 치는 경우도 있지 않을까 싶네요. 모든 내용을 달달 외우려고 하지 말고 가까이 두고 여러 번 펼쳐보는 방식을 추천합니다. 필요할 때마다 들여다보는 사전처럼요. 그만큼 다양한 패턴이 잘 정리되어 있기 때문에 많은 도움을 받을 수 있을 겁니다.

요즘처럼 클라우드 네이티브 애플리케이션이 활발히 개발되는 시기라면 패턴은 확실히 익혀두는 게 좋기 때문에 신입/경력을 구분하지 않고 일독을 권합니다.

 

 


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

 

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

이 책은 클라우드 네이티프 애플리케이션을 위한 설계 패턴에 대해서 소개하고 있다. 목차는 아래와 같다.

 

CHAPTER 1 클라우드 네이티브 애플리케이션이란?

CHAPTER 2 통신 패턴

CHAPTER 3 연결성 및 조합 패턴

CHAPTER 4 데이터 관리 패턴

CHAPTER 5 이벤트 주도 아키텍처 패턴

CHAPTER 6 스트림 프로세싱 패턴

CHAPTER 7 API 관리 및 사용 패턴

CHAPTER 8 클라우드 네이티브 패턴 적용하기

 

 먼저 1장에서 클라우드 네이티브 애플리케이션(CNCF)의 정의와 이를 위한 아키텍쳐등을 소개한다. 초반부에 개념과 CNCF 설계의 기본이 되는 마이크로서비스 설명, 그 다음 실행에서 중요한 컨테이너와 컨테이너오케스트레이션, 개발 자동화등을 소개하고 개발 방법론의 각 스탭을 소개하고 있다.

 스탭 설명후에는 각 패턴에 대해 대략적인 개요가 나온다. 2장부터는 1장에서 소개한 각 패턴에 대해서 좀 더 자세하게 파고들어 설명한다.

 각 장에서는 패턴별로 이게 어떤 패턴인지에 대해서 개념과 동작방식, 고려사항등을 들어 1장의 개요보다 더 보충된 설명을 제공한다. 이후  이 패턴을 위해 사용하는 기술들 소개와 테스팅, 사용해야하는 상황등 실제 프로젝트에 적용해볼 수 있도록 가이드하고 있다.

 8장의 경우엔 이전에 설명한 패턴들이 적용된 프로젝트를 전반적으로 보여주고 있다.

 

<총평>

 책의 난이도가 다소 높지만 각 패턴이나 적용방식에 대해 그림등을 통해 최대한 쉽게 전달하고 있다고 느꼈다. 클라우드 네이티브 애플리케이션을 개발할 예정이 있거나 관심이 있다면 시작전에 해당 책이 좋은 가이드가 될 수 있을 것 같다.

부끄러운 얘기지만 지금까지 개발을 하면서 '막 개발'을 했었다.
잘 풀리지 않는 건은 혼자 고민하며 나름 뿌듯해 했지만 다른 문제에 직면하기도 했다.
하지만 최근 "디자인 패턴"에 대해 알고 나서 좋은 설계 방법에 대해 고민을 해본다.
 
이 책은 비슷한 맥락으로 클라우드 환경에서 보다 나은 설계를 위한 '디자인 패턴'을 안내하고 있다.
 
클라우드에 대한 짧은 설명과 함께 개발 방법론에 대해 서술하고, 7개 디자인 패턴을 소개한다.
- 통신패턴
- 연결성 및 조합 패턴
- 데이터 관리 패턴
- 이벤트 주도 아키텍처 패턴
- 스트림 프로세싱 패턴
- API 관리 및 사용 패턴
- 클라우드 네이티브 애플리케이션 참조 모델
 
사실 현재 재직 중인 회사는 '서비스 지향 아키텍처(SOA)' 방식의 아키텍처로 구성되어 있다.
얼마전 새로 오신 팀장님/상무님은 궁극적으로 MSA 모습을 그리고 있는데, 그러한 과정에서 이 도서는 클라우드 환경에 대한 설계 방식을 이해하는데 도움이 되었던 것 같다.
 
특히 '이벤트 주도 아키텍처 패턴'은 개인적으로 재미있는 주제였다.
최근 고객의 특정 이벤트 발생 시 어떤 action을 취하길 원하는 서비스를 고민하고 있었기에 시의적절하게 내용을 다루고 있었던 것 같다.

이 책은 적절한 도표와 그림을 통해 이해하기 쉽게 설명하고 있고,
항상 디자인 패턴에 대해 공부하면 대체 이 패턴을 어디에 어떻게 적용하는거지? 고민을 했었는데, 사진처럼 "~경우" 로 정리해서 보다 쉽게 이해할 수 있도록 도움을 주고 있다.
 
기존 모놀리식 에서 클라우드로 전환을 검토하고 있다면,
이 책에서 소개하는 여러 패턴과 함께 고민을 해본다면 분명 도움이 되지 않을까 생각한다.
 
꽤 유익한 도서였다.

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



◎ 추천 포인트
1. 도식을 활용한 이해하기 쉬운 설명
2. 패턴별 동작 방식과 사용례 제시
3. 다양한 토픽에 대한 폭 넓은 이해


이 책은 클라우드 네이티브 에플리케이션을 구성할 때 적용할 디자인 패턴들을 소개하고 각 패턴에서 염두해 두어야 할 사항을 카달로그 식으로 정리한 책이다.
부제가 좀 이상한데, 7가지 패턴이 나오는게 아니라 7가지 주제에 대해 다양한 구현 패턴을 제시하고 있다.


예를들어 3장 “연결성 및 조합 패턴”을 보면 서비스간의 연결, 조합을 위한 여러 구현패턴을 소개하는 식이다.


3.2.1절 “서비스 오케스트레이션 패턴”을 통해 이책의 구성을 살펴보겠다.
책에서 소개하는 패턴들을 “어떻게 동작할까요”, “어떻게 사용할 수 있나요”, “고려해야 할 사항들”, “관련 패턴들” 이라는 동일한 방식으로 설명한다.


그리고 마지막으로 소개한 패턴들을 정리하여 표로 제시하고 있다.



 

다양한 도식을 활용하여 각 각의 패턴들의 구성방식이나 프로세스의 흐름을 설명하고 있어서 이해하기 좋고 관련 패턴을 일목요연하게 비교할 수 있다는게 이 책의 가장 좋았던 점이다.

아쉬운 부분은 단순히 소개할 뿐 좀더 명확한 가이드는 제시하지 않는다는 것이다.
선택지가 많을수록 선택하기 힘들게 되는데, 이 책의 감상이 딱 그런 느낌이다.
또한 구현된 모습을 소개하지만 구현하기 위한 구체적인 지침이나 코드도 없다.

이책은 초보자 혹은 전문가 라는 양쪽 끝에 있는 독자에게 추천하겠다.
클라우드 네이티브를 처음 접해보고자 하는 사람에겐 좋은 진입점이 될수 있을것이다.
또한, 서비스를 설계하는 아키텍트급 독자에게도 다양한 패턴들의 장단점 비교자료로 많은 도움이 되리라 생각한다.
다만 아키텍트급 전문가에게는 너무 쉬운 내용일 수도 있겠다.

책 표지

 

> 책의 구성 및 내용

이 책은 클라우드 환경에서 사용되는 여러가지 애플리케이션 환경의 패턴에 대해

다양하게 안내해주고 있습니다.
책에서 소개하는 7가지 설계 패턴은

  • 통신 패턴
  • 연결 및 구성 패턴
  • 데이터 관리 패턴
  • 이벤트 기반 아키텍처 패턴
  • 스트림 처리 패턴
  • API 관리 및 사용 패턴
  • 실례로 살펴보는 클라우드 네이티브 패턴
미리 정리 및 안내해주고 있어
이후에 설명하는 패턴을 이해하기 쉽게 만들어 놓았습니다.
실제로 써보지 못한 오픈소스나 패턴들이 설명에 나와 반갑기도 하고
쉽게 설명되어 이해하기도 쉬웠습니다. 
장단점을 설명하는 부분이 각 서비스를 이해하기에 많은 도움이 되었습니다.
각 패턴에서 설명되고 있어 클라우드 구조를 익히는데 많은 도움이 됩니다.
상세한 설명
패턴에 대해 상세히 설명해주고 있어 특히나 많은 도움이 되었습니다.
정말 다양하게 소개하고 있습니다.
설명하고있는 기술/패턴이 업무하면서 최소 한번은 들어본
내용들이어서 클라우드 업무를 본업으로 하고 있는 독자들에게
정말 많은 도움이 될 것 같습니다.
이해가 쉬울 것 같진 않습니다.
아쉬운 점입니다만, 책과 인터넷 검색을 병행하며 읽으면 
이해가 가능하며 책에는 각 기술의 장단점을 비교하여
매우 잘 기술되어 있어 이해에는 많은 도움이 됩니다.
  • 클라우드에 사용되는 주요 패턴들이 상세히 소개되고 각 대표 솔루션도
  • 소개되어 아키텍처를 공부하는데 많은 도움이 됩니다.
  • 없음
옮긴이 : 박수현
출판사: 한빛미디어
가격: 28,000원
전체 페이지: 368페이지

 

 

책의 부제는 [애플리케이션의 배포와 운영을 고려한 7가지 설계 패턴] 입니다.

으로 7가지로 나누어 소개하고 있습니다.

패턴을 설명할 때 나오는 용어의 정의를 책 서두에서

각 패턴에 대해 읽으면서, 평소 관심있었지만

개인적으로는 GraphQL에 대한 설명이나 NATS, Istio 서비스 매쉬 등에 대해

클라우드에서 자주 사용되는 다양한 솔루션들의 구조도

 

 

섹션중에 [어떻게 동작할까요] / [어떻게 사용할 수 있나요] 등의 세션은

책에서는 클라우드에 사용되는 기술이나, 서비스 패턴에 대해 

책에 나온 100% 모든 기술/패턴을 경험하기 어렵지만 

다만 클라우드에 대한 경험이 없는 상태에서 읽을 경우

각 패턴에서 설명하는 기술들의 예제코드 같은 것은 없습니다.

> 장점

> 아쉬운 점

책읽기 필요사항

클라우드를 사용해 본 경험, 서비스 개발 경험

추천 독자

클라우드 업무 종사자

> 정보

저자: 카순 인드라시리, 스리스칸다라자 수호타얀

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

 클라우드를 이용한 개발 및 운영이 지금은 당연한 것으로 생각되고 있다. 그만큼 클라우드는 어느 순간 개발에 대한 영역에서 중요한 포지션을 차지하고 있다. 프로젝트를 시작하게 되면 코드관리, 배포, 운영에 대한 모든 인프라 환경이 클라우드로 변경되어가고 있다. 하지만 우리의 어플리케이션은 그런 환경에 맞게 개발되고 있는가라고 질물을 한다면 대답하기가 쉽지 않다.

이러한 어려움들을 해결하기 위해서 우리는 패턴이라는 것을 사용한다. 각각의 요건과 환경에 맞게 이미 시도해본 사람들의 경험을 바탕으로 만들어진  형식들이 바로 패턴이다. 이 책에서는 우리가 클라우드 환경에서 어플리케이션을 개발하고 운영하고 배포하기 위해서 적합한 패턴들이 어떤것들이 있는지 알려준다. 이 책을 통해 알게 되었는데 패턴이 생각보다 정말 많다.

많은 패턴들을 총 6가지의 큰 주제로 묶어서 설명을 해주고 있다.

통신패턴
연결성 및 조합 패턴
데이터 관리 패턴
이벤트 주도 아키텍처 패턴
스트림 프로세싱 패턴
API 관리 및 사용 패턴

각각의 패턴 하위에 관련된 수많은 패턴들이 있는데 다음과 같은 형식으로 설명을 해주고 있다.

패턴 정의 ---> 동작방법 ---> 사용방법 ---> 고려사항 ---> 관련 패턴

동작 방법에 대한 설명은 아래와 같이 그림들을 통해서 이해를 도와주고 있다. 아무래도 패턴이 어떻게 동작되는지 이해하기 위해서는 글보다는 전체적인 그림을 보는게 더 나은데 각 패턴마다 이렇게 동작에 대한 그림들이 있어서 이해하는데 도움이 된다.

위에서도 말했듯이 각 주제별로 정말로 많은 패턴들이 있다. 그래서 읽다보면 각 패턴에 대한 내용이 헷갈릴 때도 있다. 그래서 이책에서는 각 패턴에 대한 주제 안에서도 또 묶어서 설명을 한 후에 그 내용이 끝날때마다 비교를 해준다. 간략하게 정리가 되어있어서 앞에서 봤던 내용들을 정리도 할수 있고 차이점을 한눈에 볼 수 있다. 

그리고 제일 마지막 8장에서는 "클라우드 네이티브 패턴 적용하기" 라는 주제로 "온라인 쇼핑몰" 를 설계를 할때 어떤 패턴들을 적용하는지 나와있다. 쇼핑몰에 필요한 기능들과 그 기능들을 연결하기 위해서 어떠한 아키텍처들이 필요하고 어떤 패턴들이 알수 있다. 이부분을 통해서 직접 코드로 구현을 해보면 쇼핑몰이라는 주제를 통해 다양한 패턴들을 경험할 수 있어서 좋을것 같다. 

계속해서 말하지만 정말 많은 패턴들을 다루고 있기 때문에 각각의 패턴들에 대한 상세한 내용들이나 유즈케이스를 원한다면 다시 찾아보는 수고로움이 필요하다. 하지만 이런 패턴들이 존재한다는 것을 알고 찾는것과 모르고 찾는것은 시작점부터가 다르다고 생각한다. 그래서 클라우드 네이티브 아키텍처에 관심이 있는 분들이라면 각각의 패턴을 이해하는데 도움이 될거라 생각된다. 

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


마이크로서비스 아키텍처를 구성하는 디자인 패턴

 

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

 

20220718-231532-2707-LR84.jpg

 

 

이 책에서는 마이크로서비스 아키텍처로 구성되는 서비스를 설계 할 때 인프라, 서비스 배포, 통신, 서비스 조합, 데이터베이스에 대해 어떤 패턴들이 적용될 수 있는가 소개한다.  

 

SOA는 특정 비즈니스 기능을 지원하는 서비스들을 조합하여 소프트웨어 어플리케이션을 만드는 모듈성 개념이다.  각 서비스들은 중앙 집중화된 모놀리식 컴포넌트를 포함하기도 한다. 이러한 구조적 특징 때문에 독립적으로 개발-배포가 어렵고 신뢰성이 떨어진다. 반면 마이크로서비스 아키텍처는 비즈니스의 핵심 기능을 구현한 독립적인 서비스다. 서비스를 통합하기 위해 일괄된 버스나 인터페이스가 아닌 각각의 방법으로 서비스를 연결한다. 또한 다른 서비스와 데이터베이스를 공유하지 않는다.

컨테이너는 클라우드 네이티브 어플리케이션을 패키징하고 실행하는데 중요한 역할을 한다. 배포될 이미지를 컨테이너 레지스트리 라고 하며 이 이미지를 컨테이너 인스턴스라는 프로세스로 실행한다. VM과 가장 큰 차이점은 하이퍼바이저를 통하지 않아 호스트의 커널, 프로세서, 메모리를 공유한다는 점이다. 쿠버네티스는 이러한 컨테이너 오케스트레이션의 대표적인 솔루션이다. 마이크로서비스 어플리케이션의 설계, 배포 자동화, 메트릭에 대해서도 설명한다.

 

통신 

어플리케이션과 외부 서비스 간의 상호작용을 구현하는 것은 클라우드 네이티브 어플리케이션 환경에서 흔하지만 여전히 까다롭다고 한다. Request-Response방식의 동기 통신 방식과 메시지 큐, pub-sub 방식의 비동기 통신이 있다.

이 파트에서는 Request-Response, RPC, 단일 수신자, 다중 수신자, 비동기 요청-응답에 대해 소개한다. 동기적 처리를 할때 메시징에 RESTful, GraphQL, gRPC, 웹소켓이 있다. 비동기 처리를 처리를 위한 메시징 패턴에 AMQP, 카프카, NATS가 있다.

 

서비스 연결성 및 조합

이 파트에서는 내부 서비스 간 연결성을 확보하고 서비스끼리 조합하는 패턴을 소개한다.

연결성 - 통신의 보안성, 가용성 등을 보장한다.

조합 - 여러 서비스를 결합하여 새로운 서비스를 만드는 것.

연결성 패턴으로 서비스 연결성 패턴, 서비스 추상화 패턴, 서비스 레지스트리 및 검색 패턴, 탄력적 연결성 패턴(resilent connectivity pattern), 사이트카 패턴, 서비스 메시 패턴에 대해 소개한다. 여기서 재시도, 데드라인, 서킷 브레이커 패턴들의 개념도 같이 등장한다.

조합 패턴으로는 서비스 오케스트레이션 패턴, 서비스 코레오그래피 패턴, 사가 패턴에 대해 설명한다.

 

데이터

데이터를 분산하게 되면 서비스간 데이터 접근이나 동기화가 어려워 진다. 트랜잭션 처리, 캐싱 등 마이크로서비스 아키텍처에 어울리는 데이터 스토어 패턴이 필요하다.인입되는 입력 데이터에만 영향을 받는 경우 stateless 어플리케이션이다. 인입되는 데이터와 설정, 상태가 모두 필요한 형태를 stateful 어플리케이션이라고 한다.

데이터 조합 패턴은 데이터 서비스, 조합 데이터 서비스, 클라이언트 사이드 매시업 패턴이 있다. 데이터 확장 패턴에는 데이터베이스를 나누는 샤딩과 CQRS에 대해서 설명한다.

 

이벤트 주도 이키텍처

EDA라고 불리는 이벤트 주도 아키텍처는 비동기 통신의 한 방법이다. 

이벤트 전달 패턴에는 생산자-소비자, 발행자-구독자(pub-sub), fire and forget, store and foward, polling, request callback 을 소개한다. 비동기 이벤트 전달 패턴으로 오케스트레이션 패턴을 사용한다. 여기에는 중재자 패턴, pipe and filter, 우선순위 큐 에 대해서 소개한다. 

 

20220718-233321-2739-LR84.jpg

 

 

스트림 프로세싱 패턴

EDA는 한번에 하나의 이벤트만 처리하지만 스트림 패턴은 상태를 가지고 지속적으로 처리하는 패턴이다.

 

API 관리 및 사용 패턴

일부 서비스를 외부에 제공해야할 때 API 게이트웨이 형식으로 제공하는 경우에 API패턴이 몇가지 있다. 관리 패턴에는   API 게이트웨이, API 마이크로 게이트웨이, 서비스 메시 사이드카 게이트웨이가 있고, 사용 패턴에는 FE와 각 서비스간의 직접 통신, API 게이트웨이를 통한 FE 통신, FE를 위한 백엔드가 있다.

 

 

주로 서비스 설계를 위한 패턴들을 시나리오와 그래프로 잘 설명하는 책이다. 주변에서 이야기하는 막연한 단어들로 익숙하지 않았던 개념들에 대해 확실하게 머리에 새길 수 있는 책이였다.

 

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

 

 

 

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

 

이 책은 클라우드 네이티브 애플리케이션의 특성에 대해 설명하고 있습니다. 일반적인 온 프레미스 환경과 클라우드 환경의 차이로 인해 애플리케이션의 설계 방식도 많이 변경되었습니다.

 

크게 구분하여 ‘통신’, ‘연결 및 구성’, ‘데이터’, ‘이벤트 기반 아키텍처’, ‘스트림’ 등으로 볼 수 있으며, 각 내용마다 클라우드 환경에서 적합한 디자인 패턴을 소개하고 있습니다.

 

실제 구성 방법을 확인하기는 어렵지만 설명을 도식화 하여 설명하는 부분이 많기 때문에 이해하기 보다 편안하며, 마지막 장에서는 실제 사례로 보다 깊은 이해를 있도록 돕고 있습니다.

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

배송료 안내

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

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

닫기

리뷰쓰기

닫기
* 도서명 :
클라우드 네이티브 애플리케이션 디자인 패턴
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

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

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

오탈자 등록

닫기
* 도서명 :
클라우드 네이티브 애플리케이션 디자인 패턴
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
클라우드 네이티브 애플리케이션 디자인 패턴
구입처*
구입일*
부가기호*
부가기호 안내

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

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

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

닫기

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

자료실