단일 테넌트 Titus: 멀티 테넌트 컨테이너 플랫폼에... 노트

단일 테넌트 Titus: 멀티 테넌트 컨테이너 플랫폼에서의 VM 레벨 격리

Netflix는 Titus라는 Kubernetes 기반 플랫폼을 활용하여 수많은 AWS 리전에서 매주 수백만 개의 컨테이너를 호스팅합니다. Titus는 호스트, 클러스터 및 커널 유지 관리를 담당하는 관리형 컨테이너 경험을 제공합니다. 여러 팀의 다양한 컨테이너 간에 호스트를 효율적으로 공유하는 멀티 테넌시를 위해 설계되었습니다. 그러나 이 공유 커널 모델은 하드웨어 리소스 경합으로 인해 까다로운 실시간 시스템에 어려움을 야기합니다.이러한 문제는 컨테이너가 cgroup이 완전히 격리할 수 없는 마지막 레벨 캐시 및 메모리 대역폭과 같은 물리적 리소스를 공유하기 때문에 발생합니다. 노이지 네이버(noisy neighbors)는 이러한 공유 리소스를 고갈시켜 성능 저하와 테일 지연 시간 증가를 초래할 수 있습니다. 네트워크 대역폭 및 패킷 처리, 스토리지 IOPS, 다양한 커널 레벨 작업도 간섭에 기여합니다. 상태 저장, 고처리량 스트리밍 작업은 이러한 간헐적인 간섭에 특히 취약하며, 이는 상당한 다운타임을 유발할 수 있습니다.이를 해결하기 위해 Netflix는 지속적인 공유 커널 튜닝, microVM, gVisor, 그리고 EC2에서 직접 컨테이너 실행을 포함한 여러 격리 전략을 탐색했습니다. 공유 커널 튜닝은 점진적인 개선을 제공하지만 공유 하드웨어의 구조적인 문제를 완전히 해결하지는 못합니다. microVM과 gVisor는 더 강력한 격리를 제공했지만 성능 오버헤드, 운영 복잡성 및 하드웨어 제약으로 인해 매력이 떨어졌습니다. EC2에서 직접 컨테이너를 실행하면 운영 부담이 애플리케이션 팀으로 다시 이동하여 Titus의 이점을 상쇄하게 됩니다.궁극적으로 Netflix는 기존 Titus 플랫폼에 특정 워크로드를 위한 전용 VM을 제공하는 단일 테넌트 Titus를 통합하기로 결정했습니다. 이 접근 방식은 익숙한 Titus API와 관리형 경험을 유지하면서 완전한 VM 격리를 제공합니다. Compute/Platform 팀은 여전히 기본 EC2 인스턴스를 소유하고 패치하여 일관된 운영 모델을 보장합니다. 이 솔루션은 불필요한 보안 격리 기능이나 상당한 운영 오버헤드를 부과하지 않으면서 필요한 리소스 및 성능 격리를 제공합니다.
CdXz5zHNQW_ngyUjDeQsk.png