전체 구조
시스템 구성도
인터넷
│
▼
Route53 (DNS) + ACM (HTTPS/TLS)
│
▼
ALB (Application Load Balancer)
│
▼
EC2 ── Spring Boot (Docker 컨테이너)
├──▶ RDS (MySQL 8.0)
└──▶ S3 (로그 아카이브)
Frontend ──▶ Cloudflare Workers
Docs ──▶ Cloudflare Pages
외부 API
├── Ablecity (사주 계산)
├── OpenAI (AI 해석)
└── Kakao (로그인 · 장소 검색)
AWS 서비스 구성
| 서비스 | 용도 |
|---|---|
| EC2 | Spring Boot 앱 서버 (Docker 컨테이너로 실행) |
| RDS (MySQL 8.0) | 영구 데이터 저장 |
| S3 | 로그 파일 아카이브 |
| Route53 | 도메인 DNS 관리 |
| ACM | HTTPS TLS 인증서 자동 갱신 |
| ALB | 로드밸런서 (스케일아웃 대비) |
백엔드 레이어 구조
[HTTP 요청]
↓
api/ ← Controller, DTO, 유효성 검사
↓
application/ ← 유스케이스, Service 인터페이스
↓
domain/ ← 순수 도메인 모델, Repository 인터페이스
(Spring · JPA 의존 없음)
↓
infra/ ← JPA 엔티티, Repository 구현체, 외부 API 클라이언트
의존성 방향은 항상 바깥 → 안쪽(도메인) 으로만 흐릅니다. 도메인 레이어는 프레임워크에 의존하지 않습니다.
외부 연동 목록
| 외부 서비스 | 역할 |
|---|---|
| Ablecity API | 사주 8자 계산, 일일 에너지 점수 산출 |
| OpenAI GPT | 일일 운세 AI 해석 텍스트 생성 |
| Kakao OAuth2 | 소셜 로그인 (인가코드 플로우) |
| Kakao Local API | 장소 검색 — 프론트엔드에서 직접 호출 |