Skip to content

Latest commit

 

History

History
209 lines (153 loc) · 11.7 KB

File metadata and controls

209 lines (153 loc) · 11.7 KB

🎟 MYCE : 박람회 예매/운영 서비스

image

배포url : https://www.myce.live

테스트 계정

  • 일반 사용자 및 박람회 관리자 계정 : leoleo / qwer1234
  • 플랫폼관리자 계정 : myceadmin01 / qwe123

🧑‍💻 프로젝트 소개

MICE는 Meeting, IncentiveTravel, Convention, Exhibition/Event의 앞글자를 딴 용어입니다.
MYCE는 위 MICE의 개념을 기반으로, 박람회를 쉽고 스마트하게 운영할 수 있는 박람회 생애주기 관리 플랫폼입니다.
온라인 박람회 개최부터 예약, 결제, 정산까지 원스톱으로 제공하는 종합 서비스를 제공하며 다음과 같은 복합적인 의미를 담아내고자 했습니다.

- Meet Your Clients & Exhibitions : 고객과 박람회를 한곳에서 함께 관리하세요.
- Manage Your Conferences & Expos : 당신의 박람회를 체계적으로 관리하세요.
- Make Your Conventions Easy: 박람회 운영을 쉽고 스마트하게 만들어보세요.

👥 팀원 소개 및 역할

image

✨ 주요 기능

image

🖋️ 분류별 상세 기능

구분 기능
     사용자 관리      
  • 회원가입/로그인: 일반 회원가입, 소셜 로그인 (OAuth2)
  • 회원등급 시스템: Bronze, Silver, Gold, Platinum, Diamond 등급별 혜택                                 
  • 마이페이지: 개인정보 관리, 예약 내역, 결제 내역
  • 다국어 지원: 한국어, 영어 등 다국어 인터페이스
 
    박람회 관리    
  • 박람회 등록: 상세 정보, 이미지, 위치, 일정 설정
  • 카테고리 관리: 다양한 박람회 카테고리 분류
  • 부스 관리: 박람회 내 개별 부스 정보 관리
  • 이벤트 관리: 박람회 내 특별 이벤트 스케줄링
  • 승인 시스템: 플랫폼 관리자의 박람회 승인 프로세스
 
    예약 & 티켓   
  • 티켓 시스템: 다양한 티켓 타입 및 가격 설정
  • 온라인 예약: 실시간 예약 및 재고 관리
  • QR 코드: 예약 확인 및 입장용 QR 코드 생성
  • 비회원 예약: 게스트 사용자 예약 지원
 
    결제 & 정산  
  • 통합 결제: 카드결제, 계좌이체, 가상계좌 등
  • 마일리지 시스템: 등급별 마일리지 적립 및 사용
  • 환불 처리: 자동화된 환불 프로세스
  • 정산 관리: 박람회 주최자 정산 시스템
 
     광고 관리    
  • 배너 광고: 메인페이지 광고 위치별 관리
  • 광고 신청: 광고주 신청 및 승인 시스템
  • 요금 설정: 위치별 광고 요금 관리
 
    소통 & 지원     
    관리자 기능   
  • 대시보드: 통계 및 현황 모니터링
  • 박람회/광고 생애 관리: 신청 승인 및 결제/정산 처리
  • 사용자 관리: 회원 정보 및 권한 관리
  • 시스템 설정: 요금, 템플릿 등 시스템 설정
 

🌟 주요 특징

  • 실시간 통신: WebSocket(STOMP)과 SSE를 활용한 실시간 채팅 및 알림 전달
  • 결제 : 토스페이먼츠 OpenAPI를 활용한 결제 시스템 구축
  • 보안: Spring Security + JWT를 통한 인증/인가 처리
  • 확장성: Docker 컨테이너화 및 AWS 클라우드 인프라 설정
  • 모니터링: Prometheus & Grafana를 통한 실시간 시스템 모니터링
  • API 문서화: Swagger를 통한 자동화된 API 문서화 설정

🏗 시스템 아키텍처

image

[자동화된 인프라 구축]

  • 일관성 있고 재현 가능한 배포 환경 구축할 수 있도록 코드화
  • Terraform: AWS 리소스(EC2, S3, CloudFront 등) 자동 생성 및 관리
  • Ansible: 서버 환경 설정과 소프트웨어 설치 자동화

[백엔드 배포]

  • EC2 + Docker: 컨테이너 기반 백엔드 서비스 배포
  • Auto Scaling: 트래픽에 따른 인스턴스 자동 확장/축소

[데이터베이스]

  • MySQL: 회원, 박람회, 결제 등 관계형 데이터 저장
  • MongoDB: 채팅 메시지, 알림 등 비정형 데이터 저장
  • Redis: JWT 토큰, 세션, 채팅 캐시 등 고속 처리 데이터

