๐Ÿ“ฆ ECR + ECS + FARGATE๋ฅผ ํ†ตํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์ถ• ๋ฐ ์„œ๋น„์Šค ์šด์˜

Dev96ยท2025๋…„ 4์›” 8์ผ
post-thumbnail

๐Ÿ“Œ ์›Œํฌ๋กœ๋“œ

๐Ÿ”นECR (Elastic Container Registry)

ECR์€ AWS์˜ Docker ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์ด๋‹ค. AWS์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋Š” Docker Hub์ด๋‹ค.

  • Docker ์ด๋ฏธ์ง€ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ
  • ECS, EKS, CodePipeline ๋“ฑ๊ณผ ํ†ตํ•ฉ
  • ํ”„๋ผ์ด๋น—/ํผ๋ธ”๋ฆญ ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ง€์›
  • ๊ณ ์† ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ (S3 ๊ธฐ๋ฐ˜ ์ €์žฅ)

๐Ÿ”นECS (Elastic Container Service)

ECS๋Š” AWS์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. Kubernetes์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰, ๊ด€๋ฆฌ, ํ™•์žฅํ•˜๋Š” ์ผ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

  • ํด๋Ÿฌ์Šคํ„ฐ (Cluster) : ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•  ์„œ๋ฒ„ ๊ทธ๋ฃน (Fargate ๋˜๋Š” EC2 ์ธ์Šคํ„ด์Šค ๊ธฐ๋ฐ˜)
  • ํƒœ์Šคํฌ (Task) : ์ปจํ…Œ์ด๋„ˆ ์ •์˜ (๋„์ปค ์ด๋ฏธ์ง€, ํ™˜๊ฒฝ๋ณ€์ˆ˜, ํฌํŠธ ๋“ฑ ํฌํ•จ)
  • ์„œ๋น„์Šค (Service) : ํƒœ์Šคํฌ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ์ƒํƒœ๋ฅผ ์œ ์ง€์‹œ์ผœ์ฃผ๋Š” ์—ญํ•  (Auto-scaling, Load balancing ๊ฐ€๋Šฅ)
  • ๋Ÿฐํƒ€์ž„ ๋ฐฉ์‹ :
    - EC2: EC2 ์ธ์Šคํ„ด์Šค ์œ„์—์„œ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
    - Fargate: ์„œ๋ฒ„๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ์ปจํ…Œ์ด๋„ˆ๋งŒ ์‹คํ–‰ (์„œ๋ฒ„๋ฆฌ์Šค ๋ฐฉ์‹)

1๏ธโƒฃ ECR ์ƒ์„ฑ




โœ… Mutable (๊ธฐ๋ณธ๊ฐ’)

์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Œ
๐Ÿ‘‰ latest ํƒœ๊ทธ์— ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋ฅผ ๊ณ„์† ๋ฎ์–ด์“ฐ๊ธฐ ๊ฐ€๋Šฅ

๐Ÿ”’ Immutable

์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ํ•œ ๋ฒˆ ๋“ฑ๋กํ•˜๋ฉด ๋ฎ์–ด์“ธ ์ˆ˜ ์—†์Œ
๐Ÿ‘‰ ํƒœ๊ทธ๊ฐ€ ๊ณ ์ •๋˜์–ด ๋ฐฐํฌ ์•ˆ์ •์„ฑ ํ™•๋ณด์— ์œ ๋ฆฌ


2๏ธโƒฃ ECS Cluster ์ƒ์„ฑ




โ˜๏ธ AWS ECS - Fargate vs EC2

