- 기간 : 2025.12.19 ~ 2025.12.26
친구들과 함께 트리를 꾸미고 AI가 트리를 평가하는 크리스마스 이벤트 웹 서비스
짧은 기간 동안 운영되는 이벤트형 서비스 특성을 고려하여 운영 복잡도와 인프라 비용을 최소화하는 서버 아키텍처를 설계했습니다.
- UUID 기반 로그인 없는 권한 모델 설계
- Redis TTL 기반 상태 관리 구조 설계
- S3 Presigned URL 기반 서버 부하 없는 이미지 업로드 구조
- OpenAI Vision API 기반 AI 트리 평가 시스템 구현
- Java
- Spring Boot
- Spring Web (REST API)
- Redis (TTL 기반 트리 상태 관리)
- AWS S3 (트리 이미지 / 장식 이미지 저장)
-
OpenAI Vision API
- 트리 평가
- AI 제목 생성
- AWS EC2 (API 서버)
- AWS S3 + CloudFront (Frontend 배포 및 CDN)
- Route53 (DNS)
- ACM (TLS 인증서)
- ALB (Backend HTTPS 처리)
- Gradle
- Swagger (Springdoc OpenAPI)
- UUID 기반 로그인 없는 권한 모델
- URL 공유 기반 협업 구조
- Webhook 기반 사용자 생명주기 처리
- Redis TTL 기반 단기 서비스 상태 관리
- S3 Presigned URL 기반 이미지 업로드
- 장식 개수 조건 기반 API 호출 제한
- Redis 캐싱을 통한 중복 호출 방지
-
크리스마스 이벤트용 서비스로 짧은 기간 동안 운영되는 웹 서비스였기 때문에 인프라 비용과 운영 복잡도를 최소화해야 했다.
-
사용자 인증 없이 URL 공유 기반으로 서비스가 진행되는 구조에서 간단하면서도 안전한 권한 모델이 필요했다.
-
AI 평가 기능 도입 시 API 호출 비용과 서비스 안정성을 동시에 관리해야 했다.
1️⃣ UUID 기반 권한 모델
- 인증 시스템을 도입하지 않고
- UUID 자체를 권한 키로 사용하는 구조를 설계
- 로그인 없이도 트리 관리 가능
2️⃣ Redis + S3 역할 분리 아키텍처
- 트리 상태 → Redis TTL 관리
- 이미지 결과물 → S3 저장
DB 없이도 단기 이벤트 서비스 운영 가능
3️⃣ AI 호출 비용 제어
- 장식 개수 조건 기반 평가 요청
- Redis 캐싱을 통한 중복 호출 방지
- JSON 응답 구조 강제
- 로그인 없이 URL 공유 기반 협업 트리 서비스 구현
- Redis TTL 상태 관리로 DB 없이 이벤트 서비스 운영
- AI 호출 제한 및 캐싱으로 API 비용과 안정성 관리
flowchart LR
User --> Frontend
Frontend -->|API| Backend
Backend --> Redis
Backend --> S3
Frontend -->|Presigned URL| S3
Backend --> OpenAI
S3 --> CloudFront
CloudFront --> User
flowchart TD
User --> TreeDraw
TreeDraw --> UploadBaseImage
UploadBaseImage --> S3
S3 --> TreeMetadata
TreeMetadata --> Redis
User --> DecorationUpload
DecorationUpload --> S3
Redis --> TreeState
TreeState --> Frontend
Frontend --> AIRequest
AIRequest --> Backend
Backend --> OpenAI
sequenceDiagram
participant User
participant Frontend
participant Backend
participant Redis
participant S3
participant OpenAI
User->>Frontend: 트리 생성
Frontend->>Backend: POST /tree
Backend->>S3: base.png 저장
Backend->>Redis: tree metadata 저장
User->>Frontend: 장식 업로드
Frontend->>S3: presigned URL 업로드
Frontend->>Backend: AI 평가 요청
Backend->>OpenAI: Vision API 호출
OpenAI-->>Backend: 평가 결과 반환
Backend-->>Frontend: score / title / summary
flowchart LR
User --> Frontend
Frontend -->|API Request| Backend
Backend --> Redis[(Redis TTL State)]
Backend -->|Presigned URL| S3
Frontend -->|Upload Image via PUT| S3
S3 --> CloudFront
CloudFront --> User
Backend -->|AI Evaluation Request| OpenAI
- Authentication Architecture
- Event-driven System
- System Design
- AI Service Integration
- Backend Infrastructure