본문 바로가기

관심사/도서

도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문

 

03. 컨테이너 실전 구축 및 배포

애플리케이션과 시스템 내 단일 컨테이너의 적정 비중

도커는 애플리케이션과 인프라를 도커 컨테이너라는 단위로 분리한 것이라 볼 수 있다. 이런 관점에서 웹 애플리케이션과 워커형 상주 애플리케이션 프로세스 하나를 하나의 컨테이너로 만드는 방식 (컨테이너 1개 = 프로세스 1개)이 괜찮게 생각될 수 있다. 실제로 도커 초기에는 "컨테이너 1개 = 프로세스 1개"를 반드시 지켜야 한다고 생각하는 사용자가 있어 자주 토론거리가 됐다. 

그러나 "컨테이너 1개=프로세스 1개" 원칙을 고수하는 것은 무리이다. 예를 들어, 크론 프로세스에서, 다른 job을 실행하는 경우가 있다. 

사실 도커 공식문서에는 "컨테이너는 하나의 관심사에만 집중해야 한다"라고 적혀있다.

즉, 컨테이너 하나가 한 가지 역할이나, 도메인에 집중해야한다는 의미이다.

도커 친화적인 애플리케이션

애플리케이션을 만들 때는 일반적으로 재사용성과 유연성을 가질 수 있도록 옵션을 만들어 두고, 옵션에 따라 애플리케이션의 동작을 제어한다. 

도커 스웜

  1. 컴포즈 - 여러 컨테이너로 구성된 도커 애플리케이션을 관리 ( 주로 단일 호스트 )
  2. 스웜 - 클러스터 구축 및 관리 ( 주로 멀티 호스트 )
  3. 서비스 - 스웜에서 클러스터 안의 서비스( 컨테이너 하나 이상의 집합) 를 관리
  4. 스택 - 스웜에서 여러 개의 서비스를 합한 전체 애플리케이션을 관리

 05. 쿠버네티스 입문

파드

파드는 컨테이너가 모인 집합체의 단위이다. 

레플리카세트

레플리카세트는 똑같은 정의를 갖는 파드를 여러 개 생성하고 관리하기 위한 리소스다. 

디플로이먼트

디플로이먼트는 애플리케이션 배포(deploy)의 기본단위가 되는 리소스다.

서비스

서비스는 쿠버네티스 클러스터 안에서 파드의 집합 (레플리카 세트)에 대한 경로나 서비스 디스커버리를 제공하는 리소스다. 

인그레스

쿠버네티스 클러스터 외부로 서비스를 공개하려면 인그레스를 사용해야한다.

서비스를 외부에 노출시키고, 가상호스트와 경로기반 HTTP 라우팅을 지원한다.