Index
- Docker
- Container Orchestration
- Provisioning
목표
지금까지 Docker에 대해 가볍게 알아봤습니다.
Docker는 결국 Container를 사용하기 위한 기술입니다.
Cloud Server 혹은 물리서버에 Container를 통한 격리된 Application 환경 구축을 하다보면 Container를 관리해야 하는 관리 Point가 발생합니다.
Container Orchestration 이란 Container들을 관리하는 것을 말합니다.
Container Orchestration 이 하는일
- 컨테이너형 애플리케이션의 배포
- 컨테이너 그룹에 대한 로드밸런싱
- 스케일링/오토스케일링
- 컨테이너 장애 복구
- 컨테이너 그룹간 격리/연결
- 외부로 서비스 노출
- 서비스 디스커버리
- 로그 수집 집중화/자동화
- 모니터링 집중화/자동화
Container Orchestration Tool
컨테이너 오케스트레이션 툴로 가장 많이 사용되는건 아래와 같습니다.
- Docker Swarm
- Kubernetes (줄여서 k8s)
- Apache MESOS
Docker Swarm
https://docs.docker.com/engine/swarm/
Docker Swarm은 최초 Docker와 별개로 개발되었으나 Docker 1.12버전부터 Docker Swarm모드로 Docker에 포함되었습니다
Swarm은 컨테이너 자체의 능력을 넘어서서 컨테이너화 된 응용 프로그램의 확장, 네트워킹, 보안 유지 및 유지 관리를위한 많은 도구를 제공합니다.
Kubernetes
https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/
쿠버네티스는 구글에서 개발한 2014년 오픈소스화 된 프로젝트입니다.
15년에 걸친 구글의 대규모 운영 워크로드 운영 경험과 노하우가 축적된 프로젝트로 컨테이너 중심의 관리환경을 제공합니다.
Apache MESOS
http://mesos.apache.org/documentation/latest/
아파치 메소스는 Twitter, Apple, Uber, Netflix 등 대형 서비스를 운영하고 있는 기업에서 다수 채택 되었으며 마이크로서비스와 빅데이터, 실시간 분석, 엘라스틱 스케일링 기능 등을 제공하고 있습니다.
Docker Swarm | Kubernetes | Apache Mesos |
---|---|---|
- 중소형 프로젝트일 경우 - 관리할 노드가 적고 많은 기능이 필요하지 않을때 |
- 대형 프로젝트일 경우 - 세밀하고 다양한 설정이 필요때 |
- 대형 프로젝트일 경우 - 검증된 오케스트레이션 툴을 찾고있때 |
어떤걸 선택해야 할까?
당연히 목적에 맞게 선택해야 합니다.
단, 그래도 선택이 어려울땐 많이 사용되는걸 따라가면 됩니다. 갓구글을 따라 쿠버네티스에 대해 알아보겠습니다.