최근 소프트웨어 개발 분야는 개발의 생산성을 높이고 빠르게 변화하는 환경에 효과적으로 대응하기 위해 개발과 운영을 결합한 데브옵스(DevOps) 및 마이크로서비스 아키텍처(Microservice Architecture) 등의 개념이 등장했고, 전 세계적으로 개발자들의 많은 관심을 받고 있다.
마이크로서비스 아키텍처는 컨테이너(Container) 기술을 통해 좀 더 쉽게 구현할 수 있으며, 쿠버네티스는 컨테이너 중심의 환경을 제공하는 컨테이너 오케스트레이션 플랫폼이다. 개발자는 쿠버네티스를 마이크로서비스 플랫폼으로 이용해 애플리케이션을 빠르고 쉽게 배포할 수 있고, 스케일링하며, 관리할 수 있다.
이 책은 쿠버네티스에 대한 개념뿐만 아니라 애플리케이션을 컨테이너화하고 쿠버네티스를 통해 관리하고 운영할 수 있는 방법을 예제와 함께 소개해 쿠버네티스를 처음 접하는 사람이 잘 이해할 수 있는 방식으로 정리돼 있다. 따라서 쿠버네티스에 대한 기본적인 지식을 이해하고 애플리케이션을 개발, 빌드, 테스트, 배포 그리고 운영까지 할 수 있는 데브옵스 환경을 구축하는 데 좋은 지침서가 될 것이다.
클라우드 컴퓨팅 분야의 발전과 함께 최근 클라우드 네이티브 아키텍처(cloud native architecture)가 각광을 받고 있다. 클라우드 네이티브 아키텍처는 애플리케이션에 기존 레거시 환경에 비해 더 많은 유연성과 확장성을 제공할 수 있는데, 이를 실현해줄 수 있는 도구가 바로 쿠버네티스다. 쿠버네티스는 컨테이너 오케스트레이션(container orchestration) 도구로서 컨테이너화된 애플리케이션에 대해 자동 배포 및 확장 등의 기능을 제공하는 오픈소스 기반 관리 시스템이다. 따라서 기존 시스템을 클라우드 네이티브 아키텍처로 진화시키려면 쿠버네티스에 대한 체계적인 이해와 학습이 필요한 시점이다. 이 책은 최근 릴리즈된 RBAC(Role Based Access Control)를 포함해 쿠버네티스 학습에 필요한 필수 요소를 예제와 함께 다루고 있으며, 실제 환경에 컨테이너화된 애플리케이션을 배포하고 관리할 수 있는 방법까지 설명하고 있다. 이 책이 클라우드 네이티브 아키텍처로의 전환을 꿈꾸는 모든 담당자에게 큰 도움이 되길 바란다.
클라우드 컴퓨팅 분야의 발전과 함께 최근 많은 기업이 온프레미스 자원을 클라우드로 전환해 IT 인프라 환경을 베어메탈에서 가상머신으로 전환했다. 그 결과 인프라 자원을 공유함으로써 좀 더 효율적으로 사용하고 비용을 절감할 수 있었다. 이러한 장점에도 높은 오버헤드, 보안 취약점, 낮은 성능 등 여러 단점이 부각됐다. 가상머신의 한계를 느끼게 된 사용자들은 좀 더 안전하고 경량화된 도커/컨테이너 기술에 관심을 갖게 됐으며, 최근 많은 기업이 애플리케이션의 개발과 배포 환경을 가상머신에서 격리 기반의 도커/컨테이너로 변경하고 있다.
이처럼 기업 내에서 도커/컨테이너 전환이 점점 더 가속화 되고 관리해야 하는 컨테이너의 수가 많아지면서 컨테이너 오케스트레이션(Container Orchestration) 기술의 필요성이 대두됐다. 컨테이너 오케스트레이션이란 컨테이너의 배포, 관리, 확장, 네트워킹 등을 자동화하는 기술을 의미한다.
초기에는 컨테이너 오케스트레이션을 위한 여러 관리 도구가 등장했지만 오늘날에는 쿠버네티스가 사실상의 업계 표준으로 자리매김했다. 쿠버네티스는 구글에서 개발해 오픈소스로 공개한 관리 시스템이며, 수백 또는 수천 개의 컨테이너를 관리하는 구글의 기술과 경험이 집약돼 있다. 따라서 대규모 환경에서 도커/컨테이너를 효율적으로 관리할 수 있는 쿠버네티스에 대한 체계적인 이해와 학습이 필요한 시점이다.
이 책은 세 번째 개정을 통해 최근에 개념이 추가된 쿠버네티스 보안, 서비스 메시 등을 포함해 쿠버네티스 학습에 필요한 필수 요소를 예제와 함께 다루고 있으며, 실제 운영 환경에 정책을 정의하고 컨테이너화된 애플리케이션을 배포하는 것은 물론 보안을 강화하며 관리할 수 있는 방법까지도 설명한다.
이 책이 클라우드 환경에 쿠버네티스 도입을 꿈꾸는 모든 담당자에게 큰 도움이 되길 바란다.
쿠버네티스가 컨테이너화된 애플리케이션의 자동 배포 및 스케일링 등 많은 이점을 가져다주면서 국내외에서 오픈소스 기반 컨테이너 오케스트레이션 플랫폼인 쿠버네티스를 도입하는 기업이 빠르게 증가하고 있다. 이에 따라 컨테이너로 애플리케이션을 빌드하고 이를 여러 환경의 쿠버네티스 클러스터에 배포하는 경우가 많아졌다. 하지만 여러 환경에 애플리케이션 배포에 따른 설정 관리 및 구성 절차의 복잡성 때문에 대다수의 사용자가 어려움을 겪고 있다. 이를 해결하기 위한 방안으로 배포환경에 따라 달라지는 설정값만 정의해둔 다음 이에 따라 배포하는 방법을 제공하는 것이 바로 쿠버네티스에서 헬름과 차트다. 헬름은 쉽게 말해 CentOS의 yum, Ubuntu의 apt와 같은 쿠버네티스의 패키지 관리 도구이며 차트는 사전에 정의된 쿠버네티스의 리소스 패키지다. 개발자는 헬름을 통해 차트로 정의된 쿠버네티스 애플리케이션을 다양한 테스트 환경 및 운영 환경에 쉽게 설치하고 업그레이드할 수 있어 이에 소비되는 시간을 줄여 개발자가 개발에 집중할 수 있는 환경을 만들 수 있다. 이 책은 헬름에 대한 기본 개념부터 실제 운영 환경에 적용해 프로세스 자동화를 구축할 수 있는 CI/CD 및 깃옵스의 개념까지 설명한다. 복잡한 쿠버네티스 애플리케이션 배포 및 업그레이드 프로세스 효율화에 관심을 갖고 동참할 수 있기를 바란다
Go는 2009년 구글이 개발한 프로그래밍 언어로 쉽고 단순한 문법을 특징으로 하며, 개발 용이성 등에 힘입어 최근 IT 분야에서 각광받고 있다. Go 언어는 객체지향에 필요한 대부분의 기본 기능을 제공하므로 객체지향 프로그래밍에 많이 활용되고 있다.
객체지향 프로그래밍을 실무 단계에서 적용할 경우에는 객체 간의 결합도를 낮추는 설계 및 구현을 우선적으로 고려해야 한다. 객체 간의 결합도를 낮추기 위한 가장 대표적인 방법이 바로 의존성 주입이며, 이를 통해 프로그램의 유연성과 확장성을 향상시킬 수 있다.
이 책은 Go 언어를 활용해 객체지향 프로그래밍을 수행할 때 알아야 할 Go 언어의 특징과 다양한 의존성 주입 방법을 예제와 함께 설명하고 있으므로 쉽게 읽을 수 있다. 의존성 주입을 올바르게 이해한 후 재사용성이 높고 수정과 유지 보수가 용이한 코드를 작성하는 데 이 책이 많은 도움이 되길 바란다.