Skip to content

momo-spring-project/momo-backend

Repository files navigation

MOMO 프로젝트

MOMO 커버 이미지

📋 목차

  1. 팀원 소개
  2. 프로젝트 소개
  3. 기술 스택
  4. 아키텍처
  5. 프로젝트 설계
  6. API 명세서
  7. 주요 서비스 플로우
  8. 도메인 별 문서
  9. 기술적 의사결정
  10. 트러블 슈팅
  11. 5분 기록보드

1. 팀원 소개

         

차준호 (팀장)            김신영 (부팀장)            고동원 (팀원)

  유저 도메인, 배포 인프라          결제 도메인          인증/인가, 배포 인프라  

GitHub Blog      GitHub Blog      GitHub Blog


         

우지운 (팀원)            임호진 (팀원)            이의현 (팀원)

알림 도메인          모임 참가, 모니터링          모임 도메인

GitHub Blog      GitHub Blog      GitHub Blog


2. 프로젝트 소개

개발 기간: 2025.07.17 ~ 2025.08.25

왜 MOMO인가?

새로운 사람들과 만나고 싶지만 어디서 어떻게 시작해야 할지 모르는 분들을 위한 지역 기반 모임 플랫폼입니다.

핵심 가치

  • 쉬운 모임 생성: 몇 번의 클릭으로 모임 개설
  • 안전한 만남: 신뢰도 시스템으로 검증된 사용자
  • 편리한 결제: 토스페이먼츠 연동으로 간편 정산
  • 알림 시스템: 관심 모임, 주변 모임 생성 등 다양한 알림을 통해 모임을 참석, 관리

로컬 환경 실행 가이드

로컬 환경 실행 가이드

개발 컨벤션

GitHub 협업 규칙

메서드 명명 규칙

클래스 명명 규칙

RabbitMQ 네이밍


3. 기술 스택

Framework

Java 17 Spring Boot

Libraries

Spring Web Spring WebFlux Spring Data JPA QueryDSL

Database & Cache

MySQL Redis Redisson Flyway

Search & Messaging

Elasticsearch RabbitMQ WebSocket

External API

Toss Payments OAuth2 FCM Slack API

Security

Spring Security JWT

Monitoring & Test

Actuator OpenTelemetry Jaeger Prometheus Grafana Loki

Development Tools

Notion Discord Miro Slack draw.io Swagger Lombok GitHub

Infra & CI/CD

AWS EC2 AWS ECS AWS ECR AWS CloudFront Docker GitHub Actions

4. 아키텍처

ERD

AWS 월간 비용 예상


5. 프로젝트 설계

5.1 와이어프레임

와이어프레임

5.2 ERD

ERD

5.3 패키지 구조

패키지 구조


6. API 명세서

Auth 도메인 API

User 도메인 API

Meeting 도메인 API

Payment 도메인 API

Notification 도메인 API

Category 도메인 API


7. 주요 서비스 플로우

모임 참가

  1. 사용자 모임 참가 신청 사용자가 모임에 참가 신청하면 자격/정원/시간을 검증합니다.
  2. 결제 요청 이벤트 기록/발행 유료 모임이면 결제 정보를 생성하고 PG로 결제 승인을 시도합니다. (무료면 즉시 참가 완료)
  3. 결과 반영 결제가 성공하면 참가가 확정되고, 실패하면 신청이 취소 됩니다.
  4. 알림 및 기록 결과를 사용자/호스트에게 알림으로 보내고, 이력을 저장/발행 합니다.

ERD

ERD


모임 생성

  1. 모임 등록 호스트가 모임 정보를 입력하고 모임을 생성합니다.
  2. 알림 준비 create 이벤트가 메세지 허브로 전달되고 메세지 허브에서 대상 사용자를 조회합니다. 이후 메세지를 가공/조합 합니다.
  3. 알림 발송 알림 서비스에서 푸시/알림을 전송합니다.

ERD


8. 도메인 별 문서

User

Meeting

Participant

Category

Auth

Message Hub

Notification

Payment

Monitoring


9. 기술적 의사결정

Redis 선택 이유

MySQL 선택 이유

Flyway 도입 배경

모니터링 시스템 구축

WebClient 도입 이유

FCM + SSE 선택 배경

RabbitMQ 도입 배경

다중 JWT

AWS ECS + EC2 다중인스턴스 + ECR

NAT Gateway + Bastion

CloudFront


10. 트러블 슈팅

결제 아웃박스 패턴

동시성 보장

공유 커널

JPA 문제해결

인프라 운영

RabbitMQ

WebClient

성능 개선

부하 테스트

Redis 캐싱

Redis 트랜잭션


11. 5분 기록보드

5분 기록보드


About

Momo Team Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages