Skip to content

Rix01/myce-server

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎟 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 96.5%
  • HTML 3.2%
  • Other 0.3%