V2 CD Pipeline.md - 100-hours-a-week/KTB4-17th-wiki GitHub Wiki
CI/CD ์ค๊ณ
0. ๊ธฐ์กด CD ํ์ดํ๋ผ์ธ์ ํ๊ณ
V1์์๋ GitHub Actions๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ค EC2์ SSH๋ก ์ ์ํ์ฌ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ณ , Nginx ๊ธฐ๋ฐ Blue/Green ๋ฐฉ์์ผ๋ก ๋ฐฐํฌํ์๋ค.
CD์ ํ๊ณ
V1์์๋ ์ ๊ท ์ปจํ ์ด๋๊ฐ Health Check๋ฅผ ํต๊ณผํ๋ฉด ์ ์ ๋ฐฐํฌ๋ก ํ๋จํ๊ณ ํธ๋ํฝ์ ์ ํํ๋ค.
๊ทธ๋ฌ๋ Health Check๋ง์ผ๋ก๋ ํน์ API ์ค๋ฅ, ์๋น์ค ๊ฐ ์ฐ๋ ์คํจ ๋ฑ ์ค์ ๊ธฐ๋ฅ์ ์ ์ ๋์๊น์ง ๋ณด์ฅํ ์ ์๋ค.
๋ํ ๋ฐฐํฌ ์ดํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฅ์ ๋ฅผ ํ์ธํ๊ณ ์ด์ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑํด์ผ ํ๋ฏ๋ก ์ฅ์ ๊ฐ์ง์ ๋ณต๊ตฌ ๊ณผ์ ์ ์๋ ๊ฐ์ ์ด ํ์ํ๋ค.
๋ฐ๋ผ์ V2์์๋ ๋ค์์ ๋ชฉํ๋ก CI/CD ํ์ดํ๋ผ์ธ์ ๊ฐ์ ํ๋ค.
- Production ๋ฐฐํฌ ์ ์ค์ ํ๊ฒฝ์์ ํต์ฌ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๋ค.
- ๋ฐฐํฌ ์ค Task๊ฐ ์ ์์ ์ผ๋ก ์์ ํ๋๋์ง ๊ฒ์ฆํ๋ค.
- ๋ฐฐํฌ ์ดํ ์ค์ ์๋น์ค ์งํ๋ฅผ ํตํด ์ด์ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
- ๋ฐฐํฌ ์คํจ ์ ์ด์ ์ ์ Deployment๋ก ์๋ ๋กค๋ฐฑํ๋ค.
1. CD ํ์ดํ๋ผ์ธ ์์ฝ
2. ์ ์ฒด ๋ฐฐํฌ ์ ๋ต
V2์์๋ ๋ฐฐํฌ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ 3๋จ๊ณ ๊ฒ์ฆ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค.
| ๋จ๊ณ | ๊ฒ์ฆ ๋ชฉ์ | ๊ฒ์ฆ ๋ฐฉ๋ฒ | ์คํจ ์ ์ฒ๋ฆฌ |
|---|---|---|---|
| Staging Smoke Test | ์ฃผ์ ๊ธฐ๋ฅ์ด ์ค์ ํ๊ฒฝ์์ ์ ์ ๋์ํ๋๊ฐ | Staging ECS + Staging DB์์ ํต์ฌ ์๋๋ฆฌ์ค ํ ์คํธ | Production ๋ฐฐํฌ ์ค๋จ |
| ๋ฐฐํฌ์ํ ๊ฒ์ฆ | ์ ๊ท Task๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๊ณ ์์ ํ๋๋๊ฐ | ECS Deployment Circuit Breaker | Deployment ์คํจ ๋ฐ ์๋ ๋กค๋ฐฑ |
| Production ๊ฒ์ฆ | ์ค์ ํธ๋ํฝ์์๋ ์ ๊ท ๋ฒ์ ์ด ์ ์ ๋์ํ๋๊ฐ | CloudWatch Alarm | Deployment ์คํจ ๋ฐ ์๋ ๋กค๋ฐฑ |
๊ฐ ๋จ๊ณ๋ ์๋ก ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ๊ฒ์ฆํ๋ค.
- Staging Smoke Test: ๊ธฐ๋ฅ ๋ฐ ์๋น์ค ์ฐ๋ ๊ฒ์ฆ
- Circuit Breaker: ๋ฐฐํฌ ๋ฐ Task ์์ ์ฑ ๊ฒ์ฆ
- CloudWatch Alarm: ์ค์ ์ด์ ํธ๋ํฝ์์ ๋ฐ์ํ๋ ์ด์ ๊ฒ์ฆ
2-1. Staging ํ๊ฒฝ ๊ตฌ์ฑ
Production ๋ฐฐํฌ ์ ์ ์ค์ ECS ํ๊ฒฝ์์ ํต์ฌ ์ฌ์ฉ์ ์๋๋ฆฌ์ค๋ฅผ ๊ฒ์ฆํ๊ธฐ ์ํด Staging ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ค.
Staging ํ๊ฒฝ์ ์์ ์ด์ํ์ง ์๊ณ ๋ฐฐํฌ ์์ ์๋ง ํ์ฑํํ๋ค.
์ฃผ์ ์ค์
| ํญ๋ชฉ | ์ค์ |
|---|---|
| ECS Cluster | Production๊ณผ ๋์ผ Cluster ์ฌ์ฉ |
| ECS Service | Staging ์ ์ฉ Service |
| ํ์์ Desired Count | 0 |
| ํ ์คํธ ์ Desired Count | 1 |
| DB | Staging ์ ์ฉ DB (EC2 t3.micro) |
| ALB Target Group | Staging ์ ์ฉ Target Group |
| ALB | ๊ธฐ์กด ALB ๊ณต์ |
| ์ ๊ทผ ๊ฒฝ๋ก | staging.star23.com |
| ์คํ ์ฃผ์ฒด | GitHub Actions |
| ์ข ๋ฃ ์กฐ๊ฑด | Smoke Test ์ฑ๊ณต ๋๋ ์คํจ ํ ํญ์ ์ข ๋ฃ |
Staging ํ๊ฒฝ์ Production๊ณผ ECS Cluster ๋ฐ ALB๋ฅผ ๊ณต์ ํ์ง๋ง Target Group, ECS Service, DB๋ฅผ ๋ถ๋ฆฌํ์ฌ ํ ์คํธ๊ฐ Production ํ๊ฒฝ์ ์ํฅ์ ์ฃผ์ง ์๋๋ก ํ๋ค.
3. Production ๋ฐฐํฌ ์ ๋ต
3-1. Rolling Deployment ์ฃผ์ ์ค์
| ์ค์ | ์ด๊ธฐ ์ค์ | ๋ชฉ์ |
|---|---|---|
| Deployment Strategy | Rolling | Task๋ฅผ ์ ์ง์ ์ผ๋ก ์ ๊ท ๋ฒ์ ์ผ๋ก ๊ต์ฒด |
minimumHealthyPercent |
100% | ๋ฐฐํฌ ์ค ๊ธฐ์กด ์๋น์ค ์ฒ๋ฆฌ ์ฉ๋ ์ ์ง |
maximumPercent |
200% | ๊ธฐ์กด Task๋ฅผ ์ ์งํ๋ฉด์ ์ ๊ท Task ์ฐ์ ์คํ |
| Deployment Circuit Breaker | Enable | ์ ๊ท Deployment ์คํจ ๊ฐ์ง |
| Circuit Breaker Rollback | Enable | ์คํจ ์ ์ด์ ์ ์ Deployment ๋ณต๊ตฌ |
3-2. Deployment Circuit Breaker
Rolling Deployment ๊ณผ์ ์์ ์ ๊ท Task๊ฐ ์ ์์ ์ผ๋ก ์คํ๋์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ธฐ ์ํด ECS Deployment Circuit Breaker๋ฅผ ํ์ฑํํ๋ค.
Circuit Breaker๋ฅผ ํตํด ์ ๊ท Deployment๊ฐ ์ ์ ์ํ์ ๋๋ฌํ์ง ๋ชปํ๋ ์ํฉ์ ๊ฐ์งํ์ฌ Deployment๋ฅผ ์คํจ ์ฒ๋ฆฌํ๋ค.
์ฃผ์ ์ค์
| ํญ๋ชฉ | ์ค์ |
|---|---|
| Circuit Breaker | Enable |
| Rollback | Enable |
| ์ ์ฉ ๋์ | Production ECS Service |
| ์คํจ ๊ฒฐ๊ณผ | Deployment FAILED |
| ๋ณต๊ตฌ ๋์ | ์ด์ ์ ์ COMPLETED Deployment |
์ด๋ฅผ ํตํด ์ ๊ท Task๊ฐ ์ ์์ ์ผ๋ก ๋ฐฐํฌ๋์ง ๋ชปํ๋ ๊ฒฝ์ฐ ECS๊ฐ ์ด์ ์ ์ Deployment๋ก ์๋ ๋ณต๊ตฌํ๋ค.
3-3. Production ๋ฐฐํฌ ์ดํ ๊ฒ์ฆ
Task๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๊ณ Health Check๋ฅผ ํต๊ณผํ๋ค๊ณ ํด์ ์ค์ ์๋น์ค์ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ์์์ ๋ณด์ฅํ ์๋ ์๋ค.
๋ฐ๋ผ์ Production์ ์ค์ ํธ๋ํฝ์ด ์ ์ ๋ ์ดํ CloudWatch Alarm์ ์ด์ฉํ์ฌ ์๋น์ค ์ํ๋ฅผ ์ถ๊ฐ๋ก ๊ฒ์ฆํ๋ค.
3-3-1. ์ด๊ธฐ ๋ชจ๋ํฐ๋ง ์งํ
| ์งํ | ๋ชฉ์ | ๊ธฐ์ค |
|---|---|---|
| ALB Target 5XX | ์ ๊ท Application ์ค๋ฅ ํ์ง | SLO ์ ์ ํ ๊ฒฐ์ |
| Target Response Time | ์๋ต ์ฑ๋ฅ ์ ํ ํ์ง | SLO ์ ์ ํ ๊ฒฐ์ |
3-3-2. CloudWatch Alarm๊ณผ ์๋ ๋กค๋ฐฑ
Production ECS Deployment์ CloudWatch Alarm์ ์ฐ๊ฒฐํ๋ค.
์ ๊ท ๋ฒ์ ๋ฐฐํฌ ๊ณผ์ ์์ ์ง์ ๋ CloudWatch Alarm์ด ALARM ์ํ๊ฐ ๋๋ฉด ํด๋น Deployment๋ฅผ ์คํจ๋ก ํ๋จํ๊ณ ์๋ ๋กค๋ฐฑํ๋ค.
์ฃผ์ ์ค์
| ํญ๋ชฉ | ์ค์ |
|---|---|
| Deployment Alarm | Enable |
| Rollback | Enable |
| Primary Metric | ALB Target 5XX |
| Latency Metric | Target Response Time |
| Bake Time | ์ด๊ธฐ๊ฐ ๊ฒ์ฆ ํ์ |
| Alarm ๋ฐ์ ์ | Deployment FAILED |
| Rollback ๋์ | Last COMPLETED Deployment` |
์ ์ฒด ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
Rolling Deployment ์๋ฃ
โ ์ค์ ํธ๋ํฝ ์ฒ๋ฆฌ
โ CloudWatch Alarm ๊ด์ฐฐ
โ ์ ์ ์ COMPLETED / ์ด์ ์ FAILED
โ ์ด์ ์ Automatic Rollback
์ค์ ์๋น์ค ์งํ๋ฅผ ๊ด์ฐฐํจ์ผ๋ก์จ Health Check๋ง์ผ๋ก ๋ฐฐํฌ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ V1์ ํ๊ณ๋ฅผ ๋ณด์ํ๋ค.
4. ์ต์ข ๋ฐฐํฌ ์ฑ๊ณต ๊ธฐ์ค
V1์์๋ Health Check ํต๊ณผ ์ฌ๋ถ๋ง์ผ๋ก ๋ฐฐํฌ ์ฑ๊ณต์ ํ๋จํ์๋ค.
V2์์๋ ๋ฐฐํฌ ์ฑ๊ณต์ ๋ค์ ์ธ ๋จ๊ณ๋ก ํ์ฅํ๋ค.
- Staging Smoke Test ํต๊ณผ
- ์ค์ ๋ฐฐํฌ ํ๊ฒฝ๊ณผ ์ ์ฌํ ํ๊ฒฝ์์ ํต์ฌ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ๋์ํ๋ค.
- Production Deployment Steady State ๋๋ฌ
- ์ ๊ท Task๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๊ณ ECS Deployment๊ฐ Steady State์ ๋๋ฌํ๋ค.
- Production ์งํ ์ ์
- ์ค์ ์ฌ์ฉ์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๋์ ์ง์ ๋ CloudWatch Alarm์ด ๋ฐ์ํ์ง ์๋๋ค.
์ธ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ ๊ฒฝ์ฐ์๋ง Production Deployment๋ฅผ ์ต์ข ์ฑ๊ณต์ผ๋ก ํ๋จํ๋ค.
์ด๋ฅผ ํตํด V1์ ๋จ์ Health Check ๊ธฐ๋ฐ ๋ฐฐํฌ ๊ฒ์ฆ๊ณผ ์๋ ๋กค๋ฐฑ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๊ณ , ๋ฐฐํฌ ์ ๊ธฐ๋ฅ ๊ฒ์ฆ๋ถํฐ ๋ฐฐํฌ ํ ์ด์ ์งํ ๊ฒ์ฆ ๋ฐ ์๋ ๋ณต๊ตฌ๊น์ง ํฌํจํ๋ CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๋ค.
5. ๊ฐ์ ์ ์ด ์ ๋ฆฌ
| ๊ตฌ๋ถ | V1 | V2 | ๊ฐ์ ์ |
|---|---|---|---|
| ๋ฐฐํฌ ๋ฐฉ์ | Nginx ๊ธฐ๋ฐ Blue/Green | ECS Rolling Deployment | ECS Service ๊ธฐ๋ฐ์ ์ ์ง์ Task ๊ต์ฒด |
| ๋ฐฐํฌ ์ค ๊ฐ์ฉ์ฑ | ์ผ์ ์๊ฐ Blue/Green ํ๊ฒฝ ์ ์ง | minimumHealthyPercent๋ก ์ต์ Healthy Task ์ ์ง |
Rolling ์ค ์๋น์ค ์ฒ๋ฆฌ ์ฉ๋ ์ ์ง |
| ๋ฐฐํฌ ์์ ์ ์ด | Blue/Green ์ปจํ ์ด๋ ์ง์ ๊ด๋ฆฌ | maximumPercent๋ก ์ต๋ Task ์ ์ ์ด |
๋ฐฐํฌ ์ค ์ถ๊ฐ ์์ ์ฌ์ฉ๋ ์ ์ด |
| ๋ฐฐํฌ ์์ ์ฑ ํ๋จ | Health Check | Stag ํ๊ฒฝ Smoke Test, Steady State | ์ ๊ท Task์ ๊ธฐ๋ ๋ฐ ๋ฐฐํฌ ์์ ํ ์คํจ ์๋ ๊ฐ์ง |
| ๋ฐฐํฌ ํ ๊ฒ์ฆ | ๋ณ๋ ๊ฒ์ฆ ์์ | CloudWatch Alarm์ผ๋ก 5XX, Response Time ๊ด์ฐฐ | ์ค์ ์ฌ์ฉ์ ํธ๋ํฝ ๊ธฐ๋ฐ ์ด์ ํ์ง |
| ๋ฐฐํฌ ์ฑ๊ณต ๊ธฐ์ค | Health Check ํต๊ณผ | Steady State ๋๋ฌ + ์ผ์ ์๊ฐ ๋์ Alarm ๋ฏธ๋ฐ์ | ๋จ์ ๊ธฐ๋ ์ฌ๋ถ์์ ์ค์ ์๋น์ค ์ํ๊น์ง ๊ฒ์ฆ ๋ฒ์ ํ๋ |
| ์ฅ์ ๊ฐ์ง | ๊ฐ๋ฐ์๊ฐ ์ง์ ํ์ธ | Circuit Breaker + CloudWatch Alarm | ๋ฐฐํฌ ๊ณผ์ ์ ์ฅ์ ์๋ ๊ฐ์ง |
| Rollback ์คํ | EC2 ์ ์ ํ ์๋ ๋ณต๊ตฌ | Automatic Rollback | ์ฅ์ ๋ฐ์ ์ ์ด์ ์ ์ Deployment๋ก ์๋ ๋ณต๊ตฌ |
| Rollback ๋์ | ๊ฐ๋ฐ์๊ฐ ์ด์ ์ด๋ฏธ์ง/์ปจํ ์ด๋ ๋ฒ์ ํ์ธ | Last COMPLETED Deployment |
๋ณต๊ตฌ ๊ณผ์ ์๋ํ |
| ์ด์ ๊ด๋ฆฌ | SSH ๋ฐ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์ค์ฌ | ECS Service ์ค์ฌ | ๊ด๋ฆฌ ์ง์ ๊ฐ์ |