[이 책의 구성]- 1부, ‘기본 패턴’에서는 쿠버네티스의 핵심 개념을 다룬다. 1부에서 다루는 패턴들은 컨테이너 기반의 클라우드 네이티브 애플리케이션을 구축하기 위한 기본적인 원칙과 사례다.- 2부, ‘행동 패턴’에서는 기본 패턴 상위에 있는 패턴으로서, 다양한 유형의 컨테이너와 플랫폼 상호작용을 관리하기 위해 좀 더 세밀한 개념을 추가한 패턴들에 대해 설명한다.- 3부, ‘구조 패턴’에서는 쿠버네티스 플랫폼의 핵심인 파드 내의 컨테이너 구성과 관련된 패턴들을 다룬다.- 4부, ‘설정 패턴’에서는 쿠버네티스에서 애플리케이션 설정을 처리하는 다양한 방법에 대한 통찰력을 제공한다. 이 패턴들은 매우 세분화된 패턴으로, 애플리케이션을 각 설정으로 연결하기 위한 구체적인 방법을 포함한다.- 5부, ‘고급 패턴’에서는 플랫폼 자체를 확장할 수 있는 방법이나 클러스터 내에서 컨테이너 이미지를 직접 빌드하는 방법 등의 고급 개념을 모아서 설명한다.이 책에 담긴 모든 예제의 소스 코드는 깃허브(https://github.com/k8spatterns)에 있다. 깃허브 리포지토리와 웹사이트에는 예제 실행을 위해 쿠버네티스 클러스터를 내려받는 방법에 대한 지침과 설명도 있다. 예제를 진행할 때는, 제공된 자원(resource) 파일도 함께 살펴보길 바란다. 자원 파일에는 예제 코드를 이해하는 데 도움이 되는 유용한 주석이 많이 포함되어 있다.[이 책의 독자 대상]이 책은 쿠버네티스 플랫폼을 위한 클라우드 네이티브 애플리케이션을 설계하고 개발하려는 개발자들을 대상으로 한다. 컨테이너와 쿠버네티스 개념에 대한 기본 지식이 있고, 다음 단계로 나아가려는 독자에게 가장 적합하다. 그러나 사용 예와 패턴을 이해하기 위해 쿠버네티스를 로우레벨까지 상세히 이해할 필요는 없다. 아키텍트, 기술 컨설턴트, 개발자라면 모두 이 책에서 설명하는 반복 가능한 패턴이 유용할 것이다.[지은이의 글]마이크로서비스와 컨테이너 기술의 진화는 개발자가 소프트웨어를 설계, 구축, 실행하는 방식을 크게 변화시켰다. 최신 아키텍처는 새로운 분산된 기본 요소를 제공하며, 이로 인해 많은 개발자나 기술 책임자, 아키텍트에게 익숙지 않은 다양한 실행이 필요해졌다. 이 책에서는 쿠버네티스에서 클라우드 네이티브 애플리케이션을 설계하고 구현하기 위한 일반적이고 재사용 가능한 패턴과 원칙을 알려준다.이 책의 24가지 쿠버네티스 디자인 패턴에는 각 문제에 대한 설명과 쿠버네티스에 특화된 해결책이 담겨 있다. 모든 패턴에 대해 구체적인 코드 예제를 제공하므로 각 패턴 예제를 실행해볼 수도 있다. 입증된 디자인 패턴으로 클라우드 네이티브 문제를 해결하는 방법을 알고 싶은 개발자와 아키텍트를 위한 책이다.| 이 책에서 다루는 내용 |- 기본 패턴은 컨테이너 기반 클라우드 네이티브 애플리케이션 구축을 위한 핵심 원칙과 사례를 다룬다.- 행동 패턴은 컨테이너 및 플랫폼 상호작용을 관리하기 위한 좀 더 세분화된 개념을 살펴본다.- 구조 패턴은 특정 사용 예를 다루기 위해 파드 내에서 컨테이너를 구성하는 데 도움이 된다.- 설정 패턴은 쿠버네티스에서 애플리케이션 설정을 처리하는 방법에 대한 통찰을 제공한다.- 고급 패턴은 오퍼레이터와 오토스케일링 같은 더욱 복잡한 주제를 다룬다.[옮긴이의 글][안승규]때는 2015년 초 무렵, IaaS, PaaS와 관련된 업무를 하다 보니 플랫폼으로 서비스를 제공하는 구현 방법에 대한 관심이 많았다. 하지만, 당시만 해도 컨테이너로 서비스를 제공하는 개념은 흔치 않아 서비스 개발을 위해 오픈소스를 비롯한 몇몇 제품들의 장단점을 비교하다가 쿠버네티스를 처음 접하게 되었다. 실제로 쿠버네티스를 제대로 설치하고 검토한 것은 그해 10월쯤이다. 오픈스택 서밋에서 우연히 코어오에스(CoreOS)의 텍토닉(Tectonic)이란 제품을 알게 되었고, 일주일 고생 끝에 겨우 설치를 완료해 쿠버네티스 샘플 소스를 돌리고, iptables 규칙을 확인하면서 서비스가 어떻게 돌아가는지를 하나씩 따라해가며 이해했다. 그때 문득 나 혼자 고민할 것이 아니라 모두 같이 공유할 수 있는 커뮤니티가 있으면 좋겠다는 생각에 이듬해인 2016년 1월 9일 쿠버네티스 코리아 그룹을 개설했다.쿠버네티스는 처음 접하는 이들이 이해하기에는 진입장벽이 높아 그리 쉽지 않다. 특히, 쿠버네티스를 설치하는 것부터가 난제다(물론 지금은 카인드(Kind)나 미니큐브(Minikube) 등이 있어 간단히 설치할 수 있다). 여기에다가 컨테이너에 대한 이해가 필요하며, 쿠버네티스의 기본 요소 및 자원들(예를 들어 파드, 디플로이먼트, 레플리카세트, 서비스, 엔드포인트 등)도 제대로 활용할 수 있어야 한다. 더 큰 문제는 쿠버네티스를 어느 정도 이해한다 하더라도, 대부분은 아주 기본적인 개념만 알고 있을 확률이 높다는 점이다. 쿠버네티스를 활용해 서비스를 구축한 사람은 서비스 구축 과정에서 활용한 쿠버네티스 기능만 알고 그 이상의 중요한 개념을 모르는 경우가 부지기수다. 그렇기 때문에 이 책 『쿠버네티스 패턴』은 더욱 가치있게 다가올 것이다. 이 책은 세부 구현에 대해 자세히 설명하지는 않는다. 하지만 24가지 디자인 패턴을 통해 쿠버네티스의 핵심 개념을 설명함으로써 독자들에게 길잡이 역할을 해준다. 간혹 이 책에서 한 문장 혹은 한 문단으로 설명하는 쿠버네티스 개념들을 대수롭게 여겨 그냥 넘겨서는 안 된다. 각 장의 ‘참고 자료’ 절에서 열거한 링크들을 일일이 방문해 읽어보고 핵심 개념들을 모두 이해한다면 이 책의 가치를 확연히 깨닫게 될 것이다.쿠버네티스 초보자가 이 책에서 다루는 내용을 다 이해했다면, 이제는 쿠버네티스 전문가의 경지에 올랐다고 할 수 있을 것이다. 그러면 이제는 한 단계 더 나아가 쿠버네티스 기반의 프로그래밍을 학습해야 하며, 클라우드 네이티브 컴퓨팅 재단(CNCF, Cloud Native Computing Foundation)의 여러 프로젝트들을 살펴봄으로써 쿠버네티스를 더 깊이 이해하려 노력해야 한다. 그렇기 때문에 더더욱 이 책 『쿠버네티스 패턴』은 여러분이 쿠버네티스 전문가로 도약하기 위한 첫걸음이 되어주리라 확신한다. [서한배]클라우드 네이티브 기술은 클라우드를 기반으로 하는 대부분의 개발 및 운영환경에 적용되고 있을 뿐만 아니라 레거시 시스템도 빠르게 대체하면서 패러다임 전환을 가져오고 있다. 클라우드 네이티브 컴퓨팅에서 가장 대표적인 오케스트레이션 도구인 쿠버네티스는 오늘날 클라우드를 기반으로 하는 개발자나 운영자라면 필수로 이해해야 하는 플랫폼이 되었다. 하지만 필드의 다양한 요구사항과 수많은 사용 사례를 효율적으로 적용하기 위해 끊임없이 개선되고 있으며 이러한 최신 트렌드를 추구하는 것은 덕업이 일치하지 않는 이상 쉬운 일이 아니다. 그리고 쿠버네티스 기능 자체에 관해 설명하는 책은 많지만, 쿠버네티스의 기본 요소로 클라우드 네이티브의 장점을 최대한 활용할 수 있도록 구조를 설계하는 방법을 설명하는 책은 그리 많지 않다.이 책에서 소개하는 24가지 패턴은 현재 시점의 최신 기술들을 다룬다. 또한 모든 패턴을 예제로 설명하기 때문에, 직접 실습하면서 이해할 수 있고 개발자나 운영자가 실 환경에서 응용해 볼 수도 있다. 그뿐만 아니라, 쿠버네티스의 기본 설계 철학을 바탕으로 만들어졌기 때문에 향후 관련 기술이 변하더라도 유사하게 적용이 가능할 것으로 본다.24가지 패턴은 모두 중요하지만, 그중에서도 컨트롤러와 컨트롤러에서 확장된 기본 요소라고 할 수 있는 ‘오퍼레이터 패턴’(23장)은 특히 더 중점을 두고 살펴보기 바란다. 컨트롤러는 쿠버네티스가 구동하는 기반이 되는 기본 요소이므로 쿠버네티스 자체를 이해하는 데 필수 요소며, 쿠버네티스에 설치되는 대부분의 애플리케이션은 CRD(CustomResourceDefinition)를 이용한 오퍼레이터 패턴을 사용한다. 다양한 애플리케이션 도메인의 요구사항에 맞게 쿠버네티스를 기능을 얼마든지 확장해 나갈 수 있기 때문이다.이 책은 쿠버네티스의 기본 개념을 기초부터 상세히 설명하지는 않기 때문에 초보자에게는 다소 어려울 수도 있다. 그렇다고 지레 겁먹을 필요는 없다. 쿠버네티스 공식 홈페이지의 문서나 기본 내용을 설명하는 서적으로 각 기본 요소의 역할과 kubectl 사용법을 익히고 나서는, 직접 클러스터를 설치해보지는 않더라도 YAML 포맷으로 배포 관련 기본 요소를 통해 애플리케이션을 배포하고 서비스로 고정된 종단점을 만들어보고 대략적인 구조를 이해했다면, 이 책에서 다루는 패턴을 이해하는 데 충분하다.처음하는 번역 작업이라 예상보다 쉽지 않았고 시간도 오래 걸렸지만, 책 내용이 좋아서 많은 것을 배울 수 있었다. 그간 나는 책보다는 구글링, 깃허브 문서나 코드를 보는 것을 선호하는 쪽이었는데, 어느 한 분야를 전체적으로 빠르게 이해하려면 잘 구성된 책을 보는 것이 가장 좋은 방법임을 느꼈다. 많은 분이 이 책을 통해, 그동안 고민해오던 것에 대한 실마리나 바람직한 설계 방향을 찾기를 바란다.