슬랙(Slack)이 수만 대의 EC2 인스턴스를 관리하며 겪었던 복잡성과 인프라 드리프트(drift) 문제를 해결하기 위해, 차세대 EC2 플랫폼 '십야드(Shipyard)'를 공개했습니다. 기존에는 장기 실행 EC2 인스턴스를 계속 수정하는 방식이었으나, 이제는 불변(immutable) AMI(Amazon Machine Image) 기반의 교체 배포 모델로 전환하여 컨테이너 환경과 유사한 안정성과 예측 가능성을 EC2에도 적용했습니다.
십야드는 인프라를 '지속적으로 수정할 인스턴스'가 아닌 '배포 가능한 아티팩트'로 취급합니다. 이를 위해 공통 기반 이미지인 '슬랙-제로(slack-zero)' 위에 서비스별 이미지를 쌓는 계층형 구조를 채택하고, 대부분의 무거운 구성 작업은 이미지 베이킹(baking) 단계에서 처리합니다. 배포 오케스트레이터 '곤돌라(Gondola)'는 AMI와 버전이 지정된 구성 아티팩트를 하나의 배포 단위로 관리하며, 지표 기반의 단계적 배포, 자동 중단 및 롤백 기능을 제공합니다. 또한 '피카부(Peekaboo)'는 실시간 EC2 인벤토리를, '더 리퍼(The Reaper)'는 오염되거나 수명이 다한 인스턴스를 자동으로 교체하여 인프라의 건전성을 유지합니다. 이러한 접근 방식은 AMD64와 ARM 기반 그라비톤(Graviton) 등 다양한 아키텍처와 운영체제를 지원하며, 특히 쿠버네티스(Kubernetes) 워커 노드나 이그레스(egress) 네트워크 스택처럼 컨테이너로 이전하기 어려운 인프라 구성요소에 효과적입니다.
십야드의 도입은 인프라 운영의 복잡성을 줄이고 안정성을 높이는 데 중요한 의미를 가집니다. 인스턴스가 시간에 따라 변하지 않는 불변성을 통해 인프라 드리프트를 최소화하고, 문제 발생 시 원인을 빠르게 파악하며, 자동화된 롤백으로 장애 확산을 방지할 수 있습니다. 이는 서비스 팀이 인프라 관리 부담을 덜고 핵심 비즈니스 로직 개발에 집중할 수 있도록 돕습니다. 또한, 각 인스턴스에 수명을 제한하고 정기적으로 교체하는 정책은 잠재적 취약점이 문제를 일으킬 시간을 줄여 보안을 강화하는 효과도 있습니다. 슬랙은 이 플랫폼을 통해 대규모 EC2 환경에서도 컨테이너와 같은 현대적인 배포 및 운영 이점을 누리게 되었습니다.