BAMBOOλ μλͺ λνκ΅ ν΄λ¨Όμ§λ₯μ 보곡νκ³Όμ AI νμ λμ리μ λλ€.
BAMBOOλ λμ리 μκ°λΏλ§ μλλΌ, μνν λμ리 μ΄μ λ° μ€ν°λ κ΄λ¦¬λ₯Ό μν΄ μ체 κ°λ°λ μλΉμ€μ λλ€.
AIμ κ΄μ¬ μλ νμλ€μ΄ ν¨κ» νμ΅νκ³ μ°κ΅¬ν μ μλλ‘ μ²΄κ³μ μΈ κ΄λ¦¬ νκ²½μ μ 곡ν©λλ€.
| κΉμ¬κ΄ | κΉν¬μ¬ |
|---|---|
graph TB
subgraph "Client"
Browser[π Browser]
end
subgraph "Cloudflare CDN"
CF[βοΈ Cloudflare<br/>DNS + SSL + CDN]
end
subgraph "Frontend - S3"
S3[π¦ S3 Static Hosting<br/>smu-bamboo.uk]
end
subgraph "Backend - EC2"
Nginx[π Nginx<br/>Reverse Proxy<br/>SSL/TLS]
Docker[π³ Docker Container<br/>Spring Boot:8080]
end
subgraph "Database"
RDS[(ποΈ AWS RDS<br/>MySQL 8.0)]
Redis[(π΄ Redis<br/>Cache)]
end
subgraph "Storage"
S3Storage[π S3<br/>File Storage]
end
subgraph "CI/CD"
GH[βοΈ GitHub Actions]
DH[π³ Docker Hub<br/>jinseok19/bamboo-server]
end
Browser -->|HTTPS| CF
CF -->|HTTPS| S3
CF -->|HTTPS| Nginx
Nginx -->|HTTP| Docker
Docker --> RDS
Docker --> Redis
Docker --> S3Storage
GH -->|Build & Push| DH
DH -->|Pull Image| Docker
style CF fill:#f9a825
style Docker fill:#0db7ed
style S3 fill:#569A31
style RDS fill:#527FFF
style Redis fill:#DC382D
λλ©μΈ: https://smu-bamboo.uk (Frontend) | https://api.smu-bamboo.uk (Backend)
Java - 21
Spring Boot - 3.4.1
Gradle - 8.12
MySQL - 8.0
Redis - 7
-
Java 21 μ€μΉ νμΈ
java -version # java version "21.x.x" νμΈ -
Docker Desktop μ€μΉ
- Docker Desktop λ€μ΄λ‘λ
- μ€μΉ ν Dockerκ° μ€ν μ€μΈμ§ νμΈ
docker --version docker ps
# env.template νμΌμ .envλ‘ λ³΅μ¬
copy env.template .env
# .env νμΌμ μ΄μ΄ νμν κ° μμ (λλΆλΆ κΈ°λ³Έκ°μΌλ‘ μ¬μ© κ°λ₯)# MySQL, Redis, Grafana, Prometheus μ€ν
docker-compose up -d
# 컨ν
μ΄λ μν νμΈ (healthy νμΈ)
docker-compose ps# λΉλ (ν
μ€νΈ μ μΈ)
gradlew.bat clean build -x test
# μ ν리μΌμ΄μ
μ€ν
gradlew.bat bootRun- API λ¬Έμ: http://localhost:8080/swagger-ui/index.html
- Health Check: http://localhost:8080/health
- Grafana: http://localhost:3000
- Prometheus: http://localhost:9090
# Docker 컨ν
μ΄λ κ΄λ¦¬
docker-compose start # μμ
docker-compose stop # μ€μ§
docker-compose restart # μ¬μμ
docker-compose down # μ€μ§ λ° μμ
docker-compose logs -f # λ‘κ·Έ νμΈ
# MySQL μ μ
docker exec -it bamboo-mysql mysql -u bamboo_user -p
# λΉλ°λ²νΈ: bamboo_password
# Redis μ μ
docker exec -it bamboo-redis redis-cliν¬νΈ μΆ©λ μ:
netstat -ano | findstr :8080
netstat -ano | findstr :3306
netstat -ano | findstr :6379λΉλ μ€λ₯ μ:
gradlew.bat clean
rmdir /s /q .gradle
rmdir /s /q build
gradlew.bat clean build -x testsequenceDiagram
participant Dev as π¨βπ» Developer
participant GH as GitHub
participant GA as GitHub Actions
participant DH as Docker Hub
participant EC2 as EC2 Server
participant User as π Users
Dev->>GH: git push origin develop
GH->>GA: Trigger Workflow
GA->>GA: Build Docker Image
GA->>DH: Push Image
GA->>EC2: SSH & Deploy
EC2->>DH: Pull Latest Image
EC2->>EC2: Stop Old Container
EC2->>EC2: Start New Container
EC2->>EC2: Health Check
EC2-->>User: Service Available
- μ½λ νΈμ:
developλΈλμΉμ push - μλ λΉλ: GitHub Actionsκ° Docker μ΄λ―Έμ§ λΉλ
- μ΄λ―Έμ§ νΈμ: Docker Hubμ μ λ‘λ
- EC2 λ°°ν¬: μλμΌλ‘ μ΅μ μ΄λ―Έμ§ pull & μ€ν
- 무μ€λ¨ λ°°ν¬: Health check ν μ΄μ λ²μ κ΅μ²΄
- μλ£: μ½ 5-8λΆ μμ
- Repository:
jinseok19/bamboo-server - Tags:
latest(μ΅μ ),<commit-sha>(λ²μ λ³)
| νμ | λλ©μΈ | μ©λ |
|---|---|---|
| Frontend | https://smu-bamboo.uk | νλ‘ νΈμλ μΉμ¬μ΄νΈ |
| Frontend | https://www.smu-bamboo.uk | νλ‘ νΈμλ (www) |
| Backend | https://api.smu-bamboo.uk | REST API μλ² |
| Docs | https://api.smu-bamboo.uk/swagger-ui/ | API λ¬Έμ |
π ERD - μμΈν 보기
#μ§μ

