Cloud & Infra WIKI - 100-hours-a-week/9-team-Devths-WIKI GitHub Wiki

โ˜๏ธ Cloud & Infrastructure Architecture

[์ž‘์„ฑ ๊ทœ์น™]

  1. Why & Trade-off: ๋ชจ๋“  ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •์—๋Š” [์ฃผ์žฅ - ๋…ผ๋ฆฌ - ๊ทผ๊ฑฐ]๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. Context: "์šฐ๋ฆฌ ์„œ๋น„์Šค์˜ ํŠธ๋ž˜ํ”ฝ/ํŠน์„ฑ์ƒ ์™œ ์ด๊ฒƒ์ด ์ตœ์„ ์ธ๊ฐ€"๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  3. History: ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ๊ธฐ๋กํ•˜์—ฌ, ์„œ๋น„์Šค ์„ฑ์žฅ์— ๋”ฐ๋ฅธ ์ธํ”„๋ผ ํ™•์žฅ ๋Šฅ๋ ฅ์„ ๋ณด์ž…๋‹ˆ๋‹ค.

1. ๋‹จ๊ณ„๋ณ„ ์„ค๊ณ„ ๋ฌธ์„œ (Assignment Details)

๊ณผ์ œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์ž‘์„ฑ๋œ ์ƒ์„ธ ์„ค๊ณ„ ๋ฌธ์„œ๋“ค์ž…๋‹ˆ๋‹ค. (์ œ๋ชฉ ํด๋ฆญ ์‹œ ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ์ด๋™)

๐Ÿ“„ [Step 1] Big Bang ๋ฐฉ์‹ ์ˆ˜์ž‘์—… ๋ฐฐํฌ ์„ค๊ณ„

  • ์ƒํ™ฉ: ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋‹จ๊ณ„, ๋ฐฐํฌ ์ž๋™ํ™” ๋ถ€์žฌ
  • Pain Point: ๋ฐฐํฌ ์‹œ 5๋ถ„ ๋‹ค์šดํƒ€์ž„ ๋ฐœ์ƒ, ์‚ฌ๋žŒ์ด ์ง์ ‘ ๋ช…๋ น์–ด ์ž…๋ ฅํ•˜๋‹ค ์‹ค์ˆ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ
  • Why Manual?: ์ดˆ๊ธฐ ์ธํ”„๋ผ ๊ตฌ์กฐ ๋‹จ์ˆœํ™” ๋ฐ ๋น ๋ฅธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…์„ ์œ„ํ•จ

๐Ÿ“„ [Step 2] CI(์ง€์†์  ํ†ตํ•ฉ) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ์„ค๊ณ„

  • ๋„์ž… ๋ฐฐ๊ฒฝ: ํ˜‘์—… ์ธ์› ์ฆ๊ฐ€๋กœ ์ธํ•œ ์ฝ”๋“œ ์ถฉ๋Œ ๋ฐ ๋นŒ๋“œ ์‹คํŒจ ๋นˆ๋ฒˆ, ์ฝ”๋“œ ํ’ˆ์งˆ ์ €ํ•˜ ์šฐ๋ ค
  • ํ•ด๊ฒฐ ๋ฐฉ์•ˆ: GitHub Actions ๋„์ž…, PR ์‹œ ์ž๋™ ๋นŒ๋“œ/ํ…Œ์ŠคํŠธ ๊ฐ•์ œํ™”

๐Ÿ“„ [Step 3] CD(์ง€์†์  ๋ฐฐํฌ) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ์„ค๊ณ„

  • ๋„์ž… ๋ฐฐ๊ฒฝ: ์žฆ์€ ๋ฐฐํฌ ์š”๊ตฌ์‚ฌํ•ญ, ์ˆ˜๋™ ๋ฐฐํฌ ํ”ผ๋กœ๋„ ์ฆ๊ฐ€, ํœด๋จผ ์—๋Ÿฌ ๋ฐฉ์ง€
  • ๋ฐฐํฌ ์ „๋žต: Rolling Update (๋˜๋Š” Blue/Green)
  • ๊ธฐ๋Œ€ ํšจ๊ณผ: ๋ฒ„ํŠผ ํด๋ฆญ ํ•œ ๋ฒˆ์œผ๋กœ ๋ฐฐํฌ ์™„๋ฃŒ, ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์ฆ‰์‹œ ๋กค๋ฐฑ ๊ฐ€๋Šฅ

