숭실대학교 학생들을 위한 종합 서비스 플랫폼 ASSU의 백엔드 서버입니다.
대학교 주변 제휴 혜택은 정보가 분산되어 있어 학생은 이용이 번거롭고, 학생회는 매 학기 제휴 관리 부담이 컸으며, 제휴업체는 인증 과정의 비효율과 홍보 효과 측정의 한계를 겪고 있었습니다.
A:SSU는 제휴 계약부터 이용까지의 흐름을 하나의 시스템으로 통합해, 위치 기반 검색과 모바일 인증으로 이용 절차를 단순화하고 제휴 이용 현황을 데이터로 관리할 수 있도록 설계된 플랫폼입니다.
- 🔐 다중 인증 시스템: 일반 회원가입, SSU 포털 연동, 토큰 기반 인증
- 💬 실시간 채팅: WebSocket 기반 실시간 메시징
- 📍 위치 기반 서비스: 공간 데이터를 활용한 지도 서비스
- 🔔 푸시 알림: Firebase FCM을 통한 실시간 알림
- 📊 관리자 시스템: 종합적인 백오피스 관리 기능
※ 전체 기능 중 직접 담당한 기능은 볼드로 표시했습니다.
| 기능 | 설명 |
|---|---|
| 👤 회원 관리 | 학생/파트너 회원가입 및 프로필 관리 |
| 🔔 푸시 알림 | FCM 기반 실시간 알림 (Outbox 패턴 적용) |
| 📱 디바이스 관리 | FCM 토큰 관리, 멀티 디바이스 지원 |
| 🏦 매장 관리 | 파트너 매장 등록·수정, 위치 기반 매장 검색 |
| 🔐 인증/인가 | JWT 기반 인증, 학생·파트너·관리자 역할 관리 |
| 🤝 제휴 관리 | 제휴 제안·수락 및 제휴 현황 관리 |
| 💬 실시간 채팅 | WebSocket 기반 1:1 채팅 시스템 |
| 📍 위치 기반 서비스 | 공간 데이터 기반 주변 매장 탐색 |
| ⭐ 리뷰 시스템 | 매장 리뷰 작성 및 관리 |
| 📊 관리자 기능 | 사용자·매장·제휴 관리 및 통계 제공 |
| 🛡️ 신고 시스템 | 부적절한 콘텐츠 신고 및 처리 |
| 📖 API 문서화 | Swagger UI를 통한 API 문서 제공 |
| 항목 | 사용 기술 / 라이브러리 |
|---|---|
| 백엔드 프레임워크 | Spring Boot 3.5.3 |
| 언어 | Java 17, Kotlin |
| 데이터베이스 | MariaDB |
| ORM | Spring Data JPA (Hibernate) |
| 보안 | Spring Security + JWT |
| 캐시 | Redis |
| 메시지 큐 | RabbitMQ |
| 푸시 알림 | Firebase Cloud Messaging (FCM) |
| 파일 저장소 | AWS S3 |
| 실시간 통신 | WebSocket, STOMP |
| 공간 데이터 | Hibernate Spatial, JTS |
| API 문서화 | SpringDoc OpenAPI (Swagger) |
| 빌드 도구 | Gradle |
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Mobile App │ │ Web Client │ │ Admin Panel │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐
│ Load Balancer │
└─────────────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ App Server │ │ App Server │ │ App Server │
│ (Blue/Green) │ │ (Blue/Green) │ │ (Blue/Green) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────────────────────────────────────────────┐
│ Data Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ MariaDB │ │ Redis │ │ RabbitMQ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────┐
│ External Services │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ AWS S3 │ │ Firebase FCM│ │ Kakao API │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────┘
src/main/java/com/assu/server/
├── domain/ # 도메인별 비즈니스 로직
│ ├── admin/ # 관리자 관리
│ ├── auth/ # 인증 및 권한
│ ├── certification/ # 인증서 관리
│ ├── chat/ # 실시간 채팅
│ ├── common/ # 공통 엔티티
│ ├── deviceToken/ # 디바이스 토큰 관리
│ ├── inquiry/ # 문의 관리
│ ├── map/ # 지도 서비스
│ ├── mapping/ # 학생-관리자 매핑
│ ├── member/ # 회원 관리
│ ├── notification/ # 알림 시스템
│ ├── partner/ # 파트너 관리
│ ├── partnership/ # 파트너십 관리
│ ├── report/ # 신고 처리
│ ├── review/ # 리뷰 시스템
│ ├── store/ # 매장 관리
│ ├── suggestion/ # 건의사항
│ ├── term/ # 약관 관리
│ └── user/ # 사용자 관리
├── global/ # 전역 설정 및 유틸리티
│ ├── apiPayload/ # API 응답 형식
│ ├── config/ # 설정 클래스
│ ├── exception/ # 예외 처리
│ └── util/ # 유틸리티 클래스
├── infra/ # 외부 서비스 연동
│ ├── aligo/ # SMS 서비스
│ ├── firebase/ # FCM 푸시 알림
│ └── s3/ # AWS S3 연동
└── ServerApplication.java # 메인 애플리케이션
각 도메인은 다음과 같은 계층 구조를 따릅니다:
domain/example/
├── controller/ # REST API 컨트롤러
├── service/ # 비즈니스 로직
├── repository/ # 데이터 액세스
├── entity/ # JPA 엔티티
├── dto/ # 데이터 전송 객체
├── converter/ # DTO-Entity 변환
└── exception/ # 도메인별 예외
프로젝트는 GitHub Actions를 사용한 자동화된 CI/CD 파이프라인을 구축하고 있습니다.
- 트리거:
develop브랜치에 Push 또는 PR - 과정: 코드 빌드 → 테스트 실행 → 정적 분석
- 트리거:
main브랜치에 Push - 과정: Docker 이미지 빌드 → DockerHub 푸시 → EC2 배포
무중단 배포를 위해 Blue-Green 배포 전략을 사용합니다.
프로젝트에 대한 문의사항이 있으시면 다음을 통해 연락해 주세요:
- 팀 이메일: assu.soongsil.cse@gmail.com
A:SSU © 2026