Cloud wiki - 100-hours-a-week/21-iceT-wiki GitHub Wiki

๐ŸŒŽ Cloud Wiki

์ด ์œ„ํ‚ค๋Š” ํ”„๋กœ์ ํŠธ์˜ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ, CI/CD, IaC, ๋ณด์•ˆ ๋ฐ ์šด์˜ ๊ด€๋ จ ์ „๋ฐ˜์ ์ธ ๋‚ด์šฉ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ฌธ์„œํ™”ํ•œ ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.

๊ฐ ์„น์…˜์€ ์‹ค์ œ ์ธํ”„๋ผ ๊ตฌ์„ฑ ๋ฐ ์šด์˜ ์‹œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์ด์–ด๊ทธ๋žจ, ์ฃผ์š” ๋„๊ตฌ, ์ •์ฑ… ๋“ฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“ 1. BigBang (์ธํ”„๋ผ ์„ค๊ณ„ ๋ฐ ํ™˜๊ฒฝ ๊ตฌ์ถ•)

  • ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ: AWS (Amazon Web Services) ๊ธฐ๋ฐ˜
    • ๋†’์€ ์‹œ์žฅ ์ ์œ ์œจ(1์œ„), ๊ธ€๋กœ๋ฒŒ ๋ฆฌ์ „ ์ตœ๋‹ค
    • ๋ฒ”์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ ์ ํ•ฉ
  • ์ฃผ์š” ์„œ๋น„์Šค
    • EC2 (์ธ์Šคํ„ด์Šค)
    • S3 (์Šคํ† ๋ฆฌ์ง€)
    • IAM (๊ถŒํ•œ ๊ด€๋ฆฌ)
  • ์ธ์Šคํ„ด์Šค ํƒ€์ž… ์„ ์ •
    • T3, T3a, T4g ๊ณ„์—ด ๋น„๊ต ํ›„ ์ตœ์ข… T3 ์ธ์Šคํ„ด์Šค ์„ ํƒ
      • T4g (ARM ๊ธฐ๋ฐ˜) ์„ฑ๋Šฅยท๋น„์šฉ ํšจ์œจ ์šฐ์ˆ˜ํ–ˆ์œผ๋‚˜, ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ๊ณ ๋ ค
      • x86 ๊ธฐ๋ฐ˜ T3๊ฐ€ ํ˜„์žฌ ์‹œ์Šคํ…œ๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ฐ ์•ˆ์ •์„ฑ ์ธก๋ฉด์—์„œ ์ตœ์ 
  • ์ดˆ๊ธฐ ์ธํ”„๋ผ ๊ตฌ์ถ• ์ „๋žต
    • ๋‹จ์ผ EC2 ์ธ์Šคํ„ด์Šค์— ์„œ๋ฒ„ ํ†ตํ•ฉ ๊ตฌ์„ฑ
    • ์ ์ง„์ ์œผ๋กœ ๋ถ„๋ฆฌ ๋ฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ ์„ค๊ณ„

๐Ÿ”ง 2. CI (์ง€์†์  ํ†ตํ•ฉ)

  • ๋„๊ตฌ: GitHub Actions
  • ๋ชฉํ‘œ
    • ์ž๋™ํ™”๋œ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ํ’ˆ์งˆ ๊ฒ€์ฆ
    • ํœด๋จผ ์—๋Ÿฌ ์ฐจ๋‹จ ๋ฐ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ
  • CI ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ
    1. Checkout
    2. ์ •์  ๋ถ„์„ (Lint)
    3. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (Unit Test)
    4. (์„ ํƒ) ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (Integration Test)
    5. ์ปค๋ฒ„๋ฆฌ์ง€ 80% ์ด์ƒ ๊ถŒ์žฅ
  • ๋ธŒ๋žœ์น˜ ์ „๋žต
    • feature/* โ†’ develop โ†’ main
    • ๊ธด๊ธ‰ ์ˆ˜์ • ์‹œ hotfix/* ํ™œ์šฉ
  • ๊ฒฐ๊ณผ ํ™œ์šฉ
    • GitHub PR ์ž๋™ ์ฝ”๋ฉ˜ํŠธ
    • ์‹คํŒจ ์‹œ Slack/Email ์•Œ๋ฆผ
    • README.md ๋นŒ๋“œ ์ƒํƒœ ๋ฐฐ์ง€ ํ‘œ์‹œ

๐Ÿš€ 3. CD (์ง€์†์  ๋ฐฐํฌ)

  • ํ˜„์žฌ ์ƒํƒœ: ์ˆ˜๋™ ๋ฐฐํฌ ๊ธฐ๋ฐ˜
  • ํ–ฅํ›„ ๊ณ„ํš
    • GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ ํ™•์žฅ
    • ์ž๋™ํ™”๋œ ์„œ๋ฒ„ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ์ ์šฉ
    • ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ(Blue/Green, Rolling Update) ์ „๋žต ๊ฒ€ํ† 
  • ๋ณด์•ˆ ์ •์ฑ…
    • SSH ํ‚ค ๊ด€๋ฆฌ ๊ฐ•ํ™”
    • ์„œ๋ฒ„ ์ ‘๊ทผ ์ตœ์†Œํ™” (Bastion Host ๋„์ž… ์˜ˆ์ •)
    • ํ™˜๊ฒฝ๋ณ„ ๊ตฌ์„ฑ ํŒŒ์ผ ๋ถ„๋ฆฌ ๊ด€๋ฆฌ (.env)

AWS vs GCP vs Azure ๋น„๊ต

ํ•ญ๋ชฉ 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๋ถ„๊ฐ„ ์ง‘์ค‘ ๊ด€์ฐฐ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