2 minute read

Intro

현대의 애플리케이션 배포와 관리 환경에서 쉽게 찾아볼 수 있는 도구로 쿠버네티스(Kubernetes)와 오픈시프트(OpenShift)가 있다.

두 플랫폼은 컨테이너 오케스트레이션을 통해 애플리케이션을 효과적으로 관리하고 배포할 수 있게 도와주지만, 각각은 고유한 특징과 목적을 가지고 있다.

두 플랫폼을 비교함으로써, 각각의 강점과 한계점을 공부해보는것이 포스팅의 목적이다.

Container 가상화

리눅스의 네임스페이스 기술, 유니온 마운트를 지원하는 파일시스템을 사용하여 컴퓨터의 자원을 나누는기술이다.

컨테이너는 리눅스상의 다른 네임스페이스에 있는 프로세스일 뿐이라 하이버바이저 가상화 방식과 비교했을때 성능 저하가 거의 없다.

문제점

컨테이너의 도입으로 App들의 배포가 가속화되고 성능향상을 이룬것은 사실이다.

하지만 배포된 컨테이너의 숫자가 방대해지면서, 컨테이터들을 쉽게 배포하고 관리할수 있는 도구의 필요성이 생겼다.

Container Orchestration

컨테이너 오케스트레이션은 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 플랫폼이다. 수백 또는 수천 개의 컨테이너를 배포하고 관리해야 하는 기업에서는 컨테이너 오케스트레이션을 활용할수 있다.

컨테이너 오케스트레이션 서비스는 크게 다음과 같은 기능을 제공한다.

  • 컨테이너 배포 자동화
  • 스케일링 기능
    • 요청량에 따라 컨테이너의 수를 동적으로 조절한다.
  • 로드밸런싱
    • 요청을 여러 컨테이너로 분산하는 기술
  • 서비스 디스커버리
    • 컨테이너간의 통신을 돕는다.
  • 상태 관리
    • 관리자가 정해준 상태를 관리하고, 상태를 유지하기 위해 노력한다.
    • 오토 힐링 기능의 근간
  • 환경변수 (구성) 관리
    • 컨테이너에 필요한 환경변수를 자동으로 구성

Kubernetes = container orchestration service

쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션을 위한 오픈 소스 플랫폼으로, 컨테이너화된 애플리케이션의 자동화된 배포, 확장, 관리를 위한 도구이다.

한계점

쿠버네티스는 강력하고 유연한 도구이지만, 설정 및 관리에는 학습 곡선이 존재한다. 초기 설정이나 클러스터의 크기가 커질수록 복잡도가 증가한다.

쿠버네티스는 보통 여러 노드를 묶어 구성하므로 많은 컴퓨팅 자원을 요구한다. 이를 위해 서버 구축을 위해 많은 비용이 발생할수 있고, 작은 규모의 애플리케이션을 운영하기엔 오버스펙일수 있다.

클라우드 벤더사들은 서비스 디스커버리, 로드밸런서, 컨테이너 엔진, 가상 네트워크/스위치 등 모듈들을 구성해주고 온디맨드 형태로 관리형 쿠버네티스 서비스를 제공하고 있다.

기업들이 관리형 쿠버네티스 서비스 도입을 통해 비즈니스 유연성을 챙길수 있지만 배어매탈 형태보다 시간당 가격이 비싼 단점이 있다.

관리형 서비스를 사용한다 해도 어플리케이션 구동에 필요한 환경, 어플리케이션, 로그/ 모니터링 시스템, CI/CD 모듈 구축에 대한 책임은 클러스터를 운용하는 기업에 있다.

OpenShift = managed kubernetes platform

오픈시프트는 쿠버네티스 기반 컨테이너 오케스트레이션 상용 플랫폼 이다. baremetal 부터 다양한 클라우드를 통해 관리형 컨테이너 기반 플랫폼을 제공하고 있다.

오픈시프트를 통해 쿠버네티스를 한단계 더 추상화하면서 고객사들의 컨테이너 management에 대한 접근성/유연성을 높힐수 있다.

레드헷 엔지니어가 결정한 spec

오픈시프트를 사용하면 CRI, 쿠버네티스 API에 의해 이용되는 로드밸런싱, 가상네트워크/스위칭, 서비스 디스커버리, 컨테이너 엔진등이 레드헷의 엔지니어분들에 의해 결정되어있다. 여기 까지는 클라우드 벤더에서 제공하는 관리형 쿠버네티스 서비스들이랑 유사하다.

오픈시프트는 레드헷의 엔지니어들에 의해 none root 유저로 컨테이너를 동작하도록 설계되어있어 보안성이 우수하다.

full managed kubernetes based platform

오픈시프트는 여기서 더나아가 어플리케이션 구동에 필요한 환경, 어플리케이션, 로그/ 모니터링 시스템, CI/CD 모듈 뿐만아니라 IDE등의 SAAS 까지 제공한다.

서버리스 배포 기능을 통해 리플리카셋, 디플로이먼트 설정의 부담을 줄여주는것도 특징이다.

Source-to-Image (S2I) 를 통해 소스만 들고 오면 이미지 빌드도 해준다. (도커 파일 안작성해도 된다!)

따라서 개발한 어플리케이션만 들고 오면 배포/스케일링의 작업이 상당히 간소화된다.

레드헷 기술지원

오픈시프트는 상용제품으로 클러스터 운용중 문제점이나/기술적으로 궁금한점이 있다면 자세히 작성된 도큐먼트를 제공받거나 직접적인 기술지원을 받을수 있다.

operator

오픈시프트는 operator를 통해 클러스터를 관리한다. 이를 통해 클러스터에 문제가 있더라도 self recovering이 가능하다.

OpenShift 의 한계점

  • 추상화가 될수록 가격은 올라가고 커스터마이징은 어려워지는 특징이 있다.
  • 컨테이너를 다루는 충분한 기술력을 갖추고 있는 회사 입장에서 보면, 유연하게 클러스터의 사양을 변경하기 힘들고, 고 비용이 발생할수 있는 단점이 있다.
  • openshift 기술, 명령어에 대한 학습곡선이 있고, 이는 k8s 자체를 공부하는것에 비해 낭비일수 있다.

참고자료

Leave a comment