
데브옵스
이미지 최적화 여정(1): AWS Serverless Image Handler
두줄요약
AWS Serverless Image Handler를 도입해 이미지 크기 불일치와 백엔드 의존성을 줄였습니다. 점진적 적용과 캐시 버스팅으로 운영 리스크를 낮추고 성능을 개선했습니다.
문제 상황
- 크라우드 펀딩 서비스 특성상 많은 고화질 이미지를 노출하며 페이지 성능 병목 발생
- 실제 이미지 크기와 렌더링 크기 불일치로 불필요하게 큰 이미지 전송
- 기존 이미지 SaaS 구조로 인해 백엔드 종속성과 수정 병목 존재
원인 분석
- 클라이언트가 원하는 크기의 이미지를 직접 요청할 수 없는 구조
- 이미지 처리 변경 시 백엔드 작업에 의존하는 운영 방식
- 레거시가 공존하는 환경에서 대규모 구조 변경 비용 부담
해결 방법
- AWS Serverless Image Handler 도입으로 클라이언트 요청 크기 기반 이미지 서빙 전환
- S3 트리거 Lambda로 원본 업로드 시 리사이즈 이미지를 별도 생성
- CloudFront, API Gateway, Lambda, S3 조합으로 캐시와 서버리스 확장성 활용
주의할 점
- 전면 도입보다 일부 페이지부터 점진적으로 적용
- GIF는 Lambda payload 제한으로 원본 전달
- CloudFront 오류 캐시와 폴링 충돌을 캐시 버스팅으로 보완
적용해볼 점
- 이미지 요청량과 로그를 CloudWatch로 지속 모니터링
- alpha 환경에서 production 유사 검증 후 배포
- 원본 보존과 리사이즈 분리를 함께 고려
