배경 및 목표
① 서버리스 비용 효율성 악화: NEON 게임 클라이언트의 이벤트 로그를 받아 Kafka로 넘기는 수집 서버(NeoEvent)의 기존 API Gateway + AWS Lambda 구조에서 트래픽 볼륨이 지속해서 상승함에 따라, API Gateway 호출 및 데이터 처리 비용이 과도하게 청구되는 리스크 직면 (월 약 $1,874 발생).
→ 유입 트래픽 빈도와 볼륨이 꾸준히 유지되는 도메인 특성을 고려하여, 전체 런타임을 ALB(Application Load Balancer) + AWS ECS Fargate 컨테이너 환경으로 전환하여 고정 비용을 절감하고자 함.
역할
시스템 구조 설계 참여 및 주도적 개발
주요 업무 및 성과
① 서버리스 아키텍처의 컨테이너화 및 런타임 현대화 (FastAPI)
- 애플리케이션 레이어 리팩토링: 단발성 AWS Lambda 핸들러 기반 코드를 상용 운영이 가능한 고정형 FastAPI 애플리케이션으로 전면 변환 및 컨테이너화 수행.
② 배포 파이프라인 현대화
- CI/CD 개편: 변경된 컨테이너 환경 및 ECS Task Definition, ECS Service 업데이트 흐름에 맞춰 GitLab CI/CD 파이프라인 전면 개편 및 자동 배포 체계 완비.
- IaC 프레임워크 전환: 사장(Deprecated)된 CDKTF를 대체하여 최신 IaC 프레임워크인 Pulumi로 인프라 프로비저닝 코드를 전면 이관.
③ 스트레스 테스트 기반의 가용성 입증 및 무중단 이관
- 한계 처리량 검증 (Load Testing): Fargate 환경(0.25 vCPU, 512MB)에서 성능 테스트를 가동하여 최대 처리량(~300 RPS) 및 메모리 안정성(사용률 10% 미만, ~55MB 선형 유지) 데이터를 계측. 이를 바탕으로 예상 트래픽에 대응하는 오토스케일링 전략(1000 RPS 구간당 4개 태스크 등) 가이드라인 정립.
- 배포 서순 설계: 신규 ECS 컨테이너 군을 먼저 프로비저닝하여 내부 헬스체크(/health, /ready) 무결성을 검증한 뒤, AWS Route 53의 라우팅 및 ALB 타깃 그룹 분할을 통해 단 한 건의 트래픽 유실 없는 무중단 인프라 마이그레이션 완수.
결과
① 인프라 고정 운영 비용 88% 절감: 호출당 요금이 부과되던 API Gateway 요금($1,705) 구조를 ALB 기반 데이터 라우팅 체계로 전환함으로써, 기존 월 $1,874에 달하던 클라우드 청구 비용을 월 $210 ~ $240 선으로 대폭 절감.
② 높은 응답 신뢰성 확보: ECS Fargate 환경에서 대규모 동시 요청(Concurrent 100) 상황에서도 P99 응답 시간 600ms 미만을 안정적으로 사수하며 상용 트래픽 수용 능력 입증.
③ 대규모 상용 트래픽 안정적 수용: 일일 피크 타임 기준 최고 분당 약 54k(54,000) 요청, 최저 분당 약 13k(13,000) 요청의 변동성 높은 트래픽 볼륨을 작업 밀림이나 지연 없이 처리 중.
회고
플랫폼 팀으로 이동하고 처음으로 진행한 프로젝트였다. 처음 아키텍처를 마주했을 때 관리 오버헤드가 적다는 이유로 서버리스가 채택되어 있었으나, 유입 트래픽의 빈도와 볼륨이 꾸준히 수평 유지되는 도메인 특성상 호출당 과금되는 API 게이트웨이 요금이 불어나고 있었다. 이를 해결하기 위해 시스템 전체를 컨테이너(FastAPI) 환경으로 전환했고, 단순 이관을 넘어 aiokafka 비동기 루프 튜닝, GeoIP 인메모리 캐싱을 통한 초기 지연 제거, 배포 정합성을 위한 Graceful Shutdown 등 코어 단의 최적화를 동시에 수행했다.
어려웠던 점
새로운 배포가 아니라 매초 수많은 트래픽과 카프카 메시지가 실시간으로 쏟아지는 프로덕션 환경의 인프라 판을 통째로 갈아 끼워야 했던 점이 가장 어려웠다.
→ 인프라 배포의 서순 제어를 정교하게 설계해, 결과적으로 단 1초의 다운타임이나 트래픽 드롭(Drop) 없이 구버전 아키텍처에서 신규 ECS Fargate 인프라로 100% 무중단 마이그레이션을 완수했다.