AWS

GreenBeanยท2022๋…„ 3์›” 24์ผ
0
post-thumbnail

ECS

ECS๋ž€?

  • ECS(Elastic Container Service)๋Š” ์ปจํ…Œ์ด๋„ˆ๋“ค์˜ ํ—ฌ์Šค๋ฅผ ์ฒดํฌํ•˜๊ณ  ์ผ์ •์ˆ˜์ค€ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ๋™์ž‘ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค
    • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์•„๋งˆ์กด ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์–ผ์ถ” ๋งž์Œ
  • ECS๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค
    • ECS์˜ ์žฅ์ ์€ ๋‹ค์–‘ํ•œ AWS ๊ธฐ๋Šฅ๊ณผ ํ†ตํ•ฉ์ด ์‰ฝ๊ณ  ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ๋น„ํ•ด์„œ ์‰ฝ๊ฒŒ ์ ์šฉ์ด ๊ฐ€๋Šฅ

Tip!

  • ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ์—๋Š” Docker์—์„œ ๋งŒ๋“  Docker Swarm, ๊ตฌ๊ธ€์˜ Kubernetes, ํ•˜์‹œ์ฝ”ํ”„์˜ Nomad ๋“ฑ ๋‹ค์–‘ํ•œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ๊ฐ€ ์žˆ์Œ

์‹œ์ž‘ ์œ ํ˜•

FARGATE

  • ์ปจํ…Œ์ด๋„ˆ์— ์ ํ•ฉํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ… ์—”์ง„์œผ๋กœ ECS ๋ฐ EKS์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌ ํ•  ํ•„์š” ์—†์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณ„๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ง€์ •ํ•˜์—ฌ ๊ด€๋ฆฌ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์•ฑ์— ์ง‘์ค‘ํ•˜์—ฌ ์ธํ”„๋ผ๊ฐ€ ์•„๋‹Œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Œ
    • Lambda์™€ ๋งค์šฐ ์œ ์‚ฌํ•œ๋ฐ AWS์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Fargate Pool์—์„œ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ง€๊ณ ์™€์„œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰
    • Lambda์ฒ˜๋Ÿผ ์ดˆ๋‹น ๊ณผ๊ธˆ์ด์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์ด ๋น„์‹ธ๋ฉฐ ํ”„๋ฆฌํ‹ฐ์–ด ๋Œ€์ƒ๋„ ์•„๋‹˜
  • FARGATE๊ฐ€ ์ ํ•ฉํ•œ ๊ฒฝ์šฐ
    • ๋‹จ๊ธฐ๊ฐ„์— ์—„์ฒญ๋‚œ CPU ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ
    • 15๋ถ„์„ ๋„˜๊ฒจ Lambda์—์„œ๋Š” ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ
    • ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ

EC2

  • EC2 ์ปจํ…Œ์ด๋„ˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ECS ์„œ๋น„์Šค ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์˜ FARGATE ๋ณด๋‹ค ๋น„์šฉ์ด ์ €๋ ดํ•˜๋‚˜ ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ์ธํ”„๋ผ ํ™•์žฅ์ด FARGATE ์— ๋น„ํ•ด์„œ ์ ์Œ
  • EC2๊ฐ€ ์ ํ•ฉํ•œ ๊ฒฝ์šฐ
    • ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ๋™์ผํ•œ ๋””์Šคํฌ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ
    • ์„ธ๋ฐ€ํ•œ ์ธ์Šคํ„ด์Šค ์„ธํŒ…์ด ํ•„์š”ํ•œ ์ƒํ™ฉ
    • ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ

ECS ์‚ฌ์šฉ ์ด์ 

  • ๊ฐ„๋‹จํ•œ API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ ๋ฐ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Œ
  • ์ค‘์•™ ์ง‘์ค‘์‹ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹ค์ˆ˜์˜ ์นœ์ˆ™ํ•œ EC2 ๊ธฐ๋Šฅ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Œ
  • ์ผ๊ด€๋œ ๋ฐฐํฌ ๋ฐ ๊ตฌ์ถ• ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ , ๋ฐฐ์น˜ ๋ฐ ETL(Extract-Transform-Load) ์›Œํฌ๋กœ๋“œ๋ฅผ ๊ด€๋ฆฌ ๋ฐ ํฌ๊ธฐ ์กฐ์ •ํ•˜๊ณ , ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๋ชจ๋ธ์— ์ •๊ตํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ

ECS์˜ ์ž‘๋™ ๋ฐฉ์‹

  • ECS์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ํฌ๊ฒŒ 5๊ฐ€์ง€
    • Task(์ž‘์—…)
    • Task Definition(์ž‘์—… ์ •์˜)
    • Service(์„œ๋น„์Šค)
    • Continer Instacne(์ปจํ…Œ์ด๋„ˆ ์ธ์Šคํ„ด์Šค)
    • Cluster(ํด๋Ÿฌ์Šคํ„ฐ)

โ‘  Task

  • ECS์˜ ์ตœ์†Œ ๋‹จ์œ„๋Š” task
    • 1๊ฐœ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ task์— ๊ตฌ์„ฑ๋จ

โ‘ก Task Definition

  • task์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” task definition์— JSON ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์Œ
    • ์ž‘์„ฑ๋œ ๋‚ด์šฉ์„ ์ฐธ๊ณ ๋กœ task๊ฐ€ ๊ตฌ์„ฑ๋จ
  • task definition์—์„œ ์ž‘์—… ๋ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฐธ๊ณ ํ•  ์ด๋ฏธ์ง€, ์‚ฌ์šฉํ•  ๋ฆฌ์†Œ์Šค ์–‘, ์‹œ์ž‘ ์œ ํ˜•, ๋กœ๊น… ๊ตฌ์„ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ

โ‘ข Service

  • task definition์„ ์ฐธ๊ณ ํ•˜์—ฌ task๋ฅผ ์‹คํ–‰
    • ๋˜ํ•œ ์›ํ•˜๋Š” ์ˆ˜์˜ task๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ ์—ญํ• ์„ ํ•จ
  • ์„ ํƒ์ ์œผ๋กœ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๋’ค์—์„œ ์‹คํ–‰ํ•˜์—ฌ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ๊ณผ ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ์Œ

โ‘ฃ Container Instance

  • ECS ์ปจํ…Œ์ด๋„ˆ ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  cluster์— ๋“ฑ๋ก๋œ EC2 ์ธ์Šคํ„ด์Šค
    • ๋ฆฌ๋ˆ…์Šค, ์œˆ๋„์šฐ OS๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์˜จํ”„๋ ˆ๋ฏธ์Šค VM ๋“ฑ์˜ ๋‹ค๋ฅธ OS๋„ ์ง€์›
  • Fargate ์‹œ์ž‘ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” task๋Š” ์„œ๋ฒ„๋ฆฌ์Šค๋กœ ๋ฐฐํฌ๋˜๋ฏ€๋กœ container instance๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Œ

โ‘ค Cluster

  • container instance(Fargate๋ผ๋ฉด task)์˜ ๋…ผ๋ฆฌ์  ๊ทธ๋ฃน

์ž‘์—… ์ˆœ์„œ

  • โ‘ด ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅ์†Œ(ECR)์— ์ปค๋ฐ‹
  • โ‘ต task definition์—์„œ ์‚ฌ์šฉํ•  ์ด๋ฏธ์ง€ ๋ฐ ์‹œ์ž‘ ์œ ํ˜•, ๋ฆฌ์†Œ์Šค ์ •์˜
  • โ‘ถ cluster ์ƒ์„ฑ
  • โ‘ท service๊ฐ€ task definition์„ ์ฐธ๊ณ ํ•˜์—ฌ task ์ƒ์„ฑ
  • โ‘ธ ELB์— ๋“ค์–ด์˜จ ์š”์ฒญ์— ๋”ฐ๋ผ ์˜คํ†  ์Šค์ผ€์ผ๋ง ๋ฐ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ

Tip! ์ถ”๊ฐ€ ๋‚ด์šฉ

Task - Service ๊ด€๊ณ„

