해결책
구글은 컨테이너가 유행하기 10년 전부터 리눅스 컨테이너를 대규모로 운영해 왔다. 구글의 보그 시스템은 최대 수만 대의 머신으로 구성된 클러스터 전반에서 수십만 개의 작업을 관리했으며, 선언형 작업 명세 언어와 인스턴스가 죽었을 때의 자동 재시작 및 재스케줄링을 사용했다.
2014년 오픈소스로 공개된 쿠버네티스는 보그의 교훈을 구글 밖으로 가져왔다. 공유 영속 저장소, 버전 관리와 검증을 갖춘 도메인 특화 REST API, 그리고 모든 객체에 적용되는 일관된 Spec/Status 구조가 그것이다. 설계 목표는 복잡한 분산 시스템을 쉽게 배포하고 관리하도록 하면서, 컨테이너가 가능하게 하는 활용률 향상도 유지하는 것이었다.
컨트롤러는 원하는 상태와 관측된 상태를 비교해 그 차이에 따라 행동할 뿐이므로, 이 플랫폼은 본질적으로 자가 치유와 확장이 가능하다. 오토스케일러는 원하는 레플리카 수만 조정할 뿐, 이를 조정하는 기제에는 손대지 않는다. 그 하나의 추상화가 업계의 기본이 되었다.
이룬 것
원하는 상태를 선언하면 루프가 현실을 조정한다
통한 이유
선언형 명세 덕분에 동일한 YAML이 규격을 준수하는 어떤 클러스터에서도 작동하므로 이식성 비용이 사라진다
일관된 객체 API를 통해 사용자, 내부 구성 요소, 자동화가 모두 같은 시스템을 구동할 수 있다
제어 루프는 롤아웃, 상태 점검, 스케일링을 맞춤형 코드가 아닌 하나의 메커니즘의 기능으로 만든다
CNCF 아래에서 오픈소스로 공개되면서 모든 벤더가 동등한 자리를 얻었고, 클라우드 대기업들은 종속이 아닌 서비스로 경쟁하게 되었다
명령형 스크립트 대신 선언형 계약을 제공하라. 사용자는 원하는 것을 말하고, 기제가 방법을 담당한다. 그 계약이 쿠버네티스를 모든 클라우드가 채택할 수 있는 추상화로 만든 것이다.
그 후
쿠버네티스는 사실상의 컨테이너 오케스트레이션 표준이 되었다. 모든 주요 클라우드가 관리형 버전을 제공하며, CNCF 설문조사에서는 가장 널리 사용되는 플랫폼 중 하나로 꼽힌다. 보그는 여전히 구글의 내부 시스템이지만, 그 공개된 후손은 업계가 소프트웨어를 배포하는 방식을 표준화했다.
근거 확인하기
출처
- Large-scale cluster management at Google with Borg (abstract) Google Research / EuroSys 2015 · research.google
- Borg, Omega, and Kubernetes ACM Queue · queue.acm.org
- Kubernetes Overview Kubernetes Documentation · kubernetes.io