ํ•ญ๋ชฉFargateEC2
๋ฐฉ์‹๐ŸŸข ์„œ๋ฒ„๋ฆฌ์Šค (์ž๋™ ๊ด€๋ฆฌ)โš™๏ธ ์ˆ˜๋™ ๊ด€๋ฆฌ
์š”๊ธˆ๐Ÿ’ธ ์‚ฌ์šฉํ•œ ๋งŒํผ๋งŒ ๊ณผ๊ธˆ๐Ÿ’ฐ ์ธ์Šคํ„ด์Šค ์ง€์† ๋น„์šฉ ๋ฐœ์ƒ
์ถ”์ฒœ ์‚ฌ์šฉ์ฒ˜๐Ÿ”น ์œ ์ง€๋ณด์ˆ˜ ์ตœ์†Œํ™”๐Ÿ”ธ ๊ณ ์ • ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

๐Ÿ“Š ECS Container Insights ์˜ต์…˜ ๋น„๊ต

์˜ต์…˜์„ค๋ช…
Enhanced Observabilityโœ… ์ถ”์ฒœ ์˜ต์…˜
๐Ÿ” ํƒœ์Šคํฌ/์ปจํ…Œ์ด๋„ˆ ์ˆ˜์ค€๊นŒ์ง€ ์ƒ์„ธ ๋ฉ”ํŠธ๋ฆญ ์ œ๊ณต
โšก ๋น ๋ฅธ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ์„ฑ๋Šฅ ๋ถ„์„์— ์œ ๋ฆฌ
๊ธฐ๋ณธ Container Insights๐Ÿ“ˆ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ ์„œ๋น„์Šค ์ˆ˜์ค€์˜ ์ง‘๊ณ„ ๋ฉ”ํŠธ๋ฆญ ์ œ๊ณต
๐Ÿ”Ž Logs Insights๋กœ ์ถ”๊ฐ€ ๋ถ„์„ ๊ฐ€๋Šฅ
Off (๊ธฐ๋ณธ๊ฐ’)๐Ÿ’ค CloudWatch ๊ธฐ๋ณธ ๋ฉ”ํŠธ๋ฆญ๋งŒ ์ˆ˜์ง‘
๐Ÿ› ๏ธ ์ตœ์†Œํ•œ์˜ ๋ชจ๋‹ˆํ„ฐ๋ง๋งŒ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ

โœ… ์ถ”์ฒœ

  • ์šด์˜ ์ค‘์ธ ECS ์„œ๋น„์Šค๋ฅผ ์ž˜ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋ ค๋ฉด
    โžค Enhanced Observability ์‚ฌ์šฉํ•˜์„ธ์š”.

  • ๋น„์šฉ์ด๋‚˜ ์„ฑ๋Šฅ ๊ณ ๋ ค๋กœ ๊ธฐ๋ณธ ์ˆ˜์ค€๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด
    โžค Container Insights ๋˜๋Š” Off ์„ ํƒ๋„ ๊ฐ€๋Šฅ


3๏ธโƒฃ ECS Task definitions ์ƒ์„ฑ



โš™๏ธ ECS Task Definition - Infrastructure requirements ์ฃผ์š” ํ•ญ๋ชฉ ์„ค๋ช…

ํ•ญ๋ชฉ์„ค๋ช…
Task definition familyํƒœ์Šคํฌ ์ •์˜ ์ด๋ฆ„
Launch type๐Ÿš€ ์‹คํ–‰ ๋ฐฉ์‹ ์„ ํƒ (์˜ˆ: FARGATE, EC2)
โžค Fargate: ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰
โžค EC2: ์‚ฌ์šฉ์ž EC2 ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰
Operating system / Architecture๐Ÿ–ฅ๏ธ OS ๋ฐ ์•„ํ‚คํ…์ฒ˜ ์ง€์ •
โžค ์˜ˆ: Linux/x86_64, Linux/ARM64, Windows ๋“ฑ
Task size (Fargate ์ „์šฉ)๐Ÿ“ฆ CPU & Memory ๋ฆฌ์†Œ์Šค ์„ค์ •
โžค ์˜ˆ: 0.5 vCPU / 1GB RAM
โžค ์กฐํ•ฉ์— ๋”ฐ๋ผ ๋น„์šฉ๊ณผ ์„ฑ๋Šฅ ๋‹ฌ๋ผ์ง

