Cloud wiki - 100-hours-a-week/21-iceT-wiki GitHub Wiki
์ด ์ํค๋ ํ๋ก์ ํธ์ ํด๋ผ์ฐ๋ ์ธํ๋ผ, CI/CD, IaC, ๋ณด์ ๋ฐ ์ด์ ๊ด๋ จ ์ ๋ฐ์ ์ธ ๋ด์ฉ์ ์ฒด๊ณ์ ์ผ๋ก ๋ฌธ์ํํ ๊ณต๊ฐ์ ๋๋ค.
๊ฐ ์น์ ์ ์ค์ ์ธํ๋ผ ๊ตฌ์ฑ ๋ฐ ์ด์ ์ ์ฐธ๊ณ ํ ์ ์๋๋ก ๋ค์ด์ด๊ทธ๋จ, ์ฃผ์ ๋๊ตฌ, ์ ์ฑ ๋ฑ์ ํฌํจํ๊ณ ์์ต๋๋ค.
-
ํด๋ผ์ฐ๋ ํ๋ซํผ: AWS (Amazon Web Services) ๊ธฐ๋ฐ
- ๋์ ์์ฅ ์ ์ ์จ(1์), ๊ธ๋ก๋ฒ ๋ฆฌ์ ์ต๋ค
- ๋ฒ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ ์ธก๋ฉด์์ ๊ฐ์ฅ ์ ํฉ
-
์ฃผ์ ์๋น์ค
- EC2 (์ธ์คํด์ค)
- S3 (์คํ ๋ฆฌ์ง)
- IAM (๊ถํ ๊ด๋ฆฌ)
-
์ธ์คํด์ค ํ์
์ ์
- T3, T3a, T4g ๊ณ์ด ๋น๊ต ํ ์ต์ข
T3 ์ธ์คํด์ค ์ ํ
- T4g (ARM ๊ธฐ๋ฐ) ์ฑ๋ฅยท๋น์ฉ ํจ์จ ์ฐ์ํ์ผ๋, ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธํ์ฑ ๋ฌธ์ ๊ณ ๋ ค
- x86 ๊ธฐ๋ฐ T3๊ฐ ํ์ฌ ์์คํ ๊ณผ์ ํธํ์ฑ ๋ฐ ์์ ์ฑ ์ธก๋ฉด์์ ์ต์
- T3, T3a, T4g ๊ณ์ด ๋น๊ต ํ ์ต์ข
T3 ์ธ์คํด์ค ์ ํ
-
์ด๊ธฐ ์ธํ๋ผ ๊ตฌ์ถ ์ ๋ต
- ๋จ์ผ EC2 ์ธ์คํด์ค์ ์๋ฒ ํตํฉ ๊ตฌ์ฑ
- ์ ์ง์ ์ผ๋ก ๋ถ๋ฆฌ ๋ฐ ํ์ฅ ๊ฐ๋ฅํ ๊ตฌ์กฐ ์ค๊ณ
- ๋๊ตฌ: GitHub Actions
-
๋ชฉํ
- ์๋ํ๋ ๋น๋, ํ ์คํธ, ํ์ง ๊ฒ์ฆ
- ํด๋จผ ์๋ฌ ์ฐจ๋จ ๋ฐ ๊ฐ๋ฐ ์์ฐ์ฑ ํฅ์
-
CI ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ
- Checkout
- ์ ์ ๋ถ์ (Lint)
- ๋จ์ ํ ์คํธ (Unit Test)
- (์ ํ) ํตํฉ ํ ์คํธ (Integration Test)
- ์ปค๋ฒ๋ฆฌ์ง 80% ์ด์ ๊ถ์ฅ
-
๋ธ๋์น ์ ๋ต
-
feature/*
โdevelop
โmain
- ๊ธด๊ธ ์์ ์
hotfix/*
ํ์ฉ
-
-
๊ฒฐ๊ณผ ํ์ฉ
- GitHub PR ์๋ ์ฝ๋ฉํธ
- ์คํจ ์ Slack/Email ์๋ฆผ
- README.md ๋น๋ ์ํ ๋ฐฐ์ง ํ์
- ํ์ฌ ์ํ: ์๋ ๋ฐฐํฌ ๊ธฐ๋ฐ
-
ํฅํ ๊ณํ
- GitHub Actions ์ํฌํ๋ก์ฐ ํ์ฅ
- ์๋ํ๋ ์๋ฒ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์ ์ฉ
- ๋ฌด์ค๋จ ๋ฐฐํฌ(Blue/Green, Rolling Update) ์ ๋ต ๊ฒํ
-
๋ณด์ ์ ์ฑ
- SSH ํค ๊ด๋ฆฌ ๊ฐํ
- ์๋ฒ ์ ๊ทผ ์ต์ํ (Bastion Host ๋์ ์์ )
- ํ๊ฒฝ๋ณ ๊ตฌ์ฑ ํ์ผ ๋ถ๋ฆฌ ๊ด๋ฆฌ (.env)
ํญ๋ชฉ | AWS | GCP | Azure |
---|---|---|---|
์์ฅ ์ ์ ์จ | 1๋ฑ | 3๋ฑ | 2๋ฑ |
๊ธ๋ก๋ฒ ๋ฆฌ์ | ๊ฐ์ฅ ๋ง์ | ์ ์ง๋ง ๋น ๋ฅด๊ฒ ํ์ฅ ์ค | ๋ง์ |
๊ฐ์ | ์ธํ๋ผ ์ต๊ฐ, ์๋น์ค ๋ค์์ฑ | Kubernetes, ๋ฐ์ดํฐ ๋ถ์, ๋จธ์ ๋ฌ๋ | ๊ธฐ์ ์์คํ ํตํฉ, ํ์ด๋ธ๋ฆฌ๋ |
๋จ์ | ๋น์ฉ, ๋ณต์กํ ์ธํ | ๋ํ ์ํฐํ๋ผ์ด์ฆ ์ด์ ๊ฒฝํ ๋ถ์กฑ | UI ๋ถํธ, ์ ํ ๊ฐ ์ผ๊ด์ฑ ๋ถ์กฑ |
์ถ์ฒ ๋์ | ๋๊ท๋ชจ ์๋น์ค, ์คํํธ์ ์ฑ์ฅ๊ธฐ | ์คํํธ์ ์ด๊ธฐ, ๋ฐ์ดํฐ ๋ถ์ | ๋๊ธฐ์ , ๊ธ์ต, ๊ณต๊ณต๊ธฐ๊ด |
AWS๋ ๋ฒ์ฉ์ฑ, ์์ ์ฑ, ๊ธ๋ก๋ฒ ์ธํ๋ผ ์ธก๋ฉด์์ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ํ๋จํ์ฌ ์ต์ข ์ ํํ์์ต๋๋ค.
๋จ๊ณ | ๋ด๋น์ | ์ฃผ์ ์ญํ | ๋น๊ณ |
---|---|---|---|
์ฌ์ ์ค๋น | ํด๋ผ์ฐ๋ ๋ด๋น์ + ์ ์ฒด | - ์ฝ๋ ๋ณํฉ ํ์ธ - ํ๊ฒฝ ๋ณ์ ์ต์ ํ - ์๋ฒ ์ํ ์ ๊ฒ - ๋ฐฑ์ ์์ฑ |
๋ฐฐํฌ ์์ ์ 1์๊ฐ ๋์ ์ค๋น |
ํ๋ก ํธ์๋ ๋ฐฐํฌ | noah (FE) | - ๋ก์ปฌ ๋น๋(npm run build) - scp๋ก ์๋ฒ ์ ๋ก๋ - Nginx ๋ฆฌ๋ก๋ - ๋ธ๋ผ์ฐ์ ๋ก ์ ์ ๋์ ํ์ธ |
๋ค์ดํ์ ์์ (์ ์ ํ์ผ ๊ต์ฒด) |
๋ฐฑ์๋ ๋ฐฐํฌ | sophie (BE) | - ๋ก์ปฌ ๋น๋(./gradlew build) - scp๋ก ์๋ฒ ์ ๋ก๋ - SpringBoot ์๋น์ค ์ค๋จ โ ๊ต์ฒด โ ์ฌ์์ - /health API ํฌ์ค ์ฒดํฌ - ์ฃผ์ API ํ ์คํธ |
์ฝ 30์ด ๋ค์ดํ์ ์์ |
AI ์๋ฒ ๋ฐฐํฌ | evan (AI) | - FastAPI ์ฝ๋ ์ค๋น - ๋ชจ๋ธ ๋ฐ ์์ค ์ ๋ก๋ - FastAPI ์๋น์ค ์ค๋จ โ ๊ต์ฒด โ ์ฌ์์ - /health API ํฌ์ค ์ฒดํฌ - AI API ํ ์คํธ |
์ฝ 1๋ถ ๋ค์ดํ์ ์์ |
์ ์ฒด ํตํฉ ์ ๊ฒ | ์ ์ฒด | - ์ฃผ์ ๊ธฐ๋ฅ ์ง์ ์ ๊ฒ(ํ์๊ฐ์
, ๋ก๊ทธ์ธ, ๊ฒ์ ๋ฑ) - ํตํฉ API ์ ์ ํธ์ถ ์ฌ๋ถ ํ์ธ |
10๋ถ๊ฐ ์ง์ค ์ ๊ฒ |
๋ก๊ทธ ๋ชจ๋ํฐ๋ง ๋ฐ ๋กค๋ฐฑ ์ค๋น | ํด๋ผ์ฐ๋ ๋ด๋น์ | - ์์คํ
๋ก๊ทธ, ์๋น์ค ๋ก๊ทธ ์ค์๊ฐ ํ์ธ (tail, journalctl) - ๋ฌธ์ ๋ฐ์ ์ ๋กค๋ฐฑ ์ ์ฐจ ์ค๋น (symlink ๋ณต๊ตฌ) |
30๋ถ๊ฐ ์ง์ค ๊ด์ฐฐ |