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대 (다중 인스턴스)