#DevOps

세 개의 플랫폼, 하나의 배포 관측

세 개의 플랫폼, 하나의 배포 관측
01

Summary

"방금 배포한 사람 누구죠?" 장애 터지자마자 13초 만에 원인 제공자 찾아내는 배포 관측 자동화

ECS·EC2·EKS의 복잡한 멀티 플랫폼 배포 이력을 Datadog APM으로 통합하고 Slack 장애 스레드에 정답을 밀어 넣어 주는 법

이 아티클은 EKS, ECS, EC2로 파편화된 아임웹의 인프라 배포 이력을 단 하나의 채널과 포맷으로 통합한 성공적인 SRE 엔지니어링 여정을 다룹니다. 기존에 흩어져 있던 알림들을 수동으로 확인하던 비효율에서 벗어나, Datadog APM을 활용해 배포 생명주기를 자동으로 추적하고 장애 발생 시 즉각적으로 관련 배포 정보를 밀어주는 아키텍처를 제시합니다.

  • 01EKS, ECS, EC2의 상이한 배포 이벤트를 좇는 대신 공통 분모인 Datadog APM 트레이스를 배포 신호로 대전환
  • 02EventBridge와 Lambda를 활용해 신규 배포를 1분 단위로 감지하고 DynamoDB로 중복을 제거하는 수집 파이프라인 설계
  • 03장애 발생 시 최근 30분 이내 배포 내역을 Slack 장애 스레드에 중앙값 13초 만에 자동 연결하여 평균 장애 대응 시간 단축
  • 04PHP CLI 환경에서 스팬 생성 시점 차이로 인해 배포가 누락되던 기술적 특이사항을 root 스팬 태그 직접 수정으로 우회 해결
  • 05사후 감지 방식의 1분 지연 한계를 타파하기 위해 Push 기반 타임라인 알림 및 LLM 기반 위험도 자동 산정 등 구체적인 고도화 로드맵 제시

RECOMMENDATION

EKS, ECS, EC2가 혼재된 하이브리드 클라우드 환경에서 배포 이력 관리에 병목을 겪고 계시거나, Datadog APM을 도입한 후 실무 효율을 극한으로 끌어올리고 싶은 플랫폼/SRE 엔지니어 분들께 강력히 추천합니다.

The Problem

EKS, ECS, EC2 등 서로 다른 세 플랫폼에서 배포 방식이 달라 배포 이력을 한눈에 파악하기가 불가능했습니다. 이로 인해 장애가 발생할 때마다 어떤 변경이 언제 일어났는지 추적하기 위해 각 플랫폼 도구를 일일이 대조하고 확인해야 하는 큰 비효율이 존재했습니다.

The Solution

세 플랫폼 모두에 공통으로 남는 Datadog APM 트레이스의 스팬 태그(@version, @git.commit.sha)를 통합 배포 신호로 채택하고, AWS Lambda를 통해 신규 배포를 감지하는 파이프라인을 구축했습니다. 장애 발생 시, 장애 알림과 동시에 직전 30분 동안 배포된 이력을 관련 Slack 장애 스레드에 자동으로 끌어와 첨부해 주는 봇 시스템을 도입했습니다.

The Result

총 247개의 프로덕션 서비스를 하나의 통합된 채널과 포맷으로 관리하게 되었으며, 장애 발생 시 직전 배포 단서가 장애 스레드에 자동 첨부되기까지 중앙값 13초가 소요되었고 이를 통해 실제 24건의 장애 원인을 규명했습니다.

Trade-off

APM 트레이스 스팬을 기반으로 사후 감지하는 방식이기 때문에, 트래픽이 거의 없는 마이너 서비스의 경우 첫 스팬 생성 지연으로 배포 탐지가 최대 1분까지 지연될 수 있습니다. 또한 모든 서비스에 통합 태깅이 완벽히 적용되어야 한다는 기술적 전제 조건과 빌드/배포의 시작 단계는 실시간으로 관측할 수 없다는 한계가 있습니다.

03

Key Concepts

Concept · 01

Datadog APM (Application Performance Monitoring)

애플리케이션의 성능을 실시간으로 감시하고 마이크로서비스 간의 트랜잭션 흐름을 분산 추적(Distributed Tracing)하는 도구입니다.

  • ECS, EC2, EKS 세 개의 플랫폼에 공통으로 생성되는 트레이스를 배포 관측을 위한 단일 통합 신호로 사용했습니다.
  • 각 서비스 트레이스에 버전을 나타내는 태그를 주입하여 감지 시스템의 핵심 데이터로 활용했습니다.
Concept · 02

Unified Tagging (통합 태깅)

다양한 소스의 모니터링 데이터 간 연관 관계를 쉽게 시각화하고 필터링할 수 있도록 서비스명, 환경, 버전을 표준 포맷으로 일치시키는 기술 체계입니다.

  • 서로 다른 세 플랫폼의 배포 알림을 동일한 카드 레이아웃 포맷으로 통합하는 기초 데이터가 되었습니다.
  • 태그 누락 시 감지 사각지대가 될 수 있으므로, 완벽한 감지를 위한 가장 핵심적인 전제 조건입니다.
Concept · 03

PHP CLI 스팬 생명주기 (Span Lifecycle)

PHP CLI(배치 프로그램)는 웹 요청 방식(PHP-FPM)과 달리 프로세스 시작 시점에 root 스팬을 즉시 형성하므로, 이후 주입된 전역 태그가 과거의 root 스팬에 자동으로 소급 반영되지 않는 고유한 스팬 라이프사이클 특징입니다.

  • EC2 환경에서 동작하는 PHP CLI 배치의 배포 감지가 누락되는 현상의 근본적 원인이었습니다.
  • 프로세스 시작 직후 이미 완성된 root 스팬을 코드에서 직접 탐색하여 버전을 마킹하는 방법으로 문제를 해결했습니다.