당근 이미지 서비스는 전사 서비스에서 사용되며, 7개 지역(개발 3, 운영 4)에서 운영되는 대규모 서비스로, 동적 이미지 크기 조정, 포맷 변환, 만료 기한이 있는 서명된 URL 처리가 필수적입니다. 🖼️
GCP 채택의 핵심 동기는 BigQuery와 Cloud Machine Learning의 뛰어난 분석 및 AI 기능 활용을 위해 이미지 원본을 GCP로 이전하기로 결정했으며, 이는 자연스럽게 Cloud CDN 사용으로 이어졌습니다. 🧠
GCP 이미지 서비스 아키텍처는 Cloud CDN, Cloud Load Balancing (L7), Serverless Network Endpoint Group (NEG), Cloud Run, Cloud Storage를 유기적으로 연결하여 대규모 이미지 서빙 및 동적 처리를 수행합니다. 🏗️
Cloud Run은 이미지 동적 크기 조정 및 포맷 변환을 담당하며, 배포 시 GitHub Actions의 revision-traffic 및 no-traffic 옵션을 활용하여 카나리 배포(점진적 트래픽 전환)를 자동화하여 안정성을 확보합니다. 🚀
서명된 URL 처리의 복잡성 (GCP 특유의 방식): Cloud CDN은 서명된 URL을 검증하지만, 원본(Cloud Run)으로 요청을 전달할 때 쿼리 매개변수를 제거하고 X-Client-Request-URL 헤더에 원본 URL을 담아 보냅니다. 따라서 Cloud Run에서 이 헤더를 읽어 서명 유효성을 재검증해야 합니다. 🕵️♀️
Cloud Storage는 리전별 버킷 구성, Managed AutoClass를 통한 객체 생명 주기 및 비용 최적화, 그리고 Cloud Run과 Cloud Storage 간의 무료 트래픽을 활용하여 비용을 절감합니다. 💰
종합적인 모니터링 시스템은 GCP의 Log Explorer, Metric Explorer 외에도 Log Router를 통해 LB 로그를 BigQuery로 적재하고 Superset으로 대시보드를 구축하며, Grafana와 Cloud Monitoring을 연동하여 CDN 레이턴시 및 Cloud Run 404 오류 등 핵심 지표를 실시간으로 모니터링합니다. 📊