ECS vs EKS: AWS ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค ์„ ํƒ ๊ฐ€์ด๋“œ

ECS vs EKS: AWS ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค ์„ ํƒ ๊ฐ€์ด๋“œ

D
dongAuthor
6 min read

ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ํ˜„๋Œ€์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค์ธ ECS์™€ EKS ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ•ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผ์ด์‹ ๊ฐ€์š”?

๊ฐ ์„œ๋น„์Šค๋Š” ๊ณ ์œ ํ•œ ์žฅ์ ๊ณผ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ, ํŒ€์˜ ์ „๋ฌธ์„ฑ, ์žฅ๊ธฐ์ ์ธ ๋ชฉํ‘œ์— ๋”ฐ๋ผ ์ตœ์ ์˜ ์„ ํƒ์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๋‘ ์„œ๋น„์Šค์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์„ ๋ช…ํ™•ํžˆ ๋ถ„์„ํ•˜๊ณ , ์‹ค๋ฌด์—์„œ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ตฌ์ฒด์ ์ธ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆํ™”์™€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

์ปจํ…Œ์ด๋„ˆํ™”๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ ์˜์กด์„ฑ์„ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋“  ์ผ๊ด€๋˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. Docker์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋“ค์€ "๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋˜๋Š”๋ฐ"๋ผ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์ฃ .

ํ•˜์ง€๋งŒ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฐฐํฌ, ์Šค์ผ€์ผ๋ง, ๋„คํŠธ์›Œํ‚น, ๊ฐ€์šฉ์„ฑ์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ปจํ…Œ์ด๋„ˆ์˜ ์ž๋™ ๋ฐฐํฌ ๋ฐ ๊ต์ฒด
  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ๊ณผ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ
  • ์Šคํ† ๋ฆฌ์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
  • ์ž๋™ํ™”๋œ ๋กค์•„์›ƒ๊ณผ ๋กค๋ฐฑ

ECS (Elastic Container Service) ์‹ฌํ™” ์ดํ•ด

AWS ECS๋Š” AWS์—์„œ ๊ฐœ๋ฐœํ•œ ์™„์ „ ๊ด€๋ฆฌํ˜• ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. Docker๋ฅผ ์ง€์›ํ•˜๋ฉฐ, AWS ์ƒํƒœ๊ณ„์™€์˜ ๊ธด๋ฐ€ํ•œ ํ†ตํ•ฉ์ด ๊ฐ€์žฅ ํฐ ํŠน์ง•์ด์—์š”.

ECS์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ

ํƒœ์Šคํฌ(Task)๋Š” ECS์—์„œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์ตœ์†Œ ์‹คํ–‰ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํƒœ์Šคํฌ ์ •์˜(Task Definition)๋Š” ํƒœ์Šคํฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” JSON ํ˜•์‹์˜ ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌํ•  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€, ํ• ๋‹นํ•  CPU์™€ ๋ฉ”๋ชจ๋ฆฌ, IAM ์—ญํ• , CloudWatch Logs ์„ค์ • ๋“ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค:

{
  "family": "my-app",
  "taskRoleArn": "arn:aws:iam::123456789012:role/ECSTaskRole",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "web-server",
      "image": "nginx:latest",
      "memory": 512,
      "cpu": 256,
      "essential": true,
      "portMappings": [
        {
          "containerPort": 80,
          "protocol": "tcp"
        }
      ]
    }
  ]
}

**์„œ๋น„์Šค(Service)**๋Š” ์ง€์ •๋œ ์ˆ˜๋งŒํผ์˜ ํƒœ์Šคํฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํƒœ์Šคํฌ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ž๋™์œผ๋กœ ์ƒˆ๋กœ์šด ํƒœ์Šคํฌ๋ฅผ ์ƒ์„ฑํ•ด ์›ํ•˜๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ฃ .

**ํด๋Ÿฌ์Šคํ„ฐ(Cluster)**๋Š” ์„œ๋น„์Šค์™€ ํƒœ์Šคํฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋…ผ๋ฆฌ์  ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. EC2 ์ธ์Šคํ„ด์Šค๋‚˜ Fargate๋ฅผ ํ†ตํ•ด ์‹ค์ œ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค.