โœ… Tips

  • Launch type์€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
  • OS/Arch๋Š” ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ๋งž์ถฐ ์ •ํ™•ํžˆ ์„ ํƒํ•ด์•ผ ์‹คํ–‰ ์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • Fargate ์‚ฌ์šฉ ์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ Task size ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    โžค vCPU์™€ Memory๋ฅผ ์ ์ ˆํžˆ ์กฐํ•ฉํ•˜์—ฌ ๋น„์šฉ ์ตœ์ ํ™”ํ•˜์„ธ์š”.

โš™๏ธ ECS Task Definition - Container Details ์ฃผ์š” ํ•ญ๋ชฉ ์„ค๋ช…

ํ•ญ๋ชฉ์„ค๋ช…
Name์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์ง€์ •
โžค ์ตœ๋Œ€ 255์ž (์˜๋ฌธ, ์ˆซ์ž, -, _ ํ—ˆ์šฉ)
Image URI์‚ฌ์šฉํ•  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ URI
์˜ˆ: 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/app:tag
โžค ECR Repository URI
Essential Containerโœ… ํ•„์ˆ˜ ์ปจํ…Œ์ด๋„ˆ ์—ฌ๋ถ€ ์„ค์ •
โžค ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฐ˜๋“œ์‹œ Essential๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•จ
Private Registry๐Ÿ” ํ”„๋ผ์ด๋น— ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‚ฌ์šฉ ์‹œ, Secrets Manager๋ฅผ ํ†ตํ•ด ์ธ์ฆ ์ •๋ณด ์ €์žฅ ํ•„์š”
Port Mappings๐Ÿ” ์™ธ๋ถ€ ํ†ต์‹ ์„ ์œ„ํ•œ ํฌํŠธ ๋งคํ•‘
์˜ˆ: ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ 80, ํ”„๋กœํ† ์ฝœ TCP, ์•ฑ ํ”„๋กœํ† ์ฝœ HTTP
Read-only Root FS๐Ÿ”’ ๋ฃจํŠธ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์„ค์ • (๋ณด์•ˆ ๊ฐ•ํ™” ๋ชฉ์ )
CPU / Memory Limitsโš™๏ธ ์ปจํ…Œ์ด๋„ˆ ๋‹จ์œ„ ์ž์› ์ œํ•œ ์„ค์ •
โžค Task-level๊ณผ ๋ณ„๋„ ์„ค์ • ๊ฐ€๋Šฅ
โžค ์ดˆ๊ณผ ์‹œ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Œ
GPU๐ŸŽฎ GPU ๋ฆฌ์†Œ์Šค ํ• ๋‹น (์„ ํƒ ์‚ฌํ•ญ, ํ•„์š” ์‹œ ์‚ฌ์šฉ)

โœ… Tips

  • Essential ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ „์ฒด Task๋„ ์ค‘์ง€๋จ โ†’ ์ค‘์š” ์„œ๋น„์Šค๋Š” ๋ฐ˜๋“œ์‹œ Essential๋กœ!
  • CPU/Memory ์ œํ•œ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ตœ๋Œ€์น˜ โ†’ Task ์ „์ฒด ๋ฆฌ์†Œ์Šค์™€ ํ•ฉ์ณ์„œ ๊ณ ๋ คํ•ด์•ผ ํ•จ
  • Read-only Root FS ์˜ต์…˜์€ ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์•ฑ์—์„œ๋Š” ์ผœ๋„ ๋ฌธ์ œ ์—†์Œ

