IT/아키텍처

반드시 알아야 할 쿠버네티스 디자인 패턴 10가지

Jflip 2020. 5. 26. 19:05

안녕하세요, 오늘은 쿠버네티스 관련 포스팅을 한번 번역해 보았습니다.

 

"반드시 알아야 할 쿠버네티스 디자인 패턴 10가지"라는 글입니다.

https://twitter.com/bibryam

 

 

Bilgin Ibryam(@bibryam) 님 | 트위터

@bibryam 님 언뮤트하기 @bibryam 님 뮤트하기 팔로우 @bibryam 님 팔로우하기 팔로잉 @bibryam 님 팔로우 중 언팔로우 @bibryam 님 언팔로우하기 차단됨 @bibryam 님이 차단됨 차단 해제 @bibryam님 차단 해제 대�

twitter.com

저자 Bilgin Ibryam님이 한국 독자들을 만나보고 싶어합니다, Bilgin의 트위터 공간을 통해 만나보세요!

 

블로그에 대한 내용은 저자이신 빌긴 이브리암에게 저작권이 있으며,

블로그 포스팅에 대한 허락을 받았습니다.

또한, 한글화 번역에 대한 리소스 일부는  쿠버네티스 패턴』을 번역하신 안승규님과 책만 출판사의 허락을 받았습니다.

 

 

 여기 쿠버네티스 패턴 책에서 나오는 초보자들을 위한 10가지의 디자인 패턴을 모아 두었습니다.

이 패턴들에 익숙해진다면, 기초적인 쿠버네티스 컨셉을 이해하고 쿠버네티스 패턴을 가지고 토론하고 쿠버네티스 기반으로 애플리케이션을 설계하는 데 도움이 되실 겁니다.  

쿠버네티스에도 정말 중요한 내용들이 많지만, 이 내용들은 그중에서도 가장 중요한 내용들입니다.

 

출처 : 쿠버네티스 패턴

 

이해를 돕기 위해, Gang Of Four (디자인 패턴의 창시자 4인방) 디자인 패턴에서 영감을 받아 4가지 패턴으로 카테고리를 나누었습니다.

 

1. 기본 패턴

 

 이 패턴들은 컨테이너화 된 애플리케이션들이 좋은 클라우드 네이티브의 한 일원으로 자리잡기 위해서 지켜야 할 원칙과 모범 사례들입니다애플리케이션의 특성과 상관없이, 해당 지침들을 따르도록 하는 게 좋습니다.

이런 원칙들을 준수한다면 애플리케이션이 쿠버네티스를 통한 자동화에 적합하다는 것을 보장할 수 있습니다.

 

기본 패턴

1) 정상 상태 점검 패턴

 

 정상 상태 점검은 모든 컨테이너가 플랫폼이 가능한 한 가장 건강한 방법으로 애플리케이션을 관리하고 관찰할 수 있도록 특정 API를 구현하게끔 지시합니다.

 

완전한 자동화가 가능하게 하려면, 클라우드 네이티브의 어플리케이션은 쿠버네티스를 통한 상태 정보의 파악을 허용하여, 요청을 처리할 준비가 되어 있는지의 여부를 탐지하고, 반드시 애플리케이션 상태 정보에 대한 관측이 용이해야 합니다이러한 관찰은 파드의 수명 주기 관리와 트래픽이 애플리케이션에 라우팅 되는 방식에도 영향을 미칠 수 있습니다.

 

정상 상태 점검 패턴

 

2) 예측 범위 내의 요구 사항 패턴

 

 예측 범위 내의 요구사항은 왜 모든 컨테이너가 리소스 프로필을 선언하고, 지정된 리소스 요구사항에 국한되어야 하는지에 대한 이유를 설명합니다.

 

 공유 클라우드 환경에서의 성공적인 애플리케이션의 배포, 관리, 공존의 기반은 애플리케이션의 리소스 요구사항과 런타임 종속성을 식별하고 명시하는데 달려 있습니다.

 

 이 패턴은 어떻게 애플리케이션의 요구사항을 선언해야 하는지, 하드 런타임 종속성(물리적으로 필요한 런타임 환경)인지 아닌지리소스 요구사항인지 여부를 선언하는 방법에 대해서 설명해 줍니다. 요구사항에 대한 선언은 쿠버네티스가 클러스터 내에서 애플리케이션을 위한 최적의 자리를 찾기 위해 필수적입니다.

 