ECS์˜ ์ฃผ์š” ์žฅ์ 

ECS๋Š” AWS ์ฝ˜์†”์—์„œ ๋ณต์žกํ•œ YAML ๊ตฌ์„ฑ ์—†์ด ๊ฐ„๋‹จํ•œ ์„ค์ •๋งŒ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CodePipeline, CloudWatch ๊ฐ™์€ AWS ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ์ด ๋งค์šฐ ์›ํ™œํ•˜๋ฉฐ, ์šด์˜ ์ž๋™ํ™”์™€ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

ํŠนํžˆ Fargate๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ์ธํ”„๋ผ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ ๋„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ์šด์˜ ๋ถ€๋‹ด์ด ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋น„์šฉ์ด ์—†๊ณ  ์ „๋ฐ˜์ ์ธ ๊ด€๋ฆฌ ํšจ์œจ์„ฑ์ด ๋†’๋‹ค๋Š” ์ ๋„ ํฐ ๋งค๋ ฅ์ด์—์š”.

EKS (Elastic Kubernetes Service) ์‹ฌํ™” ์ดํ•ด

AWS EKS๋Š” AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒํƒœ๊ณ„์˜ ๋ชจ๋“  ๋„๊ตฌ์™€ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

EKS์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ œ์–ด ํ”Œ๋ ˆ์ธ(Control Plane)์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ „๋ฐ˜์ ์ธ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. API ์„œ๋ฒ„, etcd, ์Šค์ผ€์ค„๋Ÿฌ, ์ปจํŠธ๋กค๋Ÿฌ ๋งค๋‹ˆ์ € ๋“ฑ์ด ํฌํ•จ๋˜๋ฉฐ, EKS์—์„œ๋Š” AWS๊ฐ€ ์ด๋ฅผ ์™„์ „ํžˆ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์›Œ์ปค ๋…ธ๋“œ(Worker Nodes)๋Š” ์‹ค์ œ ์›Œํฌ๋กœ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. EC2 ์ธ์Šคํ„ด์Šค๋กœ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ Fargate๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด์š”:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: app-container
    image: my-app:latest
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
    - containerPort: 8080

EKS์˜ ์ฃผ์š” ์žฅ์ 

EKS์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒํƒœ๊ณ„์˜ ์™„์ „ํ•œ ํ™œ์šฉ์ž…๋‹ˆ๋‹ค. Helm, Istio, Prometheus ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋“ค์„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”. AWS๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ ์ œ์–ด ํ”Œ๋ ˆ์ธ์œผ๋กœ ์šด์˜ ํŽธ์˜์„ฑ๊ณผ ์„œ๋น„์Šค ์•ˆ์ •์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ EC2 ๊ธฐ๋ฐ˜ ๋…ธ๋“œ ์šด์˜์ด๋‚˜ Fargate๋ฅผ ํ†ตํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ๋ฐฉ์‹ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌ์กฐ๋‚˜ ๋Œ€๊ทœ๋ชจ ์ธํ”„๋ผ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•œ ํ™•์žฅ์„ฑ๊ณผ ์„ธ๋ฐ€ํ•œ ์ œ์–ด ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ECS์™€ EKS์˜ ํ•ต์‹ฌ ์ฐจ์ด์ 

์ œ์–ด ํ”Œ๋ ˆ์ธ ๊ด€๋ฆฌ ๋ฐฉ์‹

ECS๋Š” AWS์—์„œ ์ž์ฒด ๊ฐœ๋ฐœํ•œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์„ค์ •์ด ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด EKS๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ œ์–ด ํ”Œ๋ ˆ์ธ์„ AWS๊ฐ€ ๊ด€๋ฆฌํ•˜์ง€๋งŒ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ž์ฒด์˜ ๋ณต์žก์„ฑ์€ ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฐฉ์‹

ECS๋Š” AWS ๊ณ ์œ ์˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ, AWS ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. EKS๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋ฏ€๋กœ ๋‹ค๋ฅธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ๊ณผ ํ˜ธํ™˜์„ฑ์ด ๋›ฐ์–ด๋‚˜์ฃ .

