본문 바로가기
IT/Kubernetes

[Kubernetes] Design Pattern

by 물통꿀꿀이 2019. 3. 27.

이번 포스팅에서는 k8s에서 자주 등장하는 Pod 디자인 패턴에 대해 알아보려고 한다. 


Sidecar Pattern

그림 1. Sidecar Pattern


그림 1에서 확인 할 수 있듯이 사이드카 패턴은 Pod에 있는 다른 컨테이너를 메인 애플리케이션 컨테이너와 함께 배치하는 것이다. 

그림 1을 자세히보면 Pod의 공유 파일시스템으로 메인 컨테이너가 로그 파일을 넣고 추가된 컨테이너(사이드카)에서 데이터를 가져온다. 즉, 메인 컨테이너와 추가 컨테이너의 역할이 구분되어 있다. 

일반적으로 해당 패턴은 로깅 시스템을 구축하는데 많이 사용한다. 메인 컨테이너에서는 로그 데이터를 모으는 역할을 하고 추가 컨테이너는 모든 데이터를 바탕으로 통계와 같은 사이드 작업을 한다. 물론 하나의 컨테이너에서 모든 작업을 해도 되지만 내부 결함으로 인해 발생하는 문제가 전체에 미칠 수 있다. 반면에 사이드카와 같은 추가 컨테이너를 두면 결함이 미치는 영향을 최소화 할 수 있다.


Ambassador Pattern

그림 2. Ambassador Pattern


그림 2에서 확인 할 수 있듯이 앰배서더 패턴은 원격 서비스가 마치 로컬인 것처럼 사용 할 수 있도록 한다. 즉, 앰배서더 컨테이터와 같은 추가 컨테이너를 통해 외부와 연결한다. 그림 2를 자세히 보면 메인 컨테이너는 외부 환경(Production, Test, Local)에 접근하기 위해 Proxy와 같은 앰배서더 컨테이너를 사용한다. 때문에 메인 컨테이너 입장에서는 앰배서더 컨테이너와 연결만 유지하면 되는 것이다. (외부 환경은 앰배서더 컨테이너만 교체하면 되기 때문에)

일반적으로 데이터베이스 테스트에 많이 사용되는데 메인 컨테이너는 그대로 연결을 유지하고 외부 환경에 직접 접근하는 앰배서더 컨테이너만 교체한다.


Adapter Pattern

그림 3. Adapter Pattern


그림 3에서 확인 할 수 있듯이 어댑터 패턴은 어플리케이션의 출력을 표준화하는 것이다. 즉, 외부 어플리케이션의 데이터 포맷을 어댑터 컨테이너에서 표준에 맞춰 데이터를 구성하고 메인 컨테이너에게 전달하는 것이다. 

해당 패턴은 일반적으로 데이터를 집계하거나 모니터링하는데 많이 사용되는데 외부에서 전달받는 데이터의 포맷이 달라지면 어댑터 컨테이너만 교체하면 되기 때문에 메인 컨테이너는 영향을 받지 않는다.


참고

https://matthewpalmer.net/kubernetes-app-developer/articles/multi-container-pod-design-patterns.html

'IT > Kubernetes' 카테고리의 다른 글

[Kubernetes] Job & CronJob  (1) 2019.04.06
[Kubernetes] Ingress  (0) 2019.03.31
[Kubernetes] Basic Resource - Part 2  (0) 2019.03.30
[Kubernetes] Basic Resource  (0) 2019.03.26
[Kubernetes] Overview  (0) 2019.03.26

댓글