Task Definition

  • ์›ํ•˜๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์–ด๋–ค ์„ค์ •์œผ๋กœ ๋ช‡ ๊ฐœ ์ด์ƒ ์ƒ์„ฑ ํ•  ์ง€๋ฅผ ์ •์˜ํ•œ ์„ธํŠธ
    • ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€, CPUโ€ข๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค ํ• ๋‹น ์„ค์ •, Port ๋งคํ•‘, Volume ์„ค์ • ๊ฐ™์€ ๊ฒƒ๋“ค์ด ํฌํ•จ๋˜๋ฉฐ ๊ธฐ์กด docker run ๋ช…๋ น์—์„œ ๊ฐ€๋Šฅํ–ˆ๋˜ ๋Œ€๋ถ€๋ถ„ ์˜ต์…˜์ด ์„ค์ • ๊ฐ€๋Šฅ
    • ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”์— ๋”ฐ๋ผ์„œ ์ž๋™์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Œ
      • ๋”ฐ๋ผ์„œ ๋งค๋ฒˆ ์ด๋Ÿฌํ•œ ์„ค์ •๋“ค์„ ์ง€์ •ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋ฏธ๋ฆฌ ์„ค์ •๋“ค์˜ ์ง‘ํ•ฉ์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ์ •์˜ํ•ด๋†“๊ณ  ์‚ฌ์šฉํ•จ
      • ์ด ๋‹จ์œ„๊ฐ€ ๋ฐ”๋กœ task definition
    • ํ•œ ๋ฒˆ task definition์„ ๋งŒ๋“ค๋ฉด ์ด task definition์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ • ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ
  • task definition์—๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ task definition ๋‚ด๋ถ€์— ์ •์˜๋œ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์ด๋Š” link ์„ค์ •์œผ๋กœ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
  • task definition์—์„œ ์ •์˜๋œ ๋Œ€๋กœ ์‹ค์ œ ์ƒ์„ฑ๋œ container set๋“ค์„ task๋ผ๊ณ  ๋ถ€๋ฆ„

Task

  • task definition์—์„œ ์ •์˜๋œ ๋Œ€๋กœ ๋ฐฐํฌ๋œ container set์„ task๋ผ๊ณ  ๋ถ€๋ฆ„
    • ์ฆ‰ task ์•ˆ์—๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ECS์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„๋Š” task
  • task๋Š” cluster์— ์†ํ•œ container instance(EC2 instance)์— ๋ฐฐํฌ๋˜๊ฒŒ ๋จ
    • ๋˜ํ•œ task๋Š” ์—ฌ๋Ÿฌ container instance(EC2 instace)์— ๋ฐฐํฌ ๊ฐ€๋Šฅ

Service

  • task๋“ค์˜ life cycle์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์„ service๋ผ๊ณ  ํ•จ
  • ๊ฐ task๋“ค์€ ๊ฐ์ž ๋‹ค๋ฅธ ์„œ๋น„์Šค
  • task๋ฅผ cluster์— ๋ช‡ ๊ฐœ๋‚˜ ๋ฐฐํฌํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๊ณ  ์‹ค์ œ task๋“ค์„ ์™ธ๋ถ€์— ์„œ๋น„์Šค ํ•˜๊ธฐ ์œ„ํ•ด ELB์— ์—ฐ๋™ ๋˜๋Š” ๋ถ€๋ถ„์„ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋จ
    • ๋งŒ์•ฝ ์‹คํ–‰ ์ค‘์ธ task๊ฐ€ ์–ด๋–ค ์ด์œ ๋กœ ์ž‘๋™์ด ์ค‘์ง€ ๋˜๋ฉด ์ด๊ฒƒ์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•ด ์ƒˆ๋กœ์šด task๋ฅผ cluster์— ๋ฐฐํฌ ํ•˜๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ์— ๋Œ€ํ•œ ์ •์ฑ…๋„ service์—์„œ ๊ด€๋ฆฌ
    • ์ฆ‰, ์˜คํ†  ์Šค์ผ€์ผ๋ง๊ณผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• 