๐Ÿ“„ [Step 4] Docker ์ปจํ…Œ์ด๋„ˆํ™” ๋ฐฐํฌ

  • ๋„์ž… ๋ฐฐ๊ฒฝ: ํ™˜๊ฒฝ ๋ถˆ์ผ์น˜๋กœ ์ด์Šˆ๊ฐ€ ๋ฐ˜๋ณต๋˜๊ณ , ์„œ๋ฒ„ ์ˆ˜๋™ ์„ธํŒ…์ด ๋งŽ์•„ ๋ฐฐํฌ ์‹ค์ˆ˜/ํ”ผ๋กœ๋„๊ฐ€ ํผ.
  • ๋ฐฐํฌ ์ „๋žต: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋กœ ํ‘œ์ค€ํ™”ํ•ด ECR์— ์ €์žฅํ•˜๊ณ , ๊ฐ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰
  • ๊ธฐ๋Œ€ ํšจ๊ณผ: ๋ฐฐํฌ๊ฐ€ ๋” ์ผ๊ด€์ /๋น ๋ฅด๊ณ , ํ™•์žฅ/๋กค๋ฐฑ์ด ์‰ฌ์›Œ์ง.

๐Ÿ“„ [Step 5] Kubeadm ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„ค๊ณ„

  • ๋„์ž… ๋ฐฐ๊ฒฝ:
  • ๋ฐฐํฌ ์ „๋žต:
  • ๊ธฐ๋Œ€ ํšจ๊ณผ:

2. ์ธํ”„๋ผ ๊ฐœ์š” (Overview)

ํ•ญ๋ชฉ ๋‚ด์šฉ ๋น„๊ณ 
Cloud Provider AWS (Amazon Web Services)
Region / Zone ap-northeast-2 (Seoul) Zone a, c ์‚ฌ์šฉ
Domain devths.com Route53 ๊ด€๋ฆฌ
Server OS Ubuntu 22.04 LTS
Infra ๋‹ด๋‹น์ž david.lee(์ด๋„์—ฐ), henry.myeong(๋ช…ํ˜œ์„ฑ)

3. ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ์„ ์ • ์ด์œ  (Tech Stack & Trade-offs)

๋ถ„๋ฅ˜ ๊ธฐ์ˆ  ์Šคํƒ ์„ ์ • ์ด์œ  (Why) ๋Œ€์•ˆ ๋น„๊ต ๋ฐ ํ•œ๊ณ„ (Trade-off)
Compute AWS EC2 ํŠธ๋ž˜ํ”ฝ ์˜ˆ์ธก์ด ์–ด๋ ต๊ณ , ์„ธ๋ฐ€ํ•œ ์„œ๋ฒ„ ์„ค์ •์ด ํ•„์š”ํ•˜์—ฌ ์„ ํƒ vs Lambda: Cold Start ๋ฌธ์ œ์™€ ์‹คํ–‰ ์‹œ๊ฐ„์ œํ•œ์œผ๋กœ ๋ฐฐ์ œvs ECS: ์ดˆ๊ธฐ ์„ค์ • ๋ณต์žก๋„ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด EC2 ์šฐ์„  ๋„์ž…
Database MySQL 8.0 ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๊ฐ€ ์ค‘์š”ํ•จ vs MongoDB: ์ •ํ˜•ํ™”๋œ ๋ฐ์ดํ„ฐ๋ผ NoSQL๋ณด๋‹ค RDBMS๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ์— ์œ ๋ฆฌ
CI/CD GitHub Actions ์ฝ”๋“œ ์ €์žฅ์†Œ์™€ ํ†ตํ•ฉ์ด ์šฉ์ดํ•˜๊ณ  ๋ณ„๋„ ์„œ๋ฒ„ ๊ตฌ์ถ• ๋น„์šฉ ์—†์Œ vs Jenkins: ๋ณ„๋„ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ๊ด€๋ฆฌ ๋น„์šฉ ๋ฐ ํ•™์Šต ๊ณก์„ ์ด ๋†’์•„ ๋ฐฐ์ œ
Storage AWS S3 ์ •์  ํŒŒ์ผ(์ด๋ฏธ์ง€)์˜ ๋†’์€ ๋‚ด๊ตฌ์„ฑ๊ณผ ์ €๋ ดํ•œ ๋ณด๊ด€ ๋น„์šฉ vs EBS: ์›น ์„œ๋ฒ„ ๋‹ค์ค‘ํ™” ์‹œ ํŒŒ์ผ ๊ณต์œ ๊ฐ€ ์–ด๋ ต๊ณ  ์šฉ๋Ÿ‰ ํ™•์žฅ์ด ๋ฒˆ๊ฑฐ๋กœ์›€

