๐Ÿš€AWS ECS Fargate๋ฅผ ํ™œ์šฉํ•œ ํ• ์ธ ์ฟ ํฐ ๋ฐœ๊ธ‰ ์‹œ์Šคํ…œ - 0


๊ฐœ์š”

์•ž์œผ๋กœ ํ•œ๋‹ฌ๊ฐ„ AWS ECS Fargate๋ฅผ ํ™œ์šฉํ•œ ํ• ์ธ ์ฟ ํฐ ๋ฐœ๊ธ‰ ์‹œ์Šคํ…œ ์„ ๊ฐœ๋ฐœํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ด์œ ๋Š” ํ•™๊ต ์ˆ˜์—…์ค‘ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์ˆ˜์—…์— ์ตœ์ข… ํ”„๋กœ์ ํŠธ ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๊ณ  ์ถ”ํ›„์— ๋”์šฑ ๋ฐœ์ „ ์‹œ์ผœ ํฌํ† ํด๋ฆฌ์˜ค๋กœ๋„ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋‹ค.


๋ชฉํ‘œ

์šฐ์„  ์ด ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ๋Š” ๋‚˜๋ฅผ ๋ฐœ์ „ ์‹œํ‚ค๋Š”๋ฐ์— ์žˆ๋‹ค. ๋’ค์ฃฝ๋ฐ•์ฃฝ ๋˜์–ด์žˆ๋˜ ๊ทธ๊ฐ„์— ๊ฐœ๋ฐœ ๊ณต๋ถ€ ๋‚ด์šฉ๋“ค๊ณผ ๋ฐฐ์šฐ์ง€ ์•Š์•˜๋˜ ๋‚ด์šฉ๋“ค์„ ์ง‘์ค‘์ ์œผ๋กœ ํ•œ๋‹ฌ๊ฐ„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๊ผญ ์œ ์˜๋ฏธํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

๋น„์ง€๋‹ˆ์Šค ๋ชฉํ‘œ

  • ๋Œ€๊ทœ๋ชจ ํ• ์ธ ์ฟ ํฐ ์ด๋ฒคํŠธ์˜ ์•ˆ์ •์ ์ธ ์šด์˜ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • ์„ ์ฐฉ์ˆœ 100๋ช…์—๊ฒŒ ํ• ์ธ ์ฟ ํฐ ๋ฐœ๊ธ‰
  • ๊ณต์ •ํ•˜๊ณ  ํˆฌ๋ช…ํ•œ ์ฟ ํฐ ๋ฐœ๊ธ‰ ํ”„๋กœ์„ธ์Šค ์ œ๊ณต

    ๊ธฐ์ˆ ์  ๋ชฉํ‘œ

  • ECS Fargate๋ฅผ ํ™œ์šฉํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ์ปจํ…Œ์ด๋„ˆ ์•„ํ‚คํ…์ฒ˜ ๊ตฌํ˜„
  • ์ดˆ๋‹น 1000๊ฑด ์ด์ƒ์˜ ๋™์‹œ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • 99.9% ์ด์ƒ์˜ ์‹œ์Šคํ…œ ๊ฐ€์šฉ์„ฑ ํ™•๋ณด
  • API ์‘๋‹ต ์‹œ๊ฐ„ 300ms ์ดํ•˜ ์œ ์ง€

    ๊ตฌ์ฒด์ ์ธ ์„ฑ๋Šฅ ๋ชฉํ‘œ

  • ๋™์‹œ ์ ‘์†์ž 5000๋ช… ์ƒํ™ฉ์—์„œ ์•ˆ์ •์  ์„œ๋น„์Šค ์ œ๊ณต
  • ์ฟ ํฐ ๋ฐœ๊ธ‰ ์„ฑ๊ณต๋ฅ  99.9% ๋‹ฌ์„ฑ
  • ์ค‘๋ณต ๋ฐœ๊ธ‰ ๋ฐ ๋ถ€์ • ๋ฐœ๊ธ‰ 0% ๋‹ฌ์„ฑ

์šด์˜ ๋ชฉํ‘œ

  • ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ฒด๊ณ„ ๊ตฌ์ถ•
  • ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•Œ๋ฆผ ์ฒด๊ณ„ ๊ตฌ์ถ•
  • ์‹œ์Šคํ…œ ํ™•์žฅ/์ถ•์†Œ ์ž๋™ํ™”

์šฐ์„  ์ด์ •๋„๋กœ ๋ชฉํ‘œ๋ฅผ ์žก๊ณ  ์ถ”ํ›„์— ์ข€๋” ๋ฐœ์ „๋œ ๋ชฉํ‘œ๋ฅผ ์ˆ˜ํ–‰ํ• ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅํ•ด๋ณผ ๊ณ„ํš์ด๋‹ค.


ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ

  • ๋ฐฑ์—”๋“œ: Spring Boot 3.x (Java 21)

  • ํ”„๋ก ํŠธ์—”๋“œ : Thymeleaf

  • ์ปจํ…Œ์ด๋„ˆ: Docker, ECS Fargate

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: RDS MySQL (์ฟ ํฐ ๋ฐ์ดํ„ฐ ์ €์žฅ)

  • ์บ์‹œ: ElasticCache Redis (์žฌ๊ณ  ๊ด€๋ฆฌ, ๋™์‹œ์„ฑ ์ œ์–ด)

  • ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ: Application Load Balancer

  • CI/CD: GitHub Actions

  • ๋ชจ๋‹ˆํ„ฐ๋ง: CloudWatch

AWS ์•„์นด๋ฐ๋ฏธ ํ™˜๊ฒฝ


๊ณ„ํš

