쿠버네티스를 위한 디자인 패턴이 있을까? 이 책은 아주 기본적인, 그저 매니페스트 하나를 소개하는 디자인 패턴에서부터 시작해, 다양한 상황에서 사용할 수 있는 공식을 알려주는 책이다.
초반에는 간단한 service에 대한 설명과 함께, 이러한 내용도 패턴인가? 싶은 수준으로 소개를 한다. 하지만 점점 내용들을 읽어보면서, 기본적인 매니페스트와 살짝의 디테일을 추가하여, 한 줄 정도로 알고 있던 것을 최소 세 줄, 네 줄 정도 더 설명할 수 있도록 만들어준다. 예를 들어 statefulSet과 같은 매니페스트는, 말 그대로 레디스와 같은 Pod이 떴다가 내려갔다 할 때, 필요한 스테이트풀(Stateful)한 상태를 만들어주는 게 아닌가? 와 같이 한 줄로 설명할 수 있다. 하지만 이 책을 통해 디테일에 접근한다면, 레디스를 스테이트풀셋으로 관리하는 과정에서 PVC를 통한 볼륨 관리 그리고 PV는 별도의 의존성이 없고 오로지 PVC를 통해서 볼륨을 관리하게 되고, 레디스를 클러스터의 형태로 쓰는 경우 등, 좀 더 추가적으로 설명할 수 있도록 만들어준다.
또한, 쿠버네티스의 패턴을 다루는 내용이기 때문에 난이도는 초~중급 수준이며, 아무래도 디자인 패턴을 표방하고 있기 때문에, 실제로 어떠한 문제를 풀기 위한 방법을 제시하는 경우가 많다. 여러 예시가 있지만, 지금 떠오르는 것은 JVM 기반의 스프링부트 서버를 배포하거나, node 서버를 배포하는 경우에는 application.properties나 .env 파일을 넣어주는 방법을 통해서 애플리케이션의 환경 변수를 정의한다.
아무래도, 프로젝트의 크기에 따라서 다르겠지만 환경 변수가 100개가 된다면, 이를 각각 하나씩 configMap 혹은 Secret에 넣어서 deployment에서 받아 쓰는 것들은 무리가 있다. 하지만 이 책에서는 애플리케이션에서 자체적으로 사용하는 환경 변수 '파일'은 볼륨을 /config에 마운트하는 것으로 설정하는 방법을 다루며, 일반적으로 쿠버네티스를 사용하면서 마주치는 고민들을 대부분 해소시켜 준다.
또한, 초기화 컨테이너(InitContainer)를 통해서 config를 좀 더 편리하게 주입하는 방법 등 정말 실전에서 사용하기 좋은 예시들을 다룬다.
책 소개
이 책은 다음과 같은 목차로 이루어져 있다. 앞 부분에는 쿠버네티스의 매니페스트(deployment, service, etc..)에 대한 짤막한 설명이 있고, 메인으로 다루는 부분에서 다음 5가지의 패턴에 대해서 다룬다.
- 기본 패턴 : 기본적인 매니페스트를 사용하는 패턴
- 행동 패턴 : Service나 Ingress를 통해서 애플리케이션들을 전개하는 패턴
- 구조 패턴 : statefulSet이나 initContainer 등을 사용하여 구조를 보완하는 패턴
- 설정 패턴 : config를 주입하는 패턴
- 고급 패턴 : 기타 복잡한 패턴
초반에 기본 패턴이나 행동 패턴까지만 해도, 이미 기본적인 쿠버네티스 내용을 알고 있다면 크게 인사이트를 얻을 수 없을 수도 있다. 앞 부분에서는 이 매니페스트에 대한 설명과 어떠한 상황에서 쓰는 것인지 정도를 다룬다. 개인적으로는 운영체제의 내용을 쿠버네티스 매니페스트와 깊게 섞어서, 설명해준다는 것만 크게 기억에 남는다.
예를 들면, 애플리케이션의 장애(failure)와 프로세스의 장애(failure)는 쿠버네티스가 인식할 수 없고 분명히 다르기 때문에, 애플리케이션을 개발하는 과정에서 liveness probe 뿐만 아니라 readiness probe라는 것을 통해서 프로세스 뿐만 아니라, 애플리케이션 레벨에서 정말로 잘 작동하는 지, 혹은 잘못되어 있다면 어떻게 처리할 수 있을 지? 이러한 OS와 K8s가 섞인 내용을 전달한다.
이후 구조 패턴부터 개인적으로는 크게 접해보지 못한 내용을 볼 수 있었다. InitContainer와 sidecar의 차이점, 그리고 나오는 어댑터 패턴, 엠버서터 패턴 등 초기화 컨테이너(Init Container)는 크게 쓸 일이 없다고 생각하기도 했고, sidecar와는 완전히 다른 존재인줄 알았지만, 초기화 컨테이너에서부터 이어지는 사이드카, 어댑터, 엠버서터 패턴 등을 예시로 들어주며, 어떤 도구를 쓸 것인가?를 알려주는 패턴 책이다.
이 책을 읽으면 좋은 대상
쿠버네티스의 기본은 모두 알고 있는 독자를 기준으로 서술되어있다고 책의 초반부에 나와있기 때문에, 어느정도 기본 지식은 있어야할 것 같다. 쿠버네티스를 꽤 사용해서 기본적인 매니페스트를 다 알고 있다면 좋을 것이다.
또한, 쿠버네티스를 실제로 사용하면서 꽤 많은 문제들을 직접 직면해본 사람이라면 이 책을 추천한다. 나는 개인적으로는 CKA 준비나 쿠버네티스를 예전에 조금 다뤘던 경험으로 실전적인 부분에서 약하기 때문에, 초기화 컨테이너(InitContainer)를 사용하는 예제에서 '이렇게 초기화 컨테이너를 쓰는 경우가 현업에서 많나?'라는 의문을 갖게 되었다.
또한, 이 책은 제목에 '패턴'이라는 키워드가 들어가 있고, 오렐리의 책들이 다 그런 것인지는 모르겠지만, 문제 - 해결 방법 - 정리 이 순서로 깔끔하게 쓰여있기 때문에, 장황한 이론보다는 실전적인 내용이 좀 더 필요한 분들에게 추천한다.
책의 장점과 아쉬운 점
개인적으로 딱 원했던 수준의 레벨이라서 마음에 들었고, 흥미롭게 읽을 수 있었다. 이 책은 쿠버네티스 기본서를 접하고나서 꽤 다뤄본 사람들에게 초~중급 수준의 책으로써, 느껴질 것이다.
다른 오렐리의 책은 이외로 문제 - 해결 방법 - 정리 이러한 순서대로 패턴이 전개되어 예상치 못한 패턴 공부를 하게 되었다. 바로 이전에 쓴 마이크로서비스 도입과 관련된 책 내용이다. 하지만 이 책은 그대로 패턴에 대해서만 일관되게 다루기 때문에, 정말로 쿠버네티스 패턴을 공부하고자 한다면 군더더기 없이 편안하게 읽기 좋을 것이다.
개인적으로 아쉬운 점은 써드파티에 대한 내용이 주가 되지 않았으면 했다. 쿠버네티스와 함께 가져가면 좋은 툴들(ArgoCD, Istio)이 많이 있다는 것을 알지만, 이 책의 마지막 부분인 고급 패턴 부분에서는 RedHat 쿠버네티스의 엔터프라이즈판인 OpenShift를 사용하는 방법이나 Knative와 같은 쿠버네티스의 애드온을 사용해서 진행할 수 있는 패턴을 다루는데, 개인적으로 해당 써드파티를 잘 모르기도 하고 훌륭한 정보이기는 하지만, 근본적인 쿠버네티스 이해도를 높여줄 수 있을 것 같지는 않다는 생각이 들었다.
총평 및 추천 여부
어느정도 쿠버네티스에 대한 기본기가 잡혀있고, 실제로 쿠버네티스를 적용하면서 현업에서 문제들을 마주치기 시작하는 사람이라면, 이 책을 꼭 읽어보길 바란다. 개인적으로 쿠버네티스를 사용하면서 '흠... 이게 맞나...'라는 생각이 들었던 부분을 꽤 긁어준다.
하지만 내가 쿠버네티스를 다뤘을 때에는 거의 혼자서 데브옵스 포지션으로 배포를 하고 있었고, 문제를 마주쳤을 때에 도움을 줄 수 있는 사람이 없었기 때문에 이렇게 느꼈을 수도 있다. 만약 쿠버네티스 기반의 개발을 하는 과정에서 도움을 줄 수 있는 선배 개발자분이 많다면, 이 책을 굳이 구매해서 여러 패턴을 공부하지 않아도 될 것 같다는 생각이다.
'후기 > 책' 카테고리의 다른 글
책 리뷰 : 마이크로서비스 도입은 이렇게 한다 (0) | 2025.05.17 |
---|---|
책 리뷰 : 소프트웨어 스펙의 모든 것 (0) | 2025.05.07 |