컨테이너 오케스트레이션은 여러 머신에 걸친 container의 배포, 확장, 네트워킹, 관리를 자동화합니다. 애플리케이션이 여러 호스트에 걸친 많은 container로 성장하면 수동 관리가 비현실적이 됩니다 — Kubernetes 같은 오케스트레이터가 이를 처리합니다. 그 필요성을 이해하는 것은 컨테이너화된 애플리케이션을 확장하는 데 중요합니다.
문제: 규모에 맞게 container 관리
하나의 호스트에서 몇 개의 container를 실행하는 것은 관리 가능함. 그러나 규모에 맞는 프로덕션에서는:
→ 많은 호스트에 걸친 많은 container(수십/수백 개의 서비스와 인스턴스)
→ container가 크래시됨 → 자동으로 재시작해야 함
→ 부하 증가 → 확장(더 많은 인스턴스) / 축소해야 함
→ 배포 → 다운타임 없이 새 버전 출시; 실패 시 롤백
→ 호스트에 container 분산; 트래픽 라우팅; 서비스 디스커버리
→ 이 모든 것을 수동으로 하는 것은 비현실적이고 오류가 발생하기 쉬움. → 오케스트레이션이 자동화함.
오케스트레이터가 하는 일
✓ 스케줄링 — 리소스/제약 조건에 따라 호스트에 container 배치
✓ 자가 치유 — 실패한 container 재시작; 비정상인 것을 자동으로 교체
✓ 확장 — 서비스를 확장/축소(수동 또는 부하 기반 자동)
✓ 로드 밸런싱 & 서비스 디스커버리 — 트래픽 라우팅; 이름으로 서비스 찾기
✓ 롤링 업데이트 & 롤백 — 새 버전을 점진적으로 배포; 실패 시 롤백
✓ 구성 & secret 관리; 저장소 오케스트레이션; 호스트 간 네트워킹