[프론트엔드 배포]

  • S3 Bucket #1: React 빌드 파일 호스팅
  • S3 Bucket #2: 사용자 업로드 이미지/미디어 파일 저장
  • CloudFront: CDN을 통한 글로벌 빠른 컨텐츠 전송 및 캐싱

[모니터링 시스템]

  • Prometheus: 메트릭 수집 및 저장
  • Grafana: 실시간 대시보드를 통한 시각화 모니터링

[CI/CD 파이프라인]

  • GitHub Actions을 사용한 완전 자동화 : Develop 브랜치 Push될 때 자동 빌드 및 배포 로직이 동작
  • Backend: Docker 이미지 빌드 → ECR 업로드 → EC2 자동 배포
  • Frontend: React 빌드 → S3 업로드 → CloudFront 캐시 무효화

[성능 최적화 및 테스트]

  • Application Load Balancer: 다중 인스턴스 트래픽 분산
  • K6: 부하 테스트를 통한 성능 임계점 측정
  • Auto Scaling: CPU/메모리 사용률 기반 자동 스케일링


🛠 기술 스택

[Frontend]

  • React 19.1.1
  • Vite 7.0.6
  • JavaScript ES6+
  • CSS3 Modules

[Backend]

  • Spring Boot 3.5.4
  • Java 21
  • Spring Security
  • JWT

[Database]

  • MySQL 8.0
  • MongoDB 4.4
  • Redis 6.0

[Infrastructure]

  • Amazon AWS
    • EC2, S3, CloudFront
  • Terraform, Ansible
  • Github Action
  • Gradle

[Development]

  • IntelliJ IDEA
  • VS Code
  • Postman
  • Github

📁 프로젝트 패키징 구조

체계적인 패키지 구조를 기반으로, 모든 기능 개발 시 일관된 개발 방식을 적용하였습니다.

Frontend Architecture

src/
├── 각 분류별 패키지/         # 페이지별 컴포넌트
│   ├── components/
│   ├── layout/
│   └── pages/
├── common/               # 재사용 가능한 공통 컴포넌트
├── services/             # API 통신 레이어
├── utils/                # 공통 유틸리티 함수
├── hooks/                # 커스텀 React Hooks
├── context/              # 전역 상태 관리
└── routs/                # 전체 라우터 관리

Backend Architecture

src/
├── 각 분류별 패키지
│   ├── controller/           # REST API 엔드포인트
│   ├── service/              # 비즈니스 로직 처리
│       ├── impl/             # 확장성을 위한 interface 구현
│       └── mapper/           # Entity-Dto 변환 레이어
│   ├── repository/           # 데이터 액세스 레이어
│   ├── entity/               # JPA/MongoDB 엔티티
│   ├── dto/                  # 데이터 전송 객체
│   └── mongodb/
├── common/                   # 공통 로직 처리
│   ├── aop/                  # 공통 로거 
│   ├── exception/            # CustomException 처리
│   └── util/                 # 공통 사용 util
├── auth/                     # 인증/인가 처리
│   └── security/
└── config/                   # 설정 클래스

🗄 ERD

전반적인 박람회 정보 관리 및 예약 정보 관리, 결제 정보 관리에 중점을 두고 설계하였습니다.

02 1조_MYCE_ERD

🔥 성능 최적화 테스트

1) Redis 도입으로 인한 실시간 채팅 성능 향상

MYCE 채팅 시스템에서는 MongoDB에 저장된 채팅 데이터의 빠른 조회와 전송을 위해 Redis 캐싱 시스템을 도입했습니다.
Redis는 메모리 기반 Key-Value 저장소로 디스크 I/O 지연 없이 빠른 응답이 가능하여, 실시간성이 핵심인 채팅 서비스에 최적화된 솔루션이라고 판단했습니다. 실제 성능 테스트를 진행한 결과, MongoDB 대비 Redis를 활용한 캐싱 시스템에서 현저한 성능 향상을 확인할 수 있었습니다.

  • 메시지 로딩: 1,215.60ms → 492.70ms (59.4% 향상)
  • 메시지 전송: 201.74ms → 104.40ms (48.2% 향상)
image

2) 안정적인 서비스를 위한 로드밸런싱 및 스케일링 성능 테스트

인기 박람회 예매를 위해 몰리는 트래픽에도 안정적인 서비스를 구축하기 위해 로드 밸런싱과 스케일링 테스트를 진행했습니다.
분산은 ALB(아마존에서 제공하는 로드 밸런서)로 스케일링은 EKS(아마존 쿠버네티스 서비스)를 사용하였으며, ALB를 사용하여 사용자들이 서버에 접근하는 여러가지 트래픽 부하 테스트를 진행하며 프로메테우스그라파나로 모니터링을 진행하였습니다.
그 결과, 800명이 도메인에 접속하는 테스트를 진행해도 오류나 지연 없이 서버가 잘 유지되는 것을 확인할 수 있었습니다.

image