๐Ÿ› ๏ธ ECS Task Definition - ์„ ํƒ ์„ค์ • (Optional Settings)

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ƒ๋žตํ•ด๋„ ๋ฌด๋ฐฉํ•˜์ง€๋งŒ, ํŠน์ • ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ์„ค๋ช… ๋ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ
Logging๐Ÿ“„ CloudWatch ๋กœ๊ทธ ์„ค์ •
โžค ๋กœ๊ทธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ง€์ •๋œ log group์œผ๋กœ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
Restart policy๐Ÿ” ๊ฐœ๋ณ„ ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ ์„ค์ •
โžค Task ์ „์ฒด๊ฐ€ ์•„๋‹Œ ์ปจํ…Œ์ด๋„ˆ ๋‹จ์œ„ ์žฌ์‹œ์ž‘ ์šฉ๋„
HealthCheckโค๏ธ ์ปจํ…Œ์ด๋„ˆ์˜ ํ—ฌ์Šค์ฒดํฌ ์„ค์ •
โžค ์ง€์ •๋œ ๋ช…๋ น์–ด ๊ธฐ์ค€์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ํŒ๋‹จ
Startup dependency orderingโฑ๏ธ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์ˆœ์„œ ์ œ์–ด
โžค DB โ†’ App ์ˆœ์„œ ๋“ฑ ์˜์กด์„ฑ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ
Container timeoutsโŒ› ์‹œ์ž‘/์ข…๋ฃŒ ์‹œ ํƒ€์ž„์•„์›ƒ ์ง€์ •
โžค ๋А๋ฆฐ ์ดˆ๊ธฐํ™”๊ฐ€ ์žˆ๋Š” ์•ฑ์— ์œ ์šฉ
Container network settings๐ŸŒ IP, DNS ๋“ฑ ๋„คํŠธ์›Œํฌ ์ƒ์„ธ ์„ค์ •
โžค ํŠน๋ณ„ํ•œ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ
Docker configurationโš™๏ธ ์ถ”๊ฐ€ Docker ์˜ต์…˜ ์„ค์ •
โžค log driver, sysctl ๋“ฑ ์„ค์ •์ด ํ•„์š”ํ•  ๋•Œ
Resource limits (Ulimits)๐Ÿ“Š ๋ฆฌ๋ˆ…์Šค์˜ ulimit ์„ค์ •
โžค ์—ด ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ์ˆ˜ ์ œํ•œ ๋“ฑ ์„ธ๋ฐ€ํ•œ ๋ฆฌ์†Œ์Šค ์ œ์–ด์— ์‚ฌ์šฉ
Docker labels๐Ÿท๏ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํƒœ๊ทธ ๋ถ€์—ฌ
โžค ๊ด€๋ฆฌ, ๋ชจ๋‹ˆํ„ฐ๋ง, ์ •์ฑ… ์ ์šฉ ์‹œ ํ™œ์šฉ ๊ฐ€๋Šฅ

โœ… ์š”์•ฝ

  • ์ผ๋ฐ˜์ ์ธ ์›น/๋ฐฑ์—”๋“œ ์•ฑ: ๊ธฐ๋ณธ ์„ค์ •๋งŒ์œผ๋กœ ์ถฉ๋ถ„
  • ๋กœ๊น…, ์žฌ์‹œ์ž‘ ์ •์ฑ…, ํ—ฌ์Šค์ฒดํฌ ๋“ฑ์€ ์šด์˜ํ™˜๊ฒฝ์—์„œ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

4๏ธโƒฃ ECS Service ์ƒ์„ฑ

๐Ÿ‘‰ ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ธ ํŽ˜์ด์ง€ ์ƒ๋‹จ ๋ฉ”๋‰ด์—์„œ Services ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ‘‰ Create ๋˜๋Š” ์„œ๋น„์Šค ์ƒ์„ฑํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ ECS Service Environment & Deployment configuration ์ฃผ์š” ํ•ญ๋ชฉ ์„ค๋ช…

