1. 언어 선택: Python → Java
기존 구조와 Python 선택 이유
- 초기 Lambda는 EC2 서버 API를 호출하는 단순한 역할만 담당
- EC2 API 호출은 Python 기본 라이브러리만으로 가능하여 외부 의존성 불필요
- Python Lambda는 Java 대비 콜드 스타트가 짧음
- Python 콜드 스타트: 약 130~160ms
- Java 콜드 스타트: 수백~수천ms
구조 변경 시 발생한 문제
- Lambda가 RDS에 직접 접근하도록 변경하면서 관련 라이브러리가 필요해졌음
- Python 기본 라이브러리가 아니므로 Lambda Layer로 별도 추가 필요
- VPC 설정, IAM 권한 추가 등 번거로운 설정 필요
Java로 전환 결정
- Spring Boot와 같은 언어로 통일하여 유지보수성 향상
- Lambda Layer 의존성 제거
- 단, Java Lambda는 콜드 스타트가 길어 경매 시각 오차 발생 가능 → SQS 지연 큐 도입으로 해결
2. 배포 자동화: GitHub Actions + OIDC
배포 방식 결정
- 별도 레포지토리를 생성하여 Spring Boot 프로젝트와 Lambda 프로젝트를 분리
- 같은 레포에 넣으면 Spring Boot 빌드 시 Lambda 코드가 포함되는 문제 발생
- AWS Access Key 대신 OIDC 방식으로 인증하여 보안 강화