관리 메뉴

KorSA

Docker Swarm vs Kubernetes (feat. Container Orchestration) 본문

Development Experience/*Ops

Docker Swarm vs Kubernetes (feat. Container Orchestration)

Praiv. 2022. 3. 11. 10:40
320x100

 

이 글은 IBM의 Docker Swarm vs. Kubernetes: A Comparison을 읽고 정리한 글입니다.

 

 

 

Container Orchestration을 하려면 Docker Swarm과 Kubernetes 중 어느 것을 사용하는 게 좋을까?

 

 

 

우선 Container가 뭔지, Container Orchestration이 무엇인지 정리하고 넘어가자.

 

Container는 우리가 배포하고자 하는 서비스 프로그램(app)과 이 프로그램이 의존하고 있는 모든 의존 프로그램들(dependencies)을 패키지 형태로 묶는 방법을 말한다.

이렇게 프로그램에 필요한 모든 것을 하나의 패키지로 만들면 언제 어디서든 그리고 docker를 지원하는 어떤 Runtime 환경에서든 프로그램을 실행시킬 수 있다.

 

Container Orchestration은 이 Container들이 여러 개일 때 효율적으로 관리 및 배포하는 것을 목적으로 하고 있다. Container 자동 배치, 로드 밸런싱, 장애 복구 등의 기능을 이 Container Orchestration Tool이 제공해준다.

 

여기서 Container Orchestration Tool의 대표주자이자 오늘의 주제인 Docker Swarm과 Kubernetes가 나오게 된다.

 

그럼 이 둘의 장단점을 알아보자.

 

 

 

# Docker Swarm의 장점

1. Docker Swarm은 Docker Engine에 이미 포함되어 있는 기능이기 때문에 Docker CLI를 통해 (상대적으로) 손쉽게 다룰 수 있다.

 

2. Swarm만의 API가 있다.

 

3. Docker Compose 처럼 Docker의 다른 도구들과 부드럽게 호환된다.

 

4. Docker Container에서 동작하는 도구, 서비스, 소프트웨어는 Docker Swarm 위에서도 잘 동작한다.

 

5. DOcker 환경을 위한 설치와 설정이 쉽다

 

6. Container 배포 시 필터링 및 스케줄 기능을 제공한다.

 

 

 

# Docker Swarm 단점

1. 커스터마이징과 확장에 있어 한계가 있다.

 

2. Kubernetes보다 기능이 적다.

 

3. DevOps 파이프라인에서 Dev-Test-Prod 업무를 분리하기가 쉽지 않다.

 

 

 

# Kubernetes의 장점

1. Open Source Community가 매우 활성화되어 있어 질문을 하거나 정보를 얻을 때 도움을 많이 받을 수 있다.

 

2. 연중 KubeCon 컨퍼런스 참석자가 2배 이상 증가할 정도로 커뮤니티가 빠르게 증가한다.

 

3. 대부분의 OS에서 Google, IBM과 같은 큰 기업들이 산업 현장에서 이미 많은 검증을 하였다.

 

4. 시장에서 가장 많이 채택되고 있다.

 

5. AWS, Azure, GCP, IBM Cloud 등 Public Cloud나 on-premises에서 사용 가능하다.

 

6. SysDig, LogDNA, Portworx등 Cloud 툴 벤더사 생태계에서도 폭넓은 지원을 받고 있다.

 

7. 서비스 탐색, 로드밸런싱, 자가복구 등 주요 기능들을 가지고 있다.

 

8. Cluster 상태 관리를 잘 보장하고 있고 잘 연합된 API 세트를 가지고 있다.

 

 

 

# Kubernetes 단점

1. Kubernetes를 다루려면 특화된 지식이 필요하여 초기 learning curve가 존재한다.

 

2. Open Source 커뮤니티에서 업데이트가 빈번하기 때문에 패치 시 유의해야 한다.

 

3. 간단한 기능에 빈번하지 않은 배포를 하는 개별 개발자가 사용하기에는 너무 무겁다.

 

4. 접근제어, 식별, 관리 및 보안 등 프로그램을 잘 배포하고 유지하기 위해 종종 kubectl CLI 와 같은 추가적인 도구들이나, CI/CD 툴, 기타 DevOps 툴등이 필요하다.

 

 

# 결론

Docker Swarm과 Kubernetes를 종합적으로 판단해 보았을 때,

작고 가벼운 프로젝트에서는 손쉽게 사용할 수 있는 Docker Swarm을 사용하고

프로젝트가 커지거나 엄중한 관리가 필요한 시점에서는 Kubernetes를 사용하는 게 좋은 전략이라 생각한다.

728x90
728x90

'Development Experience > *Ops' 카테고리의 다른 글

Docker Swarm을 띄워보았다  (0) 2022.03.18
도커라이징(Dockerizing) 이란?  (0) 2022.02.11
Docker 관련 글 모음  (0) 2022.02.09
Rocky OS selinux 무한 재부팅  (0) 2022.02.07
GCP(Google Cloud Platform)와 MLOps  (0) 2022.01.04
Comments