์ƒํƒœ๊ณ„์™€ ๋„๊ตฌ ์ง€์›

EKS๋Š” ๋ฐฉ๋Œ€ํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒํƒœ๊ณ„๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ECS๋Š” AWS ์ค‘์‹ฌ์ ์ธ ๋„๊ตฌ์™€ ์„œ๋น„์Šค์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„ ํƒ์˜ ํญ์—์„œ๋Š” EKS๊ฐ€ ์œ ๋ฆฌํ•˜์ง€๋งŒ, AWS ๋‚ด์—์„œ์˜ ํ†ตํ•ฉ์„ฑ์—์„œ๋Š” ECS๊ฐ€ ๋” ์šฐ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

ECS๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

์‹ ์†์„ฑ๊ณผ ๋‹จ์ˆœํ•จ์ด ์šฐ์„ ์ธ ํ”„๋กœ์ ํŠธ

์Šคํƒ€ํŠธ์—…์ด๋‚˜ ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ์˜ ์„œ๋น„์Šค๋ผ๋ฉด ECS๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ์‹œ๊ฐ„ ๋งŒ์— ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•ด์š”.

ํƒœ์Šคํฌ ์ •์˜๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋Š” ๋‹จ์ˆœํ•จ์ด ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค:

# ECS์—์„œ ์„œ๋น„์Šค ์ƒ์„ฑ ์˜ˆ์‹œ
aws ecs create-service \
    --cluster my-cluster \
    --service-name my-service \
    --task-definition my-app:1 \
    --desired-count 2

AWS ์ƒํƒœ๊ณ„ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

์ด๋ฏธ AWS ์„œ๋น„์Šค๋ฅผ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ECS์˜ ํ†ตํ•ฉ ์ด์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CodePipeline์„ ํ†ตํ•œ CI/CD, CloudWatch๋ฅผ ํ†ตํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง, IAM์„ ํ†ตํ•œ ๊ถŒํ•œ ๊ด€๋ฆฌ๊ฐ€ ๋งค๋„๋Ÿฝ๊ฒŒ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค.

๋น„์šฉ ํšจ์œจ์„ฑ์ด ์ค‘์š”ํ•œ ์†Œ๊ทœ๋ชจ ๋ฐฐํฌ

ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋น„์šฉ์ด ์—†์–ด ์†Œ๊ทœ๋ชจ ๋ฐฐํฌ์—์„œ ๋น„์šฉ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. Fargate๋ฅผ ์„ ํƒํ•˜๋ฉด ์šด์˜๋น„์šฉ๊นŒ์ง€ ์ค„์ผ ์ˆ˜ ์žˆ์–ด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์–ด์š”.

EKS๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

๊ธฐ์กด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ž์‚ฐ์˜ ํด๋ผ์šฐ๋“œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์˜จํ”„๋ ˆ๋ฏธ์Šค์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜ EC2์—์„œ ์ž์ฒด ๊ด€๋ฆฌํ•˜๋˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ EKS๋กœ ์ด์ „ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์ตœ์ ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋น„์šฉ์„ ํฌ๊ฒŒ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋งŒ์•ฝ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ECS๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋ชจ๋“  ๊ตฌ์„ฑ์„ AWS ์„œ๋น„์Šค์— ๋งž๊ฒŒ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ๋งค์šฐ ํด ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒํƒœ๊ณ„ ํ™œ์šฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

๋ณต์žกํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋‚˜ ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ์˜ ํ™œ์šฉ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด EKS๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค:

# Helm์„ ์‚ฌ์šฉํ•œ ๋ณต์žกํ•œ ๋ฐฐํฌ ์˜ˆ์‹œ
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/my-org/my-app
    targetRevision: HEAD
    path: helm-chart

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐ ๋ฉ€ํ‹ฐํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํ‘œ์ค€ํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค ๋•๋ถ„์— ๋‹ค๋ฅธ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด๋‚˜ ์˜จํ”„๋ ˆ๋ฏธ์Šค์™€์˜ ํ˜ธํ™˜์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๊ธ€๋กœ๋ฒŒ ํ™•์žฅ์ด๋‚˜ ๋ฒค๋” ๋ฝ์ธ์„ ํ”ผํ•˜๋ ค๋Š” ์ „๋žต์ด ์žˆ๋‹ค๋ฉด EKS๋ฅผ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”.