๐Ÿ“„ ๊ธฐ์ˆ  ์Šคํƒ ์„ ์ • ๊ทผ๊ฑฐ ๋”๋ณด๊ธฐ

4. ์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜ (Architecture Diagram)

4.1. ํ˜„์žฌ ์•„ํ‚คํ…์ฒ˜ (Current Architecture)

[Version 1.0] ํ˜„์žฌ ์šด์˜ ์ค‘์ธ ์ตœ์ข… ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ๋„์ž…๋‹ˆ๋‹ค.

Architecture Diagram

  • ์ฃผ์š” ํŠน์ง•:
    • Public Subnet์— Bastion Host ๋ฐฐ์น˜
    • Private Subnet์— WAS ๋ฐ DB ๋ฐฐ์น˜๋กœ ๋ณด์•ˆ ๊ฐ•ํ™”
    • ...

4.2. ์•„ํ‚คํ…์ฒ˜ ๋ณ€์ฒœ์‚ฌ (History)

์„œ๋น„์Šค ํ™•์žฅ๊ณผ ๊ณผ์ œ ์ง„ํ–‰ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐœ์ „ํ–ˆ๋Š”์ง€ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“„[Step 1] V1 ์Šคํ”„๋ฆฐํŠธ ์ง„ํ–‰์ƒํ™ฉ: ๋‹จ์ผ EC2, ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜, Nginx, S3+Code Deploy ๊ธฐ๋ฐ˜ ๋ฐฐํฌ

๐Ÿ“„[Step 2] V2 ์Šคํ”„๋ฆฐํŠธ ์ง„ํ–‰์ƒํ™ฉ: ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค, Docker, ALB ๋„์ž…

๐Ÿ“„[Step 3] V3 ์Šคํ”„๋ฆฐํŠธ ์ง„ํ–‰์ƒํ™ฉ: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ ์šฉ

5. ํ˜„์žฌ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ (CI/CD Pipeline)

5.1. ํ”„๋กœ์„ธ์Šค ํ๋ฆ„๋„

CI/CD Flow

5.2. ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ธ ๋ช…์„ธ

๋‹จ๊ณ„ Trigger ์กฐ๊ฑด ์ˆ˜ํ–‰ ์ž‘์—… (Jobs) ์‚ฐ์ถœ๋ฌผ (Artifact) ๋น„๊ณ 
CI (ํ†ตํ•ฉ) dev ๋ธŒ๋žœ์น˜ Push 1. Java 21 Setup2. Gradle Build3. Unit Test ์‹คํ–‰ Docker Image (Tag: dev-${sha}) ์‹คํŒจ ์‹œ Discord ์•Œ๋ฆผ
CD (๋ฐฐํฌ) main ๋ธŒ๋žœ์น˜ Merge 1. AWS Credentials ์„ค์ •2. S3 ์—…๋กœ๋“œ (CodeDeploy)3. Deploy Trigger ์„œ๋น„์Šค ๋ฐฐํฌ ์™„๋ฃŒ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ ์šฉ

