
ECS·EC2·EKS의 복잡한 멀티 플랫폼 배포 이력을 Datadog APM으로 통합하고 Slack 장애 스레드에 정답을 밀어 넣어 주는 법
이 아티클은 EKS, ECS, EC2로 파편화된 아임웹의 인프라 배포 이력을 단 하나의 채널과 포맷으로 통합한 성공적인 SRE 엔지니어링 여정을 다룹니다. 기존에 흩어져 있던 알림들을 수동으로 확인하던 비효율에서 벗어나, Datadog APM을 활용해 배포 생명주기를 자동으로 추적하고 장애 발생 시 즉각적으로 관련 배포 정보를 밀어주는 아키텍처를 제시합니다.
EKS, ECS, EC2가 혼재된 하이브리드 클라우드 환경에서 배포 이력 관리에 병목을 겪고 계시거나, Datadog APM을 도입한 후 실무 효율을 극한으로 끌어올리고 싶은 플랫폼/SRE 엔지니어 분들께 강력히 추천합니다.
EKS, ECS, EC2 등 서로 다른 세 플랫폼에서 배포 방식이 달라 배포 이력을 한눈에 파악하기가 불가능했습니다. 이로 인해 장애가 발생할 때마다 어떤 변경이 언제 일어났는지 추적하기 위해 각 플랫폼 도구를 일일이 대조하고 확인해야 하는 큰 비효율이 존재했습니다.
세 플랫폼 모두에 공통으로 남는 Datadog APM 트레이스의 스팬 태그(@version, @git.commit.sha)를 통합 배포 신호로 채택하고, AWS Lambda를 통해 신규 배포를 감지하는 파이프라인을 구축했습니다. 장애 발생 시, 장애 알림과 동시에 직전 30분 동안 배포된 이력을 관련 Slack 장애 스레드에 자동으로 끌어와 첨부해 주는 봇 시스템을 도입했습니다.
총 247개의 프로덕션 서비스를 하나의 통합된 채널과 포맷으로 관리하게 되었으며, 장애 발생 시 직전 배포 단서가 장애 스레드에 자동 첨부되기까지 중앙값 13초가 소요되었고 이를 통해 실제 24건의 장애 원인을 규명했습니다.
Trade-off
APM 트레이스 스팬을 기반으로 사후 감지하는 방식이기 때문에, 트래픽이 거의 없는 마이너 서비스의 경우 첫 스팬 생성 지연으로 배포 탐지가 최대 1분까지 지연될 수 있습니다. 또한 모든 서비스에 통합 태깅이 완벽히 적용되어야 한다는 기술적 전제 조건과 빌드/배포의 시작 단계는 실시간으로 관측할 수 없다는 한계가 있습니다.
애플리케이션의 성능을 실시간으로 감시하고 마이크로서비스 간의 트랜잭션 흐름을 분산 추적(Distributed Tracing)하는 도구입니다.
다양한 소스의 모니터링 데이터 간 연관 관계를 쉽게 시각화하고 필터링할 수 있도록 서비스명, 환경, 버전을 표준 포맷으로 일치시키는 기술 체계입니다.
PHP CLI(배치 프로그램)는 웹 요청 방식(PHP-FPM)과 달리 프로세스 시작 시점에 root 스팬을 즉시 형성하므로, 이후 주입된 전역 태그가 과거의 root 스팬에 자동으로 소급 반영되지 않는 고유한 스팬 라이프사이클 특징입니다.