Container Instance (EC2 Instance)

  • ECS๋Š” container ๋ฐฐํฌ(task ๋ฐฐํฌ)๋ฅผ EC2 instance ๊ธฐ๋ฐ˜์— ์˜ฌ๋ฆฌ๋„๋ก ์„ค๊ณ„ ๋˜์–ด ์žˆ์Œ
    • task๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋“ฑ๋ก๋œ EC2 instance๋ฅผ container instance๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ECS๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋ฉด ์ƒ์„ฑ๋˜๋Š” default cluster์—๋Š” container instance๋ฅผ ์ž๋™์œผ๋กœ ํ• ๋‹น ์‹œ์ผœ ์ฃผ๊ธฐ๋„ ํ•˜์ง€๋งŒ
    ์ƒˆ๋กญ๊ฒŒ cluster๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ง์ ‘ container instance๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•จ
  • container instance์šฉ AMI ์ด๋ฏธ์ง€๋Š” AWS ์ธก์—์„œ ์ œ๊ณตํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅ
  • ํ•˜๋‚˜์˜ container instace ๋‚ด๋ถ€์—๋Š” ๊ฐ๊ฐ์˜ ๋‹ค๋ฅธ task๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ์ˆ˜ ์žˆ์Œ

Cluster

  • task๊ฐ€ ๋ฐฐํฌ๋˜๋Š” container instance๋“ค์€ ๋…ผ๋ฆฌ์ ์ธ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ด๊ฒŒ ๋˜๋Š”๋ฐ ์ด ๋‹จ์œ„๋ฅผ cluster๋ผ๊ณ  ๋ถ€๋ฆ„
  • task๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ instance๋Š” ๋ฐ˜๋“œ์‹œ cluster์— ๋“ฑ๋ก๋˜์–ด์•ผ ํ•จ

Cluster - Container Instance์™€ Task - Service์˜ ๊ด€๊ณ„

ECS์˜ ๊ตฌ์กฐ์  ํŠน์ง• ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

ECS์˜ Docker Host ์—ญํ• ์€ EC2 Instance๊ฐ€ ๋‹ด๋‹น

  • ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ณดํ†ต ๋ฌผ๋ฆฌ ์„œ๋ฒ„์— Docker Daemon์„ ์„ค์น˜ํ•˜๊ณ  ๊ทธ ์œ„์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฐฐํฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, Hypervisor ๊ธฐ๋ฐ˜์—์„œ ๋™์ž‘๋˜๋Š” VM ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์„œ๋น„์Šค๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š”๊ฒŒ ํฐ ์žฅ์  ์ค‘ ํ•˜๋‚˜
    • ํ•˜์ง€๋งŒ AWS๋Š” ECS๋ฅผ ์œ„ํ•œ Container ์ „์šฉ ์„œ๋ฒ„ํŒœ์„ ๋”ฐ๋กœ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ , VM ํ˜•ํƒœ์˜ EC2 instance์—์„œ Container ๋ฅผ ๋™์ž‘์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ์Œ
    • ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?
  • AWS์˜ ์ „์ฒด ์„œ๋น„์Šค ์„ค๊ณ„๋ฅผ ๋ณด๋ฉด EC2 instance๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋“ค์ด ์—ฐ๊ณ„๋˜๋Š” ๋ชจ์–‘์ƒˆ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ๋Š”๋ฐ, ์ด๋Š” AWS์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์ด๊ธฐ๋„ ํ•จ
    • Network ์„œ๋น„์Šค์ธ VPC์™€ ELB, EIP ์—์„œ ๋ถ€ํ„ฐ Auto scaling, Cloud Formation ๋“ฑ ์ˆ˜์‹ญ๊ฐ€์ง€์˜ ์„œ๋น„์Šค๊ฐ€ ์กฐ์ง์ ์œผ๋กœ ์—ฎ์—ฌ ์žˆ์œผ๋ฉฐ ์ด ์ค‘์‹ฌ์—๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” EC2 Instance๊ฐ€ ์žˆ์Œ
    • ๋งŒ์•ฝ, AWS๊ฐ€ ECS ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด Container ์„œ๋ฒ„ํŒœ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์„ค๊ณ„ํ–ˆ๋‹ค๋ฉด, ๊ธฐ์กด EC2 ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋“ค๊ณผ์˜ ์—ฐ๊ณ„์— ๋Œ€ํ•˜์—ฌ ๊ต‰์žฅํžˆ ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•  ์ˆ˜ ๋ฐ–์— ์—†์„ ๊ฒƒ
    • ์ฐจ๋ผ๋ฆฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ EC2 instance์— ์˜ฌ๋ฆผ์œผ๋กœ์„œ, EC2 ์ค‘์‹ฌ์œผ๋กœ ์—ฎ์—ฌ ์žˆ๋Š” ๊ธฐ์กด์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์žฅ์ ์„ ํก์ˆ˜ํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ์ด๋“์ด ๋งŽ์•˜์„ ๊ฒƒ์ด๋ผ ์ถ”์ธก