ํ•ญ๋ชฉ์„ค๋ช… ๋ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ
Compute optionsโš™๏ธ ์ž‘์—… ๋ฐฐ์น˜ ์ „๋žต
โžค ์—ฌ๋Ÿฌ ์šฉ๋Ÿ‰ ๊ณต๊ธ‰์ž(Capacity Provider) ์กฐํ•ฉ ๊ฐ€๋Šฅ
Launch type๐Ÿš€ ์ž‘์—… ์‹คํ–‰ ํ™˜๊ฒฝ ์„ ํƒ
โžค ์ผ๋ฐ˜์ ์œผ๋กœ FARGATE ์‚ฌ์šฉ
Platform version๐Ÿงฉ ํ”Œ๋žซํผ ๋ฒ„์ „
โžค LATEST ๊ถŒ์žฅ (์ตœ์‹  ๊ธฐ๋Šฅ๊ณผ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ ํฌํ•จ)
Task definition family๐Ÿ“œ ์‹คํ–‰ํ•  ์ž‘์—… ์ •์˜ ๊ทธ๋ฃน
โžค ์—ฌ๋Ÿฌ revision์„ ๊ฐ€์ง„ ์ž‘์—… ์ •์˜ ํŒจ๋ฐ€๋ฆฌ ์„ ํƒ
Task definition revision๐Ÿ” ์ž‘์—… ์ •์˜ ๋ฆฌ๋น„์ „ ์„ ํƒ
โžค ๋นˆ ์นธ์œผ๋กœ ๋‘๋ฉด ์ตœ์‹  revision ์‚ฌ์šฉ
Service name๐Ÿท๏ธ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์œ ์ผํ•œ ์„œ๋น„์Šค๋ช…
โžค ์˜๋ฌธ, ์ˆซ์ž, _, - ๊ฐ€๋Šฅ, ์ตœ๋Œ€ 255์ž
Service type๐Ÿ› ๏ธ ๋ฐฐํฌ ์œ ํ˜•
โžค Replica (์›ํ•˜๋Š” ์ˆ˜๋งŒํผ ์‹คํ–‰), Daemon (์ธ์Šคํ„ด์Šค๋‹น 1๊ฐœ ์‹คํ–‰)
Desired tasks๐Ÿ”ข ์‹คํ–‰ํ•  ์ž‘์—… ์ˆ˜ ์ง€์ •
โžค ์˜ˆ: 1 โ†’ ํ•˜๋‚˜์˜ Task ์‹คํ–‰
Availability Zone rebalancing๐ŸŒ ๊ฐ€์šฉ ์˜์—ญ ์ž๋™ ์žฌ๋ถ„์‚ฐ
โžค AZ ๊ฐ„ ์ž‘์—… ๊ท ํ˜•์„ ์ž๋™์œผ๋กœ ์กฐ์ •
Health check grace periodโค๏ธ ํ—ฌ์Šค์ฒดํฌ ์œ ์˜ˆ ์‹œ๊ฐ„
โžค ์ดˆ๊ธฐ ๋ถ€ํŒ… ์‹œ๊ฐ„์ด ๊ธด ์•ฑ์— ์œ ์šฉ
Deployment options๐Ÿš€ ๋ฐฐํฌ ์ „๋žต ๋ฐ ์‹คํŒจ ๊ฐ์ง€ ์„ค์ •
โžค ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์„ค์ •, ๋ฐฐํฌ ์‹คํŒจ ์‹œ ๋กค๋ฐฑ ์—ฌ๋ถ€ ๋“ฑ์„ ์ง€์ • Rolling, Blue/Green
Deployment failure detection๐Ÿšจ ๋ฐฐํฌ ์‹คํŒจ ๊ฐ์ง€
โžค ๋กค๋ฐฑ ๋˜๋Š” ๊ฒฝ๊ณ  ์•Œ๋ฆผ ๋“ฑ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ

โœ… Tips

