파드는 멀티 컨테이너 파드로 구성할 수 있지만, 일반적으로 파드 내 여러 메인 컨테이너가 있을 시 관리하기 어렵다는 점으로 인해 1개의 컨테이너만 띄워서 사용한다. 하지만, 아래와 같은 역할을 하는 서브 컨테이너를 종종 같이 띄우기도 한다.

  • 프록시
  • 런타임에 설정값을 변경
  • 로컬 캐시
  • SSL

멀티 컨테이터 파드를 구성하는 파드 디자인 패턴 3가지를 소개한다.

종류 개요
사이드카 패턴(sidecar pattern) 메인 컨테이너에 기능을 추가한다.
앰배서더 패턴(ambassador pattern) 외부 시스템과의 통신을 중계한다.
어댑터 패턴(adapter pattern) 외부 접속을 위한 인터페이스를 제공한다.

 

1. 사이드카 패턴

메인 컨테이너(애플리케이션) 외에 보조적인 기능을 하는 컨테이너를 추가로 두는 패턴이다. 예를 들어 런타임에 애플리케이션의 설정값을 변경해주는 컨테이너, Git 저장소의 소스를 파드 로컬 스토리지에 싱크하여 애플리케이션에서 참조할 수 있도록 하는 컨테이너, 적재된 애플리케이션 로그를 외부 오브젝트 스토리지로 전송하는 컨테이너 등이 있을 수 있다.

 

2. 앰배서더 패턴

외부 접속을 중계해주는 컨테이너를 두는 패턴이다. 중계자를 두는 목적은 메인 컨테이너와 외부 서비스의 결합도를 낮추기 위함인데, 객체지향 프로그래밍 언어의 인터페이스를 떠올리면 이해하기 쉽다. 예를 들어 외부 DB와 애플리케이션을 연결해야 하는데, 애플리케이션이 직접 외부 DB를 접속하면, DB 인터페이스가 변경되거나 샤딩이나 분산 DB로 인해 어떤 머신으로 접속해야 할 지 불분명할 때 이를 애플리케이션 코드나 설정에서 직접 구현해야 한다. 하지만 애플리케이션에서는 중계자 컨테이너만 바라보고, 중계자가 외부 서비스의 인터페이스를 구현하게 한다면, 애플리케이션에서는 디커플링이 된다. 동일 파드 내에서 이기 때문에 애플리케이션은 중계 컨테이너를 localhost 로 간단하게 접속할 수 있다.

 

3. 어댑터 패턴

메인 컨테이너에서 출력하는 데이터 형식과 외부 서비스에서 요구하는 데이터 형식이 다를 때, 데이터 형식을 변환해주는 컨테이너를 두는 패턴이다. 예를 들어 프로메테우스 같은 모니터링 툴을 사용할 때는 정의된 형식으로 메트릭을 수집해야 한다. 그러나 애플리케이션 출력은 프로메테우스의 메트릭 형식을 지원하지 않는다. 따라서 이를 요구되는 형식으로 변환해주는 어댑터 컨테이너를 둔다. 앰배서더 패턴과 동일하게 localhost로 접속할 수 있다.

 

 

 

 

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,