Tip! ์„œ๋ฒ„ํŒœ์ด๋ž€?

  • ์„œ๋ฒ„ํŒœ์€ ํ•œ๊ณณ์— ์ง‘๋‹จ์œผ๋กœ ์ˆ˜์šฉ๋˜์–ด ๋™์ž‘๋˜๋Š” ์ผ๋ จ์˜ ์ปดํ“จํ„ฐ๊ตฐ์„ ๋งํ•จ
    • ์„œ๋ฒ„ํŒœ์€ ๋•Œ๋กœ ์„œ๋ฒ„ ํด๋Ÿฌ์Šคํ„ฐ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•จ
  • ์›น์„œ๋ฒ„ํŒœ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์„œ๋ฒ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ ๋˜๋Š” ๋‹ค์ค‘ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›นํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ISP๋ฅผ ์ง€์นญ

Overlay Network๊ฐ€ ์•„๋‹Œ ELB๋ฅผ ์ด์šฉํ•œ Network ๊ตฌ์กฐ

  • Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋Š˜์–ด๋‚˜๋ฉด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋Œ€๊ทœ๋ชจ๋กœ ์šด์˜ํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์ ์  ๋งŽ์•„์ง€๊ณ , ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‹ค์ˆ˜์˜ Docker Host ๋ฅผ Clustering ํ˜•ํƒœ๋กœ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ํ•„์š”์„ฑ์ด ์ปค์ง€๊ฒŒ ๋จ
    • Host์— Container๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐฐํฌํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์Šค์ผ€์ค„๋ง ๊ด€๋ จ ๋ฌธ์ œ, ๋‹ค๋ฅธ Host์— ๋ฐฐํฌ๋œ Container ์‚ฌ์ด์˜ ํ†ต์‹  ๋ฌธ์ œ, ๋™์ผ Port๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ๋™์‹œ ์ˆ˜์šฉํ•  ๋•Œ์˜ Host ํฌํŠธ ๋งตํ•‘ ์ด์Šˆ ๋“ฑ์ด ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ๋“ค
  • ์ฃผ๋ชฉ ๋ฐ›๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ Orchestration ์‹œ์Šคํ…œ์ธ Kubernetes๋‚˜ Docker Swarm์˜ ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์€ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Overlay Network ๊ตฌ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Œ
    • Host๊ฐ„ ๋„คํŠธ์›Œํฌ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ฌถ์–ด์„œ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” Overlay Network๋Š” ์ปจํ…Œ์ด๋„ˆ Orchestration์„ ์œ„ํ•œ ์ค‘์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ณ ๋ ค๋˜๊ณ  ์žˆ๋Š” ์ถ”์„ธ
  • ๊ทธ๋ ‡๋‹ค๋ฉด ECS์˜ Host Clustering์„ ์œ„ํ•œ Network ๊ตฌ์กฐ๋Š” ์–ด๋– ํ• ๊นŒ?
    • ECS์˜ cluster๋Š” ๋งค์šฐ ๋‹จ์ˆœ
    • cluster๋Š” Docker Host์˜ ๋…ผ๋ฆฌ์  ๋ฌถ์Œ์ผ ๋ฟ์ด์ง€, ์ด๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ Network ์„ค๊ณ„ ๊ตฌ์กฐ๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ž„
  • Overlay Network๊ฐ€ ์—†๋‹ค๋ฉด ๋‹ค๋ฅธ Host์— ์ƒ์ฃผํ•œ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์ด์—๋Š” ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹น๋œ Private IP๋ฅผ ์ด์šฉํ•ด Nativeํ•˜๊ฒŒ ํ†ต์‹ ํ•˜๊ฒŒ ์–ด๋ ค์šฐ๋ฉฐ, ๋Œ€์‹  ์™ธ๋ถ€ ํ†ต์‹ ๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ฐ Host IP๋กœ ์ปจํ…Œ์ด๋„ˆ์— ๋งตํ•‘๋œ Port๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฐ–์—” ์—†์Œ
    • ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ„ ํ†ต์‹ ์„ ๋นˆ๋ฒˆํžˆ ์š”๊ตฌ ํ•˜๋Š” Application์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒฝ์šฐ์— ์ƒ๋‹นํžˆ ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Œ
    • Host ์‚ฌ์ด๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ฌถ์–ด์ค„ Network ๊ตฌ์กฐ๊ฐ€ ์—†๋‹ค๋ฉด ๊ฒฐ๊ตญ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์ด ํ†ต์‹ ์„ ์œ„ํ•ด์„œ๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์ฃผํ•œ Host์˜ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€๋กœ ์•Œ์•„์•ผ๋งŒ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ
    • ํ•˜์ง€๋งŒ ECS๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ธฐ์กด ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜๋กœ ์–ด๋Š์ •๋„ ํ•ด์†Œํ–ˆ๋Š”๋ฐ ๋ฐ”๋กœ ELB

  • ECS๋Š” service ๋‚ด๋ถ€์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ task๊ฐ€ ๋ฐฐํฌ๋ ๋•Œ ELB์˜ ๋ฐธ๋Ÿฐ์‹ฑ ๊ทธ๋ฃน์— task๋“ค์ด ์ž๋™์œผ๋กœ ๋“ค์–ด๊ฐ€๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Œ
    • ์ฆ‰, service ์‚ฌ์ด์˜ ํ†ต์‹ ์€ ELB๋ฅผ ํ†ตํ•ด ํ†ต์‹ ์„ ํ•จ์œผ๋กœ์„œ task์˜ life cycle์„ ์œ ์—ฐํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ๊ตฌ์กฐ
    • ๊ฐ™์€ service์— ์†ํ•œ task๋“ค์ด ๋‹ค๋ฅธ Host์— ์žˆ๊ฒŒ ๋œ๋‹ค๋ฉด ์ด๋“ค ์‚ฌ์ด์˜ ํ†ต์‹ ์€ ์—ฌ์ „ํžˆ ์–ด๋ ต๋‹ค๋Š” ํ•œ๊ณ„๋Š” ์žˆ์ง€๋งŒ, ๊ตณ์ด ๋™์ผํ•œ service ์•ˆ์— ๋™์ผํ•œ task๋ผ๋ฆฌ ํ†ต์‹ ํ•  ์ผ์€ ๋งŽ์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ์— ํฐ ๋ฌธ์ œ๋Š” ์—†์„ ๊ฒƒ์œผ๋กœ ๋ณด์ž„
      • ๋ณดํ†ต Web ์„œ๋ฒ„๊ฐ€ WAS๋‚˜ DB์™€ ํ†ต์‹ ํ•˜์ง€, ๊ตณ์ด ๋™์ผํ•œ ์ผ์„ ํ•˜๋Š” Web ์„œ๋ฒ„ ๋ผ๋ฆฌ๋Š” ํ†ต์‹ ์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ผ์ด ์—†์Œ