Deployment circuit breaker๋Š” ๊ผญ ์ผœ๋‘๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
โ†’ ์‹ ๊ทœ ๋ฐฐํฌ ์‹คํŒจ ์‹œ ์ž๋™์œผ๋กœ ์ด์ „ ์ƒํƒœ๋กœ ๋ณต๊ตฌ๋˜์–ด ์žฅ์•  ๋ฐฉ์ง€์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ ECS Service Networking ์ฃผ์š” ํ•ญ๋ชฉ ์„ค๋ช…

ํ•ญ๋ชฉ์„ค๋ช… ๋ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ
VPC๐ŸŒ ์ž‘์—…(Task)์ด ์‹คํ–‰๋  VPC(๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ) ์„ ํƒ
โžค ๋ณด์•ˆ ๊ทธ๋ฃน, ์„œ๋ธŒ๋„ท ๋“ฑ ๋„คํŠธ์›Œํฌ ์ž์›๊ณผ ์—ฐ๊ฒฐ๋จ
Subnets๐Ÿงฑ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์„œ๋ธŒ๋„ท ์„ ํƒ
โžค ํผ๋ธ”๋ฆญ/ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท ์„ ํƒ ๊ฐ€๋Šฅ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ€ํ‹ฐ AZ๋กœ 2๊ฐœ ์ด์ƒ ์„ ํƒ
Security group๐Ÿ” ๋ฐฉํ™”๋ฒฝ ์—ญํ• ์„ ํ•˜๋Š” ๋ณด์•ˆ ๊ทธ๋ฃน ์„ ํƒ
โžค ์ธ๋ฐ”์šด๋“œ/์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ ์ œ์–ด, ๊ธฐ์กด ๊ทธ๋ฃน ์„ ํƒ ๋˜๋Š” ์ƒˆ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ
Public IP๐ŸŒ ํผ๋ธ”๋ฆญ IP ์ž๋™ ํ• ๋‹น ์—ฌ๋ถ€
โžค ์ธํ„ฐ๋„ท ์ ‘๊ทผ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Turned on์œผ๋กœ ์„ค์ • (ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท์—์„œ ์‚ฌ์šฉ)

โœ… Tips

VPC/Subnet
โ†’ ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํผ๋ธ”๋ฆญ IP ํ• ๋‹น์„ ์ผœ์•ผ ์™ธ๋ถ€ ํ†ต์‹  ๊ฐ€๋Šฅ
โ†’ ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์—์„œ๋Š” NAT Gateway ๋“ฑ์„ ํ†ตํ•ด ์™ธ๋ถ€ ํ†ต์‹  ํ•„์š”

Security group
โ†’ ์ตœ์†Œ ํฌํŠธ๋งŒ ์—ด๊ณ , ํŠน์ • IP๋งŒ ํ—ˆ์šฉํ•˜๋Š” ์‹์œผ๋กœ ๋ณด์•ˆ ์›์น™ ์ค€์ˆ˜

Public IP
โ†’ ์™ธ๋ถ€ API ํ˜ธ์ถœ, S3 ์ ‘๊ทผ ๋“ฑ ์ธํ„ฐ๋„ท ์ ‘์†์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ์ผœ์•ผ ํ•จ


๐Ÿ› ๏ธ ECS Service Load balancing ์ฃผ์š” ํ•ญ๋ชฉ ์„ค๋ช…