예측 범위 내의 요구 사항 패턴

 

3) 자동 배치 패턴

 

 자동 배치는 멀티 노드 클러스터 내에서 부하 분산에 어떻게 영향을 미치는지에 대해서 설명합니다.

배치는 쿠버네티스 스케줄러가 컨테이너 리소스 요청을 만족하고 스케줄링 정책을 잘 지키는 노드에게 새로운 파드를 할당하는 쿠버네티스의 핵심 기능입니다.

 

이 패턴은 쿠버네티스의 스케줄링 알고리즘과 외부로부터의 배치 결정에 대해서 설명합니다.

 

자동배치 패턴

 

2. 구조적 패턴

 

좋은 클라우드 네이티브 컨테이너를 갖는 것은 첫 발을 내딛는 일이지만 이것만으로는 부족합니다.

컨테이너를 재사용하고 원하는 결과를 얻기 위해서 파드로 합치는 것이 다음 단계입니다. 이 카테고리의 패턴들은 컨테이너를 구조화하고 다양한 사례에서의 사용을 충족하기 위해 파드 내에서 컨테이너를 구성하는데 초점을 맞추고 있습니다파드 내에서의 컨테이너에 대한 영향력은 이런 패턴들을 야기합니다.

 

구조적 패턴

 

1) 초기화 컨테이너 패턴

 

초기화 컨테이너는 초기화 연관 작업과 주요 애플리케이션 컨테이너에 대해 별도의 수명 주기를 도입합니다.

초기화 컨테이너는 주요 애플리케이션 컨테이너로부터 초기화 작업과 관련된 수명 주기를 나눔으로써 이러한 작업에 대한 걱정을 덜어줍니다. 이 패턴은 초기화 로직이 필요할 때, 다양한 분야에서 사용되는 기본적인 쿠버네티스 컨셉을 도입합니다.

 

초기화 컨테이너 패턴

 

2) 사이드카 패턴

 

 사이드카는 어떻게 확장하는지, 컨테이너를 변경하지 않고 기존 컨테이너의 기능을 확장하고 성능을 향상

시킬 수 있는지에 대해서 설명합니다.

이 패턴은 기초 컨테이너 패턴의 하나로써 단일 목적의 컨테이너들이 서로 긴밀하게 협력하는 것을 허용하는 패턴입니다.

 

사이드카 패턴

3. 행동 패턴

 

 이러한 패턴은 관리 플랫폼에 의해서 보증된, 파드들의 수명주기 보증에 대해서 설명합니다. 워크 로드의 종류에 따라 파드는 배치 작업이 마칠 때까지 작동해야 할 수도 있고, 주기적으로 스케줄 된 대로 실행되도록 예약할 수도 있습니다데몬 서비스나 싱글톤에 의해서 동작할 수도 있습니다.

 

옳은 수명주기 기본 요소(primitive)를 사용한다면, 원하는 보증을 파드와 함께 동작시키는 데 도움을 받을 수 있습니다.

 

행동 패턴

1) 배치잡 패턴

 

배치 잡은 고립되고 작업의 원자화 단위의 작업을 실행을 어떻게 할지에 대해 설명합니다.

이 패턴은 분산 환경 내에서 고립된 원자 단위 작업을 관리하기에 적합합니다.

 

배치잡 패턴

 

2) 스테이트풀 서비스 패턴

 

 스테이트풀 서비스는 쿠버네티스를 통해서 분산된 스테이트 풀한 애플리케이션을 만들고 관리하는 방법을 다룹니다.

해당 애플리케이션은 퍼시스턴트 아이디, 네트워킹, 스토리지, 순서성과 같은 특성이 필요합니다.

스테이트 풀셋의 프리미티브는 이런 빌딩 블록들이 상태 저장 가능한 애플리케이션의 관리를 위해서 강한 보증을 제공합니다.

 

스테이트풀 서비스 패턴

 

3) 서비스 디스커버리 패턴

 

서비스 디스커버리는 클라이언트가 어떻게 액세스 할 수 있는지, 애플리케이션 서비스를 제공하고 있는 인스턴스를 어떻게 밝혀낼 수 있는지에 대한 내용입니다.

이를 위해서 쿠버네티스는 서비스 소비자와 제공자가 클러스터 상에 위치하는지 아니면 클러스터 밖에 위치하는지에 따라서 다양한 메커니즘을 제공하게 됩니다.

 

