1. 백엔드 (Backend)
| 기술 |
버전 |
용도 |
| Java |
17 (Amazon Corretto) |
런타임 |
| Spring Boot |
3.x |
애플리케이션 프레임워크 |
| Spring MVC |
- |
REST API |
| Spring Security |
- |
인증 / 인가 (JWT + OAuth2) |
| Spring Data JPA |
- |
ORM / 영속 계층 |
| QueryDSL |
5.1.0 |
동적 쿼리 |
| Spring Batch |
- |
배치 처리 (콘텐츠 수집, 물리 삭제) |
| Spring Retry |
- |
외부 API 재시도 |
| Spring Kafka |
- |
이벤트 기반 비동기 메시징 |
| Spring WebSocket |
- |
STOMP / SockJS 실시간 통신 |
| Spring Mail |
- |
SMTP 메일 전송 |
| MapStruct |
1.6.3 |
DTO 매핑 |
| Lombok |
- |
보일러플레이트 제거 |
| SpringDoc OpenAPI |
2.8.16 |
Swagger UI / API 문서 |
2. 데이터베이스 및 저장소 (Database / Storage)
| 기술 |
버전 |
환경 |
용도 |
| PostgreSQL |
17 |
Local: Docker / Prod: AWS RDS |
메인 RDB |
| Redis |
7.2 |
Local: Docker / Prod: AWS ElastiCache |
캐시, Pub/Sub, 세션 |
| H2 |
- |
Test |
테스트 DB |
| AWS S3 SDK |
2.29.45 |
Prod |
이미지 파일 저장 (썸네일, 프로필) |
| Local FileSystem |
- |
Dev |
개발 환경 파일 저장 |
3. 캐시 (Cache)
| 기술 |
용도 |
| Caffeine |
로컬 캐시 (L1) |
| Redis |
분산 캐시 (L2) |
| Redisson |
분산 락 (3.37.0) |
4. 메시징 / 실시간
| 기술 |
환경 |
용도 |
| Apache Kafka |
• Local: Docker |
|
| • Prod: Confluent Cloud (SASL_SSL) |
알림 이벤트 비동기 처리 |
|
| Redis Pub/Sub |
- |
다중 인스턴스 알림 실시간 전달 (fan-out) |
| SSE (Server-Sent Events) |
- |
클라이언트 알림 실시간 푸시 |
| WebSocket (STOMP + SockJS) |
- |
실시간 채팅, DM |
5. AWS 인프라
| 서비스 |
용도 |
| ECR |
Docker 이미지 레지스트리 (mopl-app, mopl-nginx) |
| ECS |
컨테이너 오케스트레이션 (Rolling Update 배포) |
| RDS |
PostgreSQL 관리형 DB |
| ElastiCache |
Redis 관리형 캐시 (TLS 활성화) |
| S3 |
정적 파일 저장소 |
| VPC |
프라이빗 서브넷 네트워크 격리 (10.0.11.x) |
1. 배포 아키텍처
Client
│
▼
Nginx (ECS) ─── SSL (Let's Encrypt) ─── mopl.kr / www.mopl.kr
│ 리버스 프록시 + 로드 밸런싱
│
├──▶ mopl-app-1 (10.0.11.142:8080)
└──▶ mopl-app-2 (10.0.11.58:8080)
│
├──▶ RDS (PostgreSQL)
├──▶ ElastiCache (Redis, TLS)
├──▶ S3 (파일 저장)
└──▶ Confluent Cloud (Kafka, SASL_SSL)
| 항목 |
값 |
| 리전 |
ap-northeast-2 (서울) |
| 도메인 |
mopl.kr / www.mopl.kr |
| SSL |
Let's Encrypt |
| 인스턴스 |
앱 2대 (다중 인스턴스) |