λ°°ν¬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: λ°λν μ΄μμ μ½κ³ μ€λ§νΈνκ² λ§λ€μ΄λ³΄μΈμ.
| κ΅¬λΆ | κΈ°λ₯ |
|---|---|
| Β Β Β μ¬μ©μ κ΄λ¦¬ Β Β Β | Β
|
| Β Β Β λ°λν κ΄λ¦¬ Β | Β
|
| Β Β Β μμ½ & ν°μΌΒ | Β
|
| Β Β Β κ²°μ & μ μ° | Β
|
| Β Β Β Β κ΄κ³ κ΄λ¦¬ Β | Β
|
| Β Β Β μν΅ & μ§μΒ | Β
|
| Β Β Β κ΄λ¦¬μ κΈ°λ₯Β | Β
|
- μ€μκ° ν΅μ : WebSocket(STOMP)κ³Ό SSEλ₯Ό νμ©ν μ€μκ° μ±ν λ° μλ¦Ό μ λ¬
- κ²°μ : ν μ€νμ΄λ¨ΌμΈ OpenAPIλ₯Ό νμ©ν κ²°μ μμ€ν ꡬμΆ
- 보μ: Spring Security + JWTλ₯Ό ν΅ν μΈμ¦/μΈκ° μ²λ¦¬
- νμ₯μ±: Docker 컨ν μ΄λν λ° AWS ν΄λΌμ°λ μΈνλΌ μ€μ
- λͺ¨λν°λ§: Prometheus & Grafanaλ₯Ό ν΅ν μ€μκ° μμ€ν λͺ¨λν°λ§
- API λ¬Έμν: Swaggerλ₯Ό ν΅ν μλνλ API λ¬Έμν μ€μ
[μλνλ μΈνλΌ κ΅¬μΆ]
- μΌκ΄μ± μκ³ μ¬ν κ°λ₯ν λ°°ν¬ νκ²½ ꡬμΆν μ μλλ‘ μ½λν
- 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
체κ³μ μΈ ν¨ν€μ§ ꡬ쑰λ₯Ό κΈ°λ°μΌλ‘, λͺ¨λ κΈ°λ₯ κ°λ° μ μΌκ΄λ κ°λ° λ°©μμ μ μ©νμμ΅λλ€.
src/
βββ κ° λΆλ₯λ³ ν¨ν€μ§/ # νμ΄μ§λ³ μ»΄ν¬λνΈ
β βββ components/
β βββ layout/
β βββ pages/
βββ common/ # μ¬μ¬μ© κ°λ₯ν κ³΅ν΅ μ»΄ν¬λνΈ
βββ services/ # API ν΅μ λ μ΄μ΄
βββ utils/ # κ³΅ν΅ μ νΈλ¦¬ν° ν¨μ
βββ hooks/ # 컀μ€ν
React Hooks
βββ context/ # μ μ μν κ΄λ¦¬
βββ routs/ # μ 체 λΌμ°ν° κ΄λ¦¬
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/ # μ€μ ν΄λμ€
μ λ°μ μΈ λ°λν μ 보 κ΄λ¦¬ λ° μμ½ μ 보 κ΄λ¦¬, κ²°μ μ 보 κ΄λ¦¬μ μ€μ μ λκ³ μ€κ³νμμ΅λλ€.
MYCE μ±ν
μμ€ν
μμλ MongoDBμ μ μ₯λ μ±ν
λ°μ΄ν°μ λΉ λ₯Έ μ‘°νμ μ μ‘μ μν΄ Redis μΊμ± μμ€ν
μ λμ
νμ΅λλ€.
Redisλ λ©λͺ¨λ¦¬ κΈ°λ° Key-Value μ μ₯μλ‘ λμ€ν¬ I/O μ§μ° μμ΄ λΉ λ₯Έ μλ΅μ΄ κ°λ₯νμ¬, μ€μκ°μ±μ΄ ν΅μ¬μΈ μ±ν
μλΉμ€μ μ΅μ νλ μ루μ
μ΄λΌκ³ νλ¨νμ΅λλ€.
μ€μ μ±λ₯ ν
μ€νΈλ₯Ό μ§νν κ²°κ³Ό, MongoDB λλΉ Redisλ₯Ό νμ©ν μΊμ± μμ€ν
μμ νμ ν μ±λ₯ ν₯μμ νμΈν μ μμμ΅λλ€.
- λ©μμ§ λ‘λ©: 1,215.60ms β 492.70ms (59.4% ν₯μ)
- λ©μμ§ μ μ‘: 201.74ms β 104.40ms (48.2% ν₯μ)
μΈκΈ° λ°λν μλ§€λ₯Ό μν΄ λͺ°λ¦¬λ νΈλν½μλ μμ μ μΈ μλΉμ€λ₯Ό ꡬμΆνκΈ° μν΄ λ‘λ λ°Έλ°μ±κ³Ό μ€μΌμΌλ§ ν
μ€νΈλ₯Ό μ§ννμ΅λλ€.
λΆμ°μ ALB(μλ§μ‘΄μμ μ 곡νλ λ‘λ λ°Έλ°μ)λ‘ μ€μΌμΌλ§μ EKS(μλ§μ‘΄ μΏ λ²λ€ν°μ€ μλΉμ€)λ₯Ό μ¬μ©νμμΌλ©°, ALBλ₯Ό μ¬μ©νμ¬ μ¬μ©μλ€μ΄ μλ²μ μ κ·Όνλ μ¬λ¬κ°μ§ νΈλν½ λΆν ν
μ€νΈλ₯Ό μ§ννλ©° νλ‘λ©ν
μ°μ€μ κ·ΈλΌνλλ‘ λͺ¨λν°λ§μ μ§ννμμ΅λλ€.
κ·Έ κ²°κ³Ό, 800λͺ
μ΄ λλ©μΈμ μ μνλ ν
μ€νΈλ₯Ό μ§νν΄λ μ€λ₯λ μ§μ° μμ΄ μλ²κ° μ μ μ§λλ κ²μ νμΈν μ μμμ΅λλ€.