์‹ค๋ฌด ์ ์šฉ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ

ํŒ€์˜ ๊ธฐ์ˆ ์  ์—ญ๋Ÿ‰

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฒฝํ—˜์ด ํ’๋ถ€ํ•œ ํŒ€์ด๋ผ๋ฉด EKS์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋น ๋ฅธ ๋ฐฐํฌ์™€ ์šด์˜ ํŽธ์˜์„ฑ์ด ๋” ์ค‘์š”ํ•˜๋‹ค๋ฉด ECS๊ฐ€ ํ˜„์‹ค์ ์ธ ์„ ํƒ์ผ ์ˆ˜ ์žˆ์–ด์š”.

์šด์˜ ๋ณต์žก๋„ ๊ด€๋ฆฌ

EKS๋Š” ๋…ธ๋“œ ๊ตฌ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ•„์š”ํ•ด ์šด์˜ ๋ณต์žก๋„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. ECS๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ณ , Fargate ์‚ฌ์šฉ ์‹œ ์ธํ”„๋ผ ๋ถ€๋‹ด์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์šฉ ๊ตฌ์กฐ์˜ ์ฐจ์ด

EKS๋Š” ๊ธฐ๋ณธ ํด๋Ÿฌ์Šคํ„ฐ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์†Œ๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ECS๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋น„์šฉ์ด ์—†์–ด ์†Œ๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ ๋น„์šฉ ํšจ์œจ์ ์ด์ฃ .

์ ์ ˆํ•œ ์„ ํƒ์„ ์œ„ํ•œ ๊ฒฐ๋ก 

ECS์™€ EKS๋Š” ๊ฐ๊ฐ ๋šœ๋ ทํ•œ ์žฅ๋‹จ์ ์„ ๊ฐ€์ง„ ์šฐ์ˆ˜ํ•œ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

ECS๋Š” ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•œ ๋ฐฐํฌ, AWS ์ƒํƒœ๊ณ„์™€์˜ ์™„๋ฒฝํ•œ ํ†ตํ•ฉ, ์šด์˜ ๋ณต์žก๋„ ์ตœ์†Œํ™”๋ฅผ ์›ํ•˜๋Š” ํŒ€์—๊ฒŒ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์Šคํƒ€ํŠธ์—…์ด๋‚˜ ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘์ด ํ•„์š”ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๊ทธ ์ง„๊ฐ€๋ฅผ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

EKS๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒํƒœ๊ณ„ ํ™œ์šฉ, ๋ณต์žกํ•œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์š”๊ตฌ์‚ฌํ•ญ, ๋ฉ€ํ‹ฐํด๋ผ์šฐ๋“œ ์ „๋žต์ด ์ค‘์š”ํ•œ ์กฐ์ง์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ž์‚ฐ์ด ์žˆ๊ฑฐ๋‚˜ ๋Œ€๊ทœ๋ชจ ํ™•์žฅ์„ ๊ณ„ํšํ•˜๊ณ  ์žˆ๋‹ค๋ฉด EKS๊ฐ€ ๋” ๋‚˜์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ์–ด์š”.

์ค‘์š”ํ•œ ๊ฒƒ์€ ํ˜„์žฌ ํŒ€์˜ ์—ญ๋Ÿ‰, ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ์‚ฌํ•ญ, ์žฅ๊ธฐ์ ์ธ ๊ธฐ์ˆ  ์ „๋žต์„ ์ข…ํ•ฉ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์—ฌ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ์„œ๋น„์Šค ๋ชจ๋‘ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ์˜ฌ๋ฐ”๋ฅธ ์„ ํƒ์„ ํ•œ๋‹ค๋ฉด ์„ฑ๊ณต์ ์ธ ์ปจํ…Œ์ด๋„ˆ ์šด์˜ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”.

ECS vs EKS: AWS ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค ์„ ํƒ ๊ฐ€์ด๋“œ | devdong