1์ฃผ์ฐจ: ๊ธฐ๋ณธ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐ ์ธํ”„๋ผ ์„ค์ •

  • ์ดˆ๋ฐ˜ 3์ผ
    • Spring Boot ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ๊ธฐ๋ณธ ์„ค์ •
    • Docker ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐ Dockerfile ์ž‘์„ฑ
    • GitHub ์ €์žฅ์†Œ ์„ค์ • ๋ฐ ์ดˆ๊ธฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์„ค๊ณ„
  • ํ›„๋ฐ˜ 4์ผ
    • AWS VPC, ์„œ๋ธŒ๋„ท, ๋ณด์•ˆ ๊ทธ๋ฃน ๊ตฌ์„ฑ
    • ECS Fargate ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ
    • RDS MySQL, ElasticCache Redis ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐ ์—ฐ๋™
    • Application Load Balancer ์„ค์ •

2์ฃผ์ฐจ: ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

  • ์ดˆ๋ฐ˜ 3์ผ
    • ์ฟ ํฐ ๋„๋ฉ”์ธ ์„ค๊ณ„ ๋ฐ ๊ธฐ๋ณธ CRUD API ๊ตฌํ˜„
    • Redis ์—ฐ๋™ ๋ฐ ์žฌ๊ณ  ๊ด€๋ฆฌ ๋กœ์ง ๊ตฌํ˜„
    • MySQL ํ…Œ์ด๋ธ” ์„ค๊ณ„ ๋ฐ JPA ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘
  • ํ›„๋ฐ˜ 4์ผ
    • ๋ถ„์‚ฐ ๋ฝ ๊ตฌํ˜„ ๋ฐ ๋™์‹œ์„ฑ ์ œ์–ด ๋กœ์ง ๊ฐœ๋ฐœ
    • ๋ถ€์ • ๋ฐœ๊ธ‰ ๋ฐฉ์ง€ ๋กœ์ง ๊ตฌํ˜„
    • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

3์ฃผ์ฐจ: CI/CD ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌ์ถ•

  • ์ดˆ๋ฐ˜ 3์ผ
    • GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ ์„ค์ •
    • ECR ์ €์žฅ์†Œ ์ƒ์„ฑ ๋ฐ ๋„์ปค ์ด๋ฏธ์ง€ ๋ฐฐํฌ ์ž๋™ํ™”
    • ECS ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•
  • ํ›„๋ฐ˜ 4์ผ
    • CloudWatch ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์„ฑ
    • ๋กœ๊น… ์‹œ์Šคํ…œ ๊ตฌ์ถ•
    • ์•Œ๋ฆผ ์„ค์ • (CPU, ๋ฉ”๋ชจ๋ฆฌ, ์—๋Ÿฌ์œจ ๋“ฑ)

4์ฃผ์ฐจ: ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ํ…Œ์ŠคํŠธ

  • ์ดˆ๋ฐ˜ 3์ผ
    • nGrinder ํ™˜๊ฒฝ ๊ตฌ์ถ•
    • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘์„ฑ
    • ์ดˆ๊ธฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์‹คํ–‰
  • ํ›„๋ฐ˜ 4์ผ
    • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ถ„์„ ๋ฐ ๋ณ‘๋ชฉ ์ง€์  ํŒŒ์•…
    • ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ž‘์—…
    • Auto Scaling ์ •์ฑ… ์ˆ˜๋ฆฝ ๋ฐ ์ ์šฉ

5์ฃผ์ฐจ: ๋งˆ๋ฌด๋ฆฌ ๋ฐ ๋ฌธ์„œํ™”

  • ์ดˆ๋ฐ˜ 3์ผ
    • README ์ž‘์„ฑ
    • API ๋ฌธ์„œํ™” (Swagger)
    • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๊ธฐ๋ก ์ •๋ฆฌ
  • ํ›„๋ฐ˜ 4์ผ
    • ๋ฐœํ‘œ ์ž๋ฃŒ ์ค€๋น„
    • ์‹œ์—ฐ ์˜์ƒ ์ œ์ž‘
    • ์ตœ์ข… ํ…Œ์ŠคํŠธ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ •

์ฃผ์˜์‚ฌํ•ญ ๋ฐ ์ฒดํฌํฌ์ธํŠธ

  • ๊ฐ ์ฃผ์ฐจ ๋งˆ์ง€๋ง‰ ๋‚ ์—๋Š” ์ฃผ๊ฐ„ ํšŒ๊ณ  ๋ฐ ๋‹ค์Œ ์ฃผ์ฐจ ๊ณ„ํš ์กฐ์ •
  • ๋งค์ผ ๊ฐœ๋ฐœ ์ผ์ง€ ์ž‘์„ฑ์œผ๋กœ ์ง„ํ–‰ ์ƒํ™ฉ ์ถ”์ 
  • ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์‹œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ•„์ˆ˜ ์ž‘์„ฑ
  • ๋ณด์•ˆ ์„ค์ • ๋ฐ ๋ฏผ๊ฐ ์ •๋ณด ๊ด€๋ฆฌ ์ฒ ์ € ๊ฐ ๊ฐœ๋ฐœ ์ผ์ •์€ ๋‚œ์ด๋„์˜ ๋”ฐ๋ผ ์กฐ์ •์ด ๋  ์ˆ˜ ์žˆ์Œ

ํž˜๋“  ์ผ์ •์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ๋งŽ์ด ์–ด๋ ต๊ธฐ๋„ ํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๋Š˜ ๊ทธ๋ž˜์™”๊ณ  ์•ž์œผ๋กœ๋„ ๊ทธ๋Ÿด๊ฑฐ๋‹ค ๋‚˜๋Š” ํ•ด๋‚ผ ๊ฒƒ์ด๊ณ  ํ•ด๋‚ผ๊ฑฐ๋‹ค ํ™”์ดํŒ…!