ํ•˜๋‚˜์˜ Host์—๋Š” ํ•œ ๊ฐœ์˜ Task๋งŒ ์ˆ˜์šฉ ๊ฐ€๋Šฅ

  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ Host์˜ ํŠน์ • Port๋ฅผ ์ ์œ  ํ•ด์•ผ๋งŒ ํ•˜๋Š” ๊ตฌ์กฐ๋Š” ๊ฒฐ๊ตญ ๊ฐ™์€ Port๋กœ ์„œ๋น„์Šค ํ•˜๋ ค๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•œ Host์— ํ•œ ๊ฐœ ๋ฐ–์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ
  • ECS ๊ตฌ์กฐ์  ์ธก๋ฉด์—์„œ ๋ณด๋ฉด service ์•ˆ์— task๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ˆซ์ž๋Š” cluster์— ๋“ฑ๋ก๋œ container instance ๊ฐœ์ˆ˜ ์ด์ƒ์ด ๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ
    • ์˜ˆ๋ฅผ ๋“ค์–ด, service ์•ˆ์— Apache ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์˜๋œ task๋ฅผ 2๊ฐœ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ Host๋Š” ๋‘๋Œ€ ์ด์ƒ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋œป
    • ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ ์ง‘์ ๋„๊ฐ€ ๊ทธ๋งŒํผ ๋‚ฎ์•„์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ์  ํ•œ๊ณ„
  • Kubernetes์˜ ๊ฒฝ์šฐ Overlay Network๊ณผ Pods - Service ๋ผ๋Š” ๋…ผ๋ฆฌ์  ๊ฐœ๋…์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒƒ๊ณผ ๋น„๊ตํ•˜๋ฉด ์•„์‰ฌ์šด ๋ถ€๋ถ„
  • ๋Œ€์‹  Host ๋งˆ๋‹ค ๋‹ค๋ฅธ task๋“ค์ด ๊ณต์กดํ•˜๋„๋ก ๋งŒ๋“ค์–ด ์ง‘์ ๋„๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด ๋‹จ์ ์„ ์ƒ์‡„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณด์ž„
    • ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด container instance๋Š” ๋‘ ๋Œ€์ด์ง€๋งŒ, ๊ฐ๊ฐ ๋‹ค๋ฅธ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” service๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์˜ฌ๋ ค ์ปจํ…Œ์ด๋„ˆ ์ง‘์ ๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Œ

