-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
Description
🌟 구현할 기능
OpenAI API 호출 로직을 Lambda로 분리하여 보안 강화 및 관심사 분리
현재 Spring WAS가 Public Subnet에 배치되어 OpenAI API를 직접 호출하는 구조를 개선합니다.
- Spring WAS를 Private Subnet으로 이동
- OpenAI 호출 전용 Lambda 함수 생성
- API Gateway를 통한 내부 통신으로 변경
기대 효과:
- WAS 보안 강화 (Private Subnet 격리)
- OpenAI API Key 관리 개선 (Lambda 환경 변수)
- AI 기능 확장 용이성 증대
- 마이크로서비스 아키텍처로 전환
🧩 구현 아이디어
1. 현재 아키텍처 (Phase 1)
Public Subnet: [Spring WAS] → OpenAI API (직접 호출) Private Subnet: [RDS]
2. 목표 아키텍처 (Phase 2)
Private Subnet: [Spring WAS] → API Gateway → Lambda → OpenAI API Private Subnet: [RDS]
구현 단계
Step 1: Lambda 함수 개발
- Python/Node.js로 OpenAI API 호출 Lambda 작성
- 환경 변수로 OpenAI API Key 관리
- 에러 핸들링 및 로깅 구현
Step 2: API Gateway 구성
- REST API 또는 HTTP API 생성
- Lambda 통합 설정
- VPC Link 구성 (Private WAS에서 접근용)
Step 3: Spring WAS 수정
- OpenAI 직접 호출 코드 제거
- API Gateway 호출로 변경
- Feign Client 또는 RestTemplate 사용
Step 4: 인프라 변경
- WAS를 Private Subnet으로 이동
- VPC Endpoint 추가 (API Gateway용)
- Security Group 재구성
Step 5: 테스트 및 배포
- 기능 테스트
- 성능 비교 (응답 시간)
- 단계적 롤아웃
📎 추가 내용
참고 자료
- [AWS Lambda와 API Gateway 연동 가이드](https://docs.aws.amazon.com/lambda/latest/dg/services-apigateway.html)
- [VPC Link를 사용한 Private 통신](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vpc-links.html)
- [OpenAI API Best Practices](https://platform.openai.com/docs/guides/production-best-practices)
기술 스택
- Lambda Runtime: Python 3.11 또는 Node.js 20.x
- API Gateway: HTTP API (REST API보다 저렴하고 빠름)
- Spring: Feign Client 또는 WebClient (비동기)
우선순위
- Priority: Low (현재 구조로도 동작하며, 보안 강화가 주 목적)
- Target: MVP 이후, 트래픽 증가 시점
Reactions are currently unavailable