ํ•ญ๋ชฉ์„ค๋ช… ๋ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ
Use load balancingโš–๏ธ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€ ์„ ํƒ
โžค ์—ฌ๋Ÿฌ Task ๊ฐ„ ํŠธ๋ž˜ํ”ฝ์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„์‚ฐ
VPC๐ŸŒ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ์†ํ•  VPC
โžค ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” VPC์™€ ๋™์ผํ•ด์•ผ ํ•จ (awsvpc ๋ชจ๋“œ ๊ธฐ์ค€)
Load balancer type๐Ÿ“š ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์ข…๋ฅ˜ ์„ ํƒ
โžค Application Load Balancer(ALB) ๋˜๋Š” Network Load Balancer(NLB)
- ALB: HTTP/HTTPS ๊ธฐ๋ฐ˜, ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ๊ฐ€๋Šฅ
โžค ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ
- NLB: TCP/UDP ๊ธฐ๋ฐ˜, ๋น ๋ฅธ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ
โžค ์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„, ๋ฉ”์‹œ์ง• ๋“ฑ ๋„คํŠธ์›Œํฌ ์ง€ํ–ฅ ์„œ๋น„์Šค์— ์ ํ•ฉ
Container๐Ÿ“ฆ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑํ•  ๋Œ€์ƒ ์ปจํ…Œ์ด๋„ˆ์™€ ํฌํŠธ ์ง€์ •
โžค ์˜ˆ: dev-ad-front-container 3000:3000
Load balancer name๐Ÿท๏ธ ALB ๋˜๋Š” NLB ์ด๋ฆ„ ์ง€์ •
โžค ์œ ์ผํ•ด์•ผ ํ•˜๋ฉฐ AWS ๋ฆฌ์†Œ์Šค ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•จ
Listener๐ŸŽง ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•  ํฌํŠธ ๋ฐ ํ”„๋กœํ† ์ฝœ
โžค ์˜ˆ: HTTP : 80, HTTPS : 443 ๋“ฑ
Target group๐ŸŽฏ ์š”์ฒญ์„ ๋ถ„์‚ฐ์‹œํ‚ฌ ECS ์ž‘์—…(Task) ๊ทธ๋ฃน
โžค ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด Target Group ์‚ฌ์šฉ ๊ฐ€๋Šฅ
Target group name๐Ÿท๏ธ ๋Œ€์ƒ ๊ทธ๋ฃน ์ด๋ฆ„ ์ง€์ •
โžค ALB๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•  ECS Task ์ปจํ…Œ์ด๋„ˆ ๊ทธ๋ฃน ์‹๋ณ„์ž
Deregistration delayโณ ๋“ฑ๋ก ํ•ด์ œ ๋Œ€๊ธฐ ์‹œ๊ฐ„(์ดˆ)
โžค ์ข…๋ฃŒ๋˜๋Š” Task๊ฐ€ drain ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์‹œ๊ฐ„ (๊ธฐ๋ณธ 300์ดˆ)
Health check protocolโค๏ธ ํ—ฌ์Šค ์ฒดํฌ์— ์‚ฌ์šฉํ•  ํ”„๋กœํ† ์ฝœ
โžค ์ผ๋ฐ˜์ ์œผ๋กœ HTTP ์‚ฌ์šฉ
Health check path๐Ÿ” ํ—ฌ์Šค ์ฒดํฌ ๊ฒฝ๋กœ
โžค ์˜ˆ: / ๋˜๋Š” /health ์™€ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ

โœ… Tips

  • ALB vs NLB

    • ์›น ์„œ๋น„์Šค๋‚˜ API ์„œ๋ฒ„ โ†’ ALB ์ถ”์ฒœ
    • ๊ณ ์„ฑ๋Šฅ TCP ์„œ๋น„์Šค โ†’ NLB ๊ณ ๋ ค
  • Health check ๊ฒฝ๋กœ๋Š” 200 OK ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ์ •์ƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ฏ€๋กœ /health, /actuator/health ๋“ฑ์˜ ๊ฒฝ๋กœ๋กœ ์„ค์ • ํ•„์š”

  • Deregistration delay๋Š” ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด Task๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ์ „ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ์ • ์‹œ๊ฐ„ ๋Œ€๊ธฐํ•˜๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค.

  • Listener ์„ค์ •์ด ์ž˜๋ชป๋˜๋ฉด ALB๊ฐ€ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์ฃผ์˜ํ•˜์„ธ์š”.


๐Ÿ› ๏ธ ECS Service Service Discovery ์ฃผ์š” ํ•ญ๋ชฉ ์„ค๋ช…

