실시간 같이 보기 기능과 큐레이팅을 제공하는 소셜 서비스
모플은 사용자들이 콘텐츠를 함께 시청하고, 플레이리스트를 큐레이팅하며, 리뷰를 공유할 수 있는 소셜 플랫폼입니다.
- 실시간 같이 보기 (Watching Session): WebSocket/SSE 기반 실시간 동시 시청 세션
- 플레이리스트 큐레이팅: 콘텐츠 플레이리스트 생성 및 구독
- 리뷰 시스템: 콘텐츠에 대한 리뷰 작성 및 공유
- 소셜 기능: 팔로우, 알림, 1:1 대화(DM)
- 콘텐츠 검색: Elasticsearch 기반 검색
mopl-backend/
├── applications/ # 실행 가능한 애플리케이션
│ ├── api/ # REST API 서버
│ ├── batch/ # Spring Batch 작업
│ ├── sse/ # Server-Sent Events 서버
│ ├── websocket/ # WebSocket 서버
│ └── worker/ # Kafka Consumer 워커
│
├── core/
│ └── domain/ # 도메인 모델 및 서비스
│
├── infrastructure/ # 외부 시스템 연동
│ ├── cache/ # 캐시 추상화
│ ├── jpa/ # JPA 엔티티 및 레포지토리
│ ├── kafka/ # Kafka Producer/Consumer
│ ├── mail/ # 이메일 발송
│ ├── openapi/ # Swagger/OpenAPI
│ ├── redis/ # Redis 연동
│ ├── search/ # Elasticsearch 연동
│ ├── security/ # Spring Security
│ └── storage/ # 파일 스토리지 (S3)
│
└── shared/ # 공통 모듈
├── dto/ # 공유 DTO
├── jackson/ # JSON 직렬화 설정
├── logging/ # 로깅 설정
└── monitoring/ # 메트릭/트레이싱
| 도메인 | 설명 |
|---|---|
| User | 사용자 계정 및 프로필 |
| Content | 영상/콘텐츠 정보 |
| Playlist | 플레이리스트 및 구독 |
| Review | 콘텐츠 리뷰 |
| WatchingSession | 실시간 같이 보기 세션 |
| Follow | 팔로우 관계 |
| Notification | 알림 |
| Conversation | 1:1 대화 |
| Tag/Genre | 태그 및 장르 분류 |
- Java 21
- Docker & Docker Compose
- Gradle 8.12+
# 인프라 (MySQL, Redis, Kafka, Elasticsearch)
docker compose -f docker/docker-compose-infra.yaml up -d
# 모니터링 (Prometheus, Grafana, Zipkin)
docker compose -f docker/docker-compose-monitoring.yaml up -d
# 로깅 (OpenSearch, Fluent Bit)
docker compose -f docker/docker-compose-logging.yaml up -d# 빌드
./gradlew build
# API 서버 실행
./gradlew :applications:api:bootRun
# WebSocket 서버 실행
./gradlew :applications:websocket:bootRun
# SSE 서버 실행
./gradlew :applications:sse:bootRun
# Worker 실행
./gradlew :applications:worker:bootRun
# Batch 실행
./gradlew :applications:batch:bootRun# 전체 테스트
./gradlew test
# 커버리지 리포트
./gradlew jacocoTestReport
# 부하 테스트 (k6)
k6 run k6/test.jsAPI 서버 실행 후 Swagger UI에서 확인:
http://localhost:8080/swagger-ui.html
| 서비스 | URL | 용도 |
|---|---|---|
| Grafana | http://localhost:3000 | 메트릭 대시보드 |
| Prometheus | http://localhost:9090 | 메트릭 수집 |
| Zipkin | http://localhost:9411 | 분산 트레이싱 |
| OpenSearch Dashboards | http://localhost:5601 | 로그 분석 |
- Checkstyle: Google Java Style Guide
- Spotless: Eclipse 포매터
- JaCoCo: 테스트 커버리지