쿠버네티스 창시자에게 배우는 모범 사례
카테고리: 도서 리뷰
쿠버네티스를 이미 실무에서 운용하는 개발자들을 위한 책
필요한 선수 지식
- 요구 학력 : X
- 예제 코드 : bash, Go, yml
- 난이도 : ★★★★★
읽기 전에
쿠버네티스와 도커는 모두 컨테이너 기술을 기반으로 하지만, 그 목적과 기능에 있어 중요한 차이점이 있다.
도커(Docker)는 컨테이너 런타임 기술로, 애플리케이션을 컨테이너라는 표준화된 유닛으로 패키징하는 데 사용된다. 도커 컨테이너에는 애플리케이션 실행에 필요한 모든 요소(라이브러리, 시스템 도구, 코드 등)가 포함되어 있다.
쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 도구로, 여러 컨테이너를 대규모로 관리, 조정 및 예약하는 데 사용된다.
그러나 도커와 쿠버네티스는 서로 경쟁 관계가 아니라 보완적인 관계에 있다. 일반적으로 도커를 사용하여 컨테이너 이미지를 생성하고 쿠버네티스를 사용하여 이러한 컨테이너를 대규모로 관리한다.
책의 구성 중 마음에 들었던 주제
CHAPTER 05 지속적 통합, 테스팅, 배포
쿠버네티스에 애플리케이션을 배포하기 위한 CI/CD 파이프라인 통합의 핵심 개념을 다룬다. CI/CD 파이프라인을 활용하면 리스크를 줄이고 처리량을 높여 애플리케이션을 유저에게 안정적으로 제공한다. 이 챕터에서는 개발자가 코드를 체크인하는 순간부터 프로덕션에 새 코드를 배포하는 과정을 완전히 자동화된 프로세스를 구축하는 방법을 설명한다.
CHAPTER 09 네트워킹, 네트워크 보안, 서비스 메시
쿠버네티스는 읽기 전에 설명했듯이 여러 컨테이너를 대규모로 관리, 조정 및 예약한다. 대규모로 관리, 조정 및 예약을 하기 위해서는 네트워크를 통해 분산 시스템을 관리한다. 특히 네트워크는 머리 아픈 주제인데, 네트워크를 설명하면 꼭 따라오는 주제인 네트워크 보안도 머리를 아프게 한다. 그러나 다행히도 이 책에서는 간략하게 모범 사례를 위주로 설명한다.
CHAPTER 13 외부 서비스와 쿠버네티스 통합
사실 쿠버네티스 클러스터에 있는 애플리케이션을 단독으로 사용하여 서비스하는 경우는 거의 없다. 일반적인 상황인 레거시 리소스(예: 온프레미스 데이터베이스)를 위한 새로운 애플리케이션 개발이나 인터페이스에 쿠버네티스를 사용할 때를 기준으로 External Name 서비스 사용, Endpoints 객체 사용, Service without Selector 사용을 통해 통합하는 방법을 설명한다.
CHAPTER 14 쿠버네티스에서 머신러닝 실행하기
도커의 워크로드 격리 및 보안 기능과 쿠버네티스의 오케스트레이션 기능은 머신러닝에 큰 도움이 된다. 머신러닝의 진행 단계 대부분은 배치 처리이므로 클러스터 오토스케일링을 사용하면 GPU가 탑재된 비싼 VM 사용료를 낮출 수 있다. 또한, Kubeflow라는 쿠버네티스에 기본 내장된 머신러닝 툴킷을 통해 쿠버네티스를 더욱 간편하게 사용할 수 있다. 하지만, 현재 분산 훈련이 현재 머신러닝에 있어 걸음마 단계라서 배치 처리의 활용을 제외하고는 적극적으로 사용하기엔 어려워 보였다.
읽고 난 후
추천 지수 : ★★★★★
이 책을 읽기 전에 주의해야 할 점이 있다면 이 책은 쿠버네티스의 기본 개념서가 아니라 실무 환경에서 활용하는 내용들로 구성되어 있다는 점이다. 기본서를 충분히 읽었어도 이 책에서 설명하는 내용들은 사실 굉장히 난해하고 어렵다. 하지만, 원서의 늬앙스를 최대한 반영한 듯한 번역 방식 뿐만 아니라 부연 설명, 모범 사례들이 이해하기 어려운 내용들을 쉽게 이해할 수 있도록 도와준다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
참고
https://aws.amazon.com/ko/compare/the-difference-between-kubernetes-and-docker/
https://k21academy.com/docker-kubernetes/kubernetes-vs-docker/