Skip to content

OpenAI API 호출 로직을 Lambda로 분리하여 보안 강화 및 관심사 분리 #68

@Kimgyuilli

Description

@Kimgyuilli

🌟 구현할 기능

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: 테스트 및 배포

  • 기능 테스트
  • 성능 비교 (응답 시간)
  • 단계적 롤아웃

📎 추가 내용

참고 자료

기술 스택

  • Lambda Runtime: Python 3.11 또는 Node.js 20.x
  • API Gateway: HTTP API (REST API보다 저렴하고 빠름)
  • Spring: Feign Client 또는 WebClient (비동기)

우선순위

  • Priority: Low (현재 구조로도 동작하며, 보안 강화가 주 목적)
  • Target: MVP 이후, 트래픽 증가 시점

Metadata

Metadata

Assignees

Labels

도메인: 챌린지🏆챌린지 관련 기능 작업우선순위: P2일정 여유 시 처리, 개선 사항 및 minor 버그

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions