jrcfore***
2022-12-28

클라우드 네이티브 애플리케이션의 디자인 패턴을 담은 가이드 북이다. 클라우드 기반 애플리케이션을 개발 및 운영할 때 사용할 수 있는 디자인 패턴을 소개하고 활용법을 설명한다.
이책은 기본적인 micro arhitecture 기반으로 서비스를 해본 경험이 있는 분이 읽어보길 권장합니다.
머신 리소스에 대한 container 화 기능이 발달함에 따라서 서비스들을적당한 단위로 나누어 각 서비스 간 통신을 기반으로 둔 서비스 아키텍처가 요즘 대세라 할 수 있다. (MSA)
우리가 즐겨보는 Netflix를 비롯한 LinkedIn 그리고 우버 등 수많은 서비스들이 위의 MSA를 기반으로서비스가 계발되었고 지금도 서비스 중이기 때문이다.
그렇다면 왜 이토록 많은 서비스들이 MSA 형태로 서비스를 사용자들에게제공하는 것일까?
그것은 바로 가변성과 유연한 서비스 대응이 가능하기 때문이라 생각된다. 가변성은특정 서비스(모듈)의 사용량이 증가하면 해당 머신을 자동화한컨테이너가 가변적으로 그 수를 조정해 주는 것이라 볼 수 있고, 유연한 서비스 대응은 적당한 단위로서비스들이 잘게 나뉘어 있기 때문에 필요한 부분만 새로이 조정하여 배포해 주면 되는 그러한 구조를 의미한다.
위의 모든 내용들은 학부 단위에서는 약간 경험하기 어려울 수 있다. 특히나한 머신에 여러 컨테이너를 띄우고 각 서비스 간 통신하는 과정을 살펴보기란, 머신의 스펙도 스펙이지만전체 서비스 흐름을 이해하는 데에 있어 한계점이 두드러지기 때문이다. (하지만, 이를 머릿속으로 잘 추상화가 가능하다면, 로컬 머신에서 환경을 구축하여실습해 보는 것도 나쁘진 않다.)
따라서 위의 책은 어느 정도 MSA에 대한 경험이 있는 분이 공부하시길권장한다.
【책의 구성】 "클라우드 네이티브 애플리케이션 디자인 패턴"의 구성은?
이 책은 코드보다는 이론을 중점적으로 설명한 책이다. 각각의 패턴을 소개하고 이 패턴이 어느 서비스에 어떤 형태로 쓰이면 좋을지 적당한 지침을 독자들에게 전달하고있다.
또한 책 전체 내용으로 보건대, 이 책 한 권을 제대로 이해하고 공부하였다면충분히 현업에 투입되어 MSA 기반의 서비스 아키텍처를 구성하는 데에 어느 정도 능숙히 작업에 임할수 있을 것이라 예상된다.
다만, 이 책은 어디까지나 이론적인 내용 즉 추상화된 개념을 독자에게전달하기 때문에 직접 구축하고 테스트해 보며 서비스 간의 통신이 어떤 형태로 주고받는지는 직접 실습을 통해 깨닫는 수밖에 없다.
1 장 : 클라우드 네이티브애플리케이션이란?
이 장은 단락의제목 그대로 "클라우드 네이티브 애플리케이션"이무엇인지에 대해서 설명한다. 기존의 모놀리틱 개념과 서비스를 세분화하여 관리하는 MSA 기반의 서비스의 차이점 그리고 이러한 MSA 기반의 서비스가가능케한 배경에 대해서 자세히 설명하고 있다.
따라서 MSA가 무엇인지, 클라우드기반의 서비스 아키텍처가 무엇인지, 기존의 서비스 구성과 비교하여 장점과 단점이 무엇인지. (솔직히 모놀리틱 구성과 비교하여 단점은 거의 없어 보이긴 하다.) 등에대해 저자 나름 잘 정리하였으니 꼭 자세히 읽어보도록 하자.
2장 : 통신 패턴
이 장을 읽으며필자가 느낀 점은 그냥 적당하게 생각했던 구성에 어떤 식으로든 "이름"이라는 것이 붙어있구나라는 것이었다. 실무에서 일하다 보면책에서 말하는 다양한 통신 패턴에 대해서 알게 모르게 사용하게 된다.
다만, 사용할 당시에는 그 구성이 이 패턴인지, 이 패턴이 저 구성인지 잘 모른다. 그냥 논리적인 추론과 효율에따라서 구성해 봤을 뿐인데, 패턴이 되는 것이다.
즉, 패턴이라 함은 대중적이고 효율이 좋은 구성, 기법 등을 패턴이라 칭하는 것이므로 패턴이 만능이다!라는 생각은잠시 접어두도록 하자.
3장 : 연결성 및 조합패턴
MSA 서비스를 구성할 때에는 수많은 통신 패턴과 다양한메시지 브로커 등을 사용하여 이벤트와 메시지들을 처리한다. 다양한 구성이 가능하다는 것은 그만큼 상당한조합 패턴이 발생할 수 있음을 의미한다.
이 챕터에서는 '연결성 패턴', '추상화패턴', '탄력적인 연결성 패턴', '사이드카 패턴' 등등 수많은 패턴에 대해서 정리하고 있다. 무엇보다 각 패턴이 무엇이고어떻게 동작하고 어디에 사용되는지 잘 정리되어 있으니 차분히 공부해 보도록 하자.
【 클라우드 네이티브 애플리케이션 디자인 패턴 】
컨테이너 기술이고도화됨에 따라서 장비의 리소스를 추상화할 수 있게 되었다. 이 말이 무엇인고 하니, 이제는 수많은 머신을 하나의 머신의 풀이라 생각하고 이것들을 머신 단위로 나누는 것이 아니라 리소스 단위로보다 효율적으로 잘게 나누어 사용할 수 있게 되었음을 의미한다.
즉, 이전의 방식은 크기가 정해진 포장 상자였다면 이제는 크기가 가변적으로늘었다 줄었다 하는 포장 상자를 사용하는 방식으로 바뀌었다고 생각하면 된다.
이는 어찌 보면 누구나다 한 번쯤 상상해 보았을법한 그런 기술이라 할 수 있지만, 구축된 내부를 들여다보면 수많은 연구자들과 개발자들의 헌신이 깃들어 있음을 알 수 있다.
이 글을 빌려 컨테이너 고도화에 헌신하신 모든 분께 감사를 드린다.
#본 도서는 "한빛미디어<나는 리뷰어다> 활동을 위해서 책을 제공받아작성된 서평입니다.