๐Ÿ“„[Step 1] V1 CICD: S3+Code Deploy ๊ธฐ๋ฐ˜ ๋ฐฐํฌ

๐Ÿ“„[Step 2] V2 CICD: ECR+Code Deploy ๊ธฐ๋ฐ˜ ๋ฐฐํฌ

๐Ÿ“„[Step 3] V3 CICD: Helm+ArgoCD ๊ธฐ๋ฐ˜ ๋ฐฐํฌ

6. ๋ณด์•ˆ ๋ฐ ๋„คํŠธ์›Œํฌ ์ „๋žต (Security & Network)

๊ณผ์ œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์ž‘์„ฑ๋œ ์ƒ์„ธ ์„ค๊ณ„ ๋ฌธ์„œ๋“ค์ž…๋‹ˆ๋‹ค. (์ œ๋ชฉ ํด๋ฆญ ์‹œ ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ์ด๋™)

๐Ÿ“„ ์ธํ”„๋ผ ์ ‘๊ทผ ์ œ์–ด ๋ฐฉ์‹

๐Ÿ“„ ์ตœ์†Œ ๊ถŒํ•œ ์›์น™ ๊ธฐ๋ฐ˜ IAM ์„ค๊ณ„ ๋ฌธ์„œ

7. ์žฅ์• ๋Œ€์‘ ๋ฐ ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ, ๋ชจ๋‹ˆํ„ฐ๋ง (Monitoring & LoadTest)

๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์žฅ์• ์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑ๋œ ๋ฌธ์„œ๋“ค์ž…๋‹ˆ๋‹ค.

๐Ÿ“„[๊ณตํ†ต]SLI/SLO ๋ฌธ์„œ

  • ์š”์•ฝ: ์„œ๋น„์Šค ์ง„ํ™”(V1~V3)์— ๋”ฐ๋ฅธ ๋‹จ๊ณ„๋ณ„ SLI/SLO ์ง€ํ‘œ ์„ค์ • ๋ฐ ๋ณ€๊ฒฝ ์ด๋ ฅ์ž…๋‹ˆ๋‹ค.

๐Ÿ“„[Step 1] V1 ๋ชจ๋‹ˆํ„ฐ๋ง: ๋‹จ์ผ EC2, CloudWatch ๊ธฐ๋ฐ˜ ๋ฐฐํฌ

  • ์š”์•ฝ: ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ํ™˜๊ฒฝ์—์„œ AWS CloudWatch๋ฅผ ํ™œ์šฉํ•œ ๊ธฐ์ดˆ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌ์ถ• ๊ณผ์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๐Ÿ“„[Step 2] V2 ๋ชจ๋‹ˆํ„ฐ๋ง: ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค, ์ค‘์•™ ์ง‘์ค‘์‹ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„์ž…

  • ์š”์•ฝ: Prometheus์™€ Grafana๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋ถ„์‚ฐ๋œ ์„œ๋ฒ„์˜ ์ง€ํ‘œ๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“„[Step 3] V3 ๋ชจ๋‹ˆํ„ฐ๋ง: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ ์šฉ

  • ์š”์•ฝ: K8s ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋œ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฒด๊ณ„์™€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

8. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๐Ÿ“„V1 DB ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜: AWS DMS ํ™œ์šฉํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  • ์š”์•ฝ: EC2์— ์žˆ๋Š” DB๋ฅผ RDS๋กœ AWS DMS๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง„ํ–‰

** DB ๋ฌด์ค‘๋‹จ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜(Henry)**

  • ์š”์•ฝ: PostgreSQL์˜ logical replica ๊ธฐ๋Šฅ์„ ์ด์šฉํ•œ ๋ฌด์ค‘๋‹จ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ง„ํ–‰

9. ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (Troubleshooting Log)

์ธํ”„๋ผ/๋ฐฐํฌ ๊ด€๋ จ ์žฅ์•  ๋ฐœ์ƒ ๋ฐ ํ•ด๊ฒฐ ๊ธฐ๋ก

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ณด๋Ÿฌ๊ฐ€๊ธฐ