#DevOps

Single-tenant Titus: 멀티 테넌트 컨테이너 플랫폼에서의 VM 수준 격리

Single-tenant Titus: 멀티 테넌트 컨테이너 플랫폼에서의 VM 수준 격리
01

Summary

넷플릭스는 왜 컨테이너 공유를 포기하고 다시 전용 VM을 선택했을까?

멀티 테넌트 컨테이너 플랫폼 Titus에서 하드웨어 레벨의 노이즈 이웃 문제를 극복하고 VM 수준 격리를 도입한 기술적 여정

넷플릭스의 핵심 컨테이너 플랫폼인 Titus는 수백만 개의 컨테이너를 효율적으로 운영해왔으나, 하드웨어 공유 리소스 경합으로 인한 성능 저하 한계에 봉착했습니다. 본 아티클은 microVM, gVisor 등 다양한 대안을 비교한 끝에 왜 EC2 기반 전용 VM 모드를 선택하게 되었는지 그 배경과 아키텍처를 소개합니다. 제어면(Control Plane)의 오케스트레이션 변경을 통해 개발자 경험을 유지하면서 완벽한 리소스 격리와 전체 플릿 효율성을 동시에 달성한 사례입니다.

  • 01cgroup 및 커널 수준 제한으로 해결하지 못하는 L3 캐시, 메모리 대역폭, softirq 경쟁 문제 규명
  • 02microVM, gVisor, EC2 직접 전환 등 다양한 격리 솔루션에 대한 기술적/운영적 비교 분석
  • 03Titus 페더레이션 레이어와 오토스케일링을 활용하여 작업 크기에 맞는 전용 EC2 노드를 동적으로 프로비저닝
  • 04Pod Anti-Affinity, Taint, Defragmentation 비활성화를 통한 엄격한 단일 테넌트 노드 스케줄링 보장
  • 05간섭 유발 작업을 전용 노드로 이관함으로써 남은 공유 호스트의 빈패킹(Bin-packing) 밀도 상승 효과 달성

RECOMMENDATION

실시간 데이터 스트리밍이나 롱테일 지연 시간에 매우 민감한 고성능 백엔드 서비스를 운영하는 인프라 엔지니어에게 적극 추천합니다. 컨테이너 밀도 제고와 하드웨어 리소스 경합 간의 트레이드오프를 고민하는 플랫폼 팀에게 실질적인 아키텍처 인사이트를 제공합니다.

The Problem

멀티 테넌트 컨테이너 환경에서는 cgroup과 네임스페이스로 리소스를 제한하더라도 L3 캐시, 메모리 대역폭, 네트워크 softirq 오버헤드 등 하드웨어 레벨의 공유 리소스 간섭(Noisy Neighbor)을 완전히 방지하지 못하는 한계가 존재했습니다. 특히 실시간 데이터 파이프라인이나 스트림 프로세서 같은 고성능 상태 저장 작업은 간헐적인 패킷 폭주나 캐시 경합으로 인해 롱테일 지연 시간이 치솟거나 작업이 중단되는 영향을 받았습니다.

The Solution

넷플릭스는 microVM이나 gVisor 도입 대신, 기존 Titus 연동 레이어와 오토스케일링을 활용하여 단일 작업 전용 EC2 인스턴스를 정밀하게 동적 할당하는 'Single-tenant Titus' 모드를 구현했습니다. 파드 반연속성(Pod Anti-Affinity)과 노드 테인트(Taint)를 조합하여 애플리케이션 팀의 호스트 관리 부담 없이 완전한 리소스 및 성능 격리를 제공하도록 구성했습니다.

The Result

노이즈 유발 작업과 지연 시간에 민감한 작업들을 단일 테넌트로 완전 분리하여 하드웨어 경합 문제를 근본적으로 해결했습니다. 또한 주요 간섭 원인이 제거되면서 잔여 공유 호스트의 제약 조건(Anti-Affinity)이 완화되었고, 결과적으로 남은 공유 호스트의 파드 배치 밀도가 높아져 전체 플릿의 컴퓨팅 효율성이 향상되었습니다.

Trade-off

대형 인스턴스 공유 대신 소형 전용 인스턴스 수가 늘어남에 따라 Titus 컨트롤 플레인 및 EC2 API 호출 부하가 증가하여 리전 페일오버 시 스케일링 과부하 위험이 커집니다. 또한 작업 요청 크기가 EC2 인스턴스 규격과 정확히 일치하지 않을 경우 전용 노드 내에 미사용 리소스가 일부 낭비될 수 있습니다.

03

Key Concepts

Concept · 01

Noisy Neighbor (노이즈 이웃)

동일한 물리적 호스트를 공유하는 여러 컨테이너 중 특정 컨테이너가 리소스를 과도하게 사용하여 인접한 다른 컨테이너의 성능을 저하시키는 현상입니다. 커널 cgroup 할당량을 준수하더라도 L3 캐시나 메모리 대역폭 같은 하드웨어 자원에서 경합이 발생할 수 있습니다.

  • 넷플릭스는 커널 스케줄러 오버헤드 및 네트워크 패킷 처리 시 softirq 경합으로 인한 지연 시간을 대표적 노이즈 이웃 문제로 지적했습니다.
Concept · 02

Single-tenant Titus

넷플릭스의 기존 컨테이너 개발자 경험 및 API 형태를 그대로 유지하면서 단일 컨테이너 작업에 전용 EC2 가상 머신을 할당하는 격리 모드입니다. 플랫폼 팀이 호스트 패치 및 관리를 전담하며 애플리케이션 팀의 운영 부담을 없앱니다.

  • 페더레이션 레이어와 오토스케일링을 연결해 요청된 작업 크기에 딱 맞는 최적의 전용 EC2 인스턴스를 동적으로 생성합니다.
Concept · 03

Pod Anti-Affinity & Taints

쿠버네티스 스케줄링 메커니즘으로, 특정 파드들이 동일한 노드에 함께 배치되지 않도록 방지하고(Anti-Affinity) 허용되지 않은 파드의 노드 스케줄링을 거부(Taint)하는 기능입니다.

  • Single-tenant Titus 노드에 틴트와 반연속성을 부여하여 다른 타사 파드가 전용 노드에 스케줄링되는 것을 완벽히 차단했습니다.