๐Ÿ‘‰ ECS ๋‚ด์—์„œ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ DNS ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์„œ๋น„์Šค ์ด๋ฆ„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ

ํ•ญ๋ชฉ์„ค๋ช… ๋ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ
๊ธฐ๋Šฅ ์š”์•ฝ- Cloud Map์„ ํ†ตํ•ด ECS ์„œ๋น„์Šค์— ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๋ถ€์—ฌ
- ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘/์ข…๋ฃŒ๋  ๋•Œ ์ž๋™์œผ๋กœ ๋“ฑ๋ก/ํ•ด์ œ
VPC ์—ฐ๊ฒฐ๐ŸŒ Service Discovery๋Š” VPC ๋‚ด๋ถ€ ์ „์šฉ DNS๋กœ ์ž‘๋™
โžค ์™ธ๋ถ€ ๊ณต๊ฐœ DNS ์•„๋‹˜
์‚ฌ์šฉ ๋ชฉ์ - ์„œ๋น„์Šค ๊ฐ„ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์—†์ด ์ง์ ‘ ์ ‘๊ทผ
- ์˜ˆ: http://user-service.local:8080
Namespace๐Ÿ—‚๏ธ Cloud Map์—์„œ ์ƒ์„ฑ๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ฌ์šฉ
โžค ์˜ˆ: local, internal, svc.cluster.local ๋“ฑ
Service Name๐Ÿท๏ธ ํ•ด๋‹น ECS ์„œ๋น„์Šค์— ๋ถ€์—ฌํ•  DNS ์ด๋ฆ„
โžค ์˜ˆ: user-service โ†’ user-service.local
DNS Record Type๐Ÿ“˜ A ๋˜๋Š” SRV ํƒ€์ž… ์„ ํƒ
โžค ์ผ๋ฐ˜์ ์œผ๋กœ A ์‚ฌ์šฉ (IP ์ฃผ์†Œ ๋ฐ˜ํ™˜)
TTL (Time To Live)โฑ๏ธ DNS ์บ์‹œ ์œ ์ง€ ์‹œ๊ฐ„ ์„ค์ •
โžค ๊ธฐ๋ณธ๊ฐ’์€ ๋ณดํ†ต 60์ดˆ ์ •๋„, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

๐Ÿ”น ๊ฒฐ๋ก 

โญ ์„œ๋ฒ„ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š” ์—†๋Š” ์™„์ „ํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜

  • EC2 ๊ด€๋ฆฌ ๋ถˆํ•„์š” โ†’ ์˜คํ† ์Šค์ผ€์ผ, ํŒจ์น˜, ์œ ์ง€๋ณด์ˆ˜ ๋ถ€๋‹ด โ†“, ์ธํ”„๋ผ ๋น„์šฉ์€ ์‹ค์ œ ์‚ฌ์šฉํ•œ ๋ฆฌ์†Œ์Šค๋งŒํผ๋งŒ ์ง€๋ถˆ

โญ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จ

  • Service Discovery๋ฅผ ํ™œ์šฉํ•˜๋ฉด DNS ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค๋ฅธ ECS ์„œ๋น„์Šค์— ๋ฐ”๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์—†์ด๋„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ ( โ€ป EC2 ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ํ™˜๊ฒฝ์—์„œ dns_sd_configs ํ™œ์šฉ ๊ฐ€๋Šฅ )

โญ ๋†’์€ ํ™•์žฅ์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ

profile
๋‹ค์–‘ํ•œ ๊ฒฝํ—˜๊ณผ ์‹ค๋ฌด์˜ ๊นŠ์ด๋กœ ํ‰๊ฐ€๋ฐ›๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ ๋ถ€๋”ชํžˆ๋ฉฐ ๋ฐฐ์šด ๊ฒƒ๋“ค์ด ๊ฐ€์žฅ ์˜ค๋ž˜ ๋‚จ๋Š”๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€