서비스 디스커버리 패턴

4. 고급 패턴

 

해당 카테고리에 있는 패턴들은 좀 더 복잡하고 높은 수준의 애플리케이션 관리 패턴을 대표합니다. 고급 패턴 중 일부인 컨트롤러와 같은 패턴은 시간이 지나도 변하지 않을 내용으로, 고급 패턴의 위에 쿠버네티스 자체가 만들어졌습니다.

 

고급 패턴

 

1) 컨트롤러 패턴

 

컨트롤러는 쿠버네티스 리소스 세트를 원하는 상태로 유지하고 능동적으로 모니터링해주는 하나의 패턴입니다.

쿠버네티스의 심장이라고도 할 수 있는데, 이는 주기적으로 상태를 체크하고 선언된 타겟 상태와 함께 현재의 애플리케이션 상태를 조화시키는 복수의 컨트롤러로 이루어집니다

 

이 패턴은 우리의 애플리케이션을 위한 플랫폼을 확장하기 위해서 이러한 핵심 개념을 어떻게 활용해야 하는지에 대해서 다룹니다.

 

컨트롤러 패턴

 

2) 오퍼레이터 패턴

 

오퍼레이터는 CustomResourceDefinition을 사용하여 특정 애플리케이션의 운영 지식을 알고리즘적이고자동화된 형태로 캡슐화하는 컨트롤러입니다.  오퍼레이터 패턴은 우리가 컨트롤러 패턴을 확장하여 더 많은 융통성과 더 대단한 표현을 가능하게끔 합니다.

이 패턴은 복잡한 분산처리 시스템에서 주요한 형태로 변하고 있으며, 쿠버네티스를 위한 오퍼레이터의 수가 증가하는 추세입니다.

 

오퍼레이터 패턴

 

결론

 

 

오늘날 쿠버네티스는 가장 유명한 컨테이너 오케스트레이션 플랫폼입니다. 모든 주요 소프트웨어 회사들이 공동으로 개발 및 지원하고 있고, 모든 주요 클라우드 사업자가 하나의 서비스로써 이를 제공하고 있습니다.

쿠버네티스는 리눅스와 윈도우 모두 지원하며, 모든 주요한 프로그래밍 언어들도 지원합니다. 이 플랫폼은 또한 스테이트리스/스테이트 풀한 애플리케이션, 배치잡, 주기적인 작업들, 서버리스 워크로드 등에 대해서도 오케스트레이트하고 자동화 가능합니다.

앞서 설명한 패턴들은 쿠버네티스와 함께 제공되는 더 넓은 패턴의 집합 중에서도 가장 일반적으로 사용되는 패턴입니다.

 

쿠버네티스는 새로운 애플리케이션의 이식성 계층이고, 클라우드에 있는 모든 이들의 공통분모입니다.

만약에 당신이 소프트웨어 개발자나 아키텍트라면, 어떻게든 쿠버네티스가 삶의 일부가 될 가능성이 있습니다.

여기에 설명된 쿠버네티스 패턴에 대해서 배우시면 이 플랫폼을 생각하는 방식 역시 바뀌게 될 것입니다.

저는 쿠버네티스와 이로부터 파생되는 개념들이 객체 지향 프로그래밍 개념처럼 기초적인 내용이 되리라고 믿습니다.

 

Gang Of Four 디자인 패턴처럼 만들려고 시도해 보았지만, 결국 이 내용은 컨테이너 오케스트레이션을 위한 내용입니다.

이 글을 읽고 끝내지 마시고, 이제 쿠버네티스로의 여정을 시작하세요!

Happy Kubectl 하세요!

 

 

쿠버네티스 패턴( 『쿠버네티스 패턴』 ⓒ2020 빌긴 이브리암, 롤란트 후스 지음안승규서한배 옮김책만 https://www.onlybook.co.kr/entry/k8spattern)

 

쿠버네티스 패턴

쿠버네티스 패턴 클라우드 네이티브 애플리케이션 설계와 구현을 위한 24가지 디자인 패턴 빌긴 이브리암, 롤란트 후스 지음 | 안승규, 서한배 옮김 | 300쪽 | 28,000원 2020년 4월 16일 출간 | 185*240*18

www.onlybook.co.kr

 

728x90
반응형