ECS ํŠน์„ฑ์— ๋งž๋Š” Application ์„ค๊ณ„

  • ECS ๊ธฐ๋ฐ˜์œผ๋กœ Application์„ ์ž˜ ์šด์˜ํ•˜๋ ค๋ฉด task์™€ service ๊ฐœ๋…์˜ ๊ตฌ์กฐ์  ํŠน์ง•์„ ์ดํ•ดํ•˜๊ณ  Application์„ ์„ค๊ณ„ ํ•ด์•ผ ํ•จ

โ‘  Task Definition์—๋Š” ๋‹จ์ผ Tier ์†์„ฑ์˜ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์ •์˜ํ•˜๋Š”๊ฒŒ ์œ ๋ฆฌ

  • task์—๋Š” ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ
  • ํ•˜์ง€๋งŒ ์ตœ์†Œ ๋ฐฐํฌ ๋‹จ์œ„๊ฐ€ task ๋‹จ์œ„ ์ด๋ฏ€๋กœ ๋‹จ์ผํ•œ ์†์„ฑ์˜ ์ปจํ…Œ์ด๋„ˆ ํ•˜๋‚˜๋งŒ ์ •์˜ํ•˜๋Š” ๊ฒŒ ์ข‹์€ ์„ค๊ณ„ ๋ฐฉํ–ฅ์ผ ๊ฒƒ
    • ์˜ˆ๋ฅผ ๋“ค์–ด, task definition ์— Web - WAS - DB ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ •์˜ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •
    • ๋งŒ์•ฝ task๊ฐ€ ํ•˜๋‚˜์ธ ์ƒํ™ฉ์—์„œ๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ
    • ํ•˜์ง€๋งŒ task๋ฅผ ์ถ”๊ฐ€๋กœ ๋Š˜๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, task์— ์†ํ•œ Web - WAS - DB ์…‹์ด ํ•œ๊บผ๋ฒˆ์— ๋Š˜์–ด๋‚˜๊ฒŒ ๋จ
  • ๋ณดํ†ต ์„œ๋น„์Šค์— ๋ถ€ํ•˜๊ฐ€ ์ผ์–ด๋‚˜๋ฉด, ๊ฐ Tier ๋ณ„๋กœ ์–ด๋–ค ๊ตฌ๊ฐ„์—์„œ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›๋Š”์ง€ ํŒ๋‹จ ํ›„ ํ•ด๋‹น Tier ์˜ ์„œ๋ฒ„๋งŒ ์ถ”๊ฐ€ํ•˜์—ฌ LB์— ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ ( = Scale-Out )
  • ํ•˜์ง€๋งŒ task์— ๋ชจ๋“  Tier ๋ฅผ ํ˜ผํ•ฉ์‹œ์ผœ ๊ตฌ์„ฑํ•˜๋ฉด Scale-Out ํ˜•ํƒœ์˜ ์ฆ์„ค์€ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ
    • ๋”ฐ๋ผ์„œ, task์˜ Scale-Out ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ task๋ฅผ Tier ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ •์˜ํ•˜๋Š”๊ฒŒ ์ข‹์Œ

โ‘ก ์šฉ๋„์— ๋งž๊ฒŒ Container Instance๋ฅผ VPC๋กœ ๊ตฌ๋ถ„ํ•ด ์‚ฌ์šฉํ•˜๋ฉด ๋ณด์•ˆ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ

  • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์˜ฌ๋ฆด Host๋Š” EC2๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ EC2์— ์ ์šฉ๋˜๋Š” ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋“ค์„ ๊ทธ๋Œ€๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ๋”ฐ๋ผ์„œ VPC์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋  EC2๋ฅผ ๊ตฌ๋ถ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋”์šฑ ๋ณด์•ˆ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ
    • ์˜ˆ๋ฅผ ๋“ค์–ด, cluster A๋Š” ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•  Web ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ๋ฐฐํฌํ•˜๊ณ  cluster B์—๋Š” ์™ธ๋ถ€ ๋…ธ์ถœ์„ ํ•˜์ง€ ์•Š๋Š” WAS ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •
    • ์ด๋•Œ cluster A์— ์†ํ•˜๋Š” EC2 instance๋“ค์€ VPC์˜ Public Subnet ์— ์†ํ•˜๋„๋ก ํ•˜๊ณ , cluster B ์— ์†ํ•˜๋Š” EC2 instance๋“ค์€ VPC์˜ Private Subnet์— ์†ํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
    • ๋‹จ, Private Subnet์— ๋ฐฐํฌ๋œ EC2 instance๋“ค์€ ์™ธ๋ถ€ ํ†ต์‹ ๊ณผ ๋‹จ์ ˆ๋˜๊ฒŒ ๋˜๋ฏ€๋กœ, ECS๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด NAT Gateway ์™€ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•จ

โ‘ข ์ปจํ…Œ์ด๋„ˆ ํŠน์„ฑ์ƒ DB์™€ ๊ฐ™์€ Statefulํ•œ ์„œ๋ฒ„๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ณด๋‹ค๋Š” EC2๋‚˜ RDS๋ฅผ ์ด์šฉํ•ด ์—ฐ๊ณ„ํ•ด์„œ ์‚ฌ์šฉ

  • ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ์กด์˜ ์ธํ”„๋ผ ๋ฐฉ์‹์— ๋น„ํ•ด ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ์— ์ข€ ๋” ์œ ์—ฐ
    • ๋ฐ”๊ฟ” ๋งํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋Š” ์–ธ์ œ๋“  ์‚ญ์ œ ๋  ์ˆ˜ ์žˆ์Œ์„ ์ „์ œ๋กœ ํ•ด์•ผํ•จ
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ Data Store๊ฐ€ ๋ชฉ์ ์ธ DB๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ปจ์…‰๊ณผ๋Š” ์ƒ๋ฐ˜๋œ ํ˜•ํƒœ์ž„์„ ๊ณ ๋ คํ•ด์•ผ ํ•จ
    • ๋”ฐ๋ผ์„œ ์ปจํ…Œ์ด๋„ˆ์˜ ํŠน์„ฑ์ƒ Statelessํ•œ ์„ฑ๊ฒฉ์˜ Web์ด๋‚˜ WAS ์„œ๋ฒ„์— ์ด์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅ
  • DB์˜ ๊ฒฝ์šฐ AWS์˜ RDS์™€ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ์™€ ํ•จ๊ป˜ ์“ด๋‹ค๋ฉด ์•ˆ์ „ํ•˜๋ฉด์„œ๋„ ์œ ์—ฐํ•œ ์ธํ”„๋ผ ๊ตฌ์„ฑ์„ ๊ฐ–์ถœ ์ˆ˜ ์žˆ์„ ๊ฒƒ

โ‘ฃ ECR๊ณผ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค๋“ค๊ณผ ์—ฐ๊ณ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์Œ

  • AWS์—๋Š” ECS ๋ง๊ณ ๋„ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ Repository ์„œ๋น„์Šค์ธ ECR๋„ ์„œ๋น„์Šค ํ•˜๊ณ  ์žˆ์Œ
    • ์ด๋ฅผ ECS์™€ ์—ฎ์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋”์šฑ ์ข‹์„ ๊ฒƒ
profile
๐ŸŒฑ Backend-Dev | hwaya2828@gmail.com

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