AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

컨테이너 배포의 혼란을 해결하는 ECS, Cloud Run, Swarm 전략

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 개발자/DevOps 엔지니어
  • 중간~고급 수준의 Docker/컨테이너 배포 경험자
  • AWS, Google Cloud, 온프레미스 환경에서 배포를 수행해야 하는 팀

핵심 요약

  • AWS ECS : aws ecrtask-definition.json을 통해 완전한 제어권을 얻지만, VPC/IAM 설정 복잡성 증가
  • Cloud Run : gcloud run deploy 명령어로 1단계 배포 가능, 무상 계층 제공(월 200만 요청)
  • Docker Swarm : docker stack deploy 명령어로 3단계 배포, 온프레미스 서버 최적화

섹션별 세부 요약

1. 컨테이너 배포의 주요 과제

  • ECS : YAML 구성, 클러스터/서비스 설정, IAM 역할 설정 등 복잡한 인프라 관리 필요
  • Cloud Run : Cold Start 지연(500ms) 및 상태 없는 앱 제한
  • Swarm : 자동 복구(auto-healing) 기능 부재

2. ECS 배포 절차

  1. ECR에 이미지 푸시:

```bash

aws ecr create-repository --repository-name my-app

docker tag my-app:latest 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:latest

docker push 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:latest

```

  1. Task 정의 파일 생성:

```json

{

"containerDefinitions": [

{

"name": "my-app",

"image": "ECR_IMAGE_URI",

"memory": 512,

"portMappings": [{"containerPort": 3000}]

}

]

}

```

  1. 클러스터 생성: aws ecs create-cluster --cluster-name my-cluster
  2. 서비스 실행: aws ecs create-service --cluster my-cluster --desired-count 2

3. Cloud Run 배포 절차

  • 1명령어 배포:

```bash

gcloud run deploy my-service --source . --platform managed --region us-central1 --allow-unauthenticated

```

  • 장점:

- 자동 스케일링(0~무한)

- HTTPS/CDN 내장

- 무료 계층 제공

  • 단점:

- Cold Start 지연

- 상태 없는 앱만 지원

4. Docker Swarm 배포 절차

  1. Swarm 초기화: docker swarm init
  2. 스택 배포:

```bash

docker stack deploy -c docker-compose.prod.yml my-stack

```

  1. 상태 확인: docker service ls
  • docker-compose.prod.yml 예시:

```yaml

version: "3.8"

services:

web:

image: my-app:latest

deploy:

replicas: 3

restart_policy:

condition: on-failure

resources:

limits:

memory: 512M

ports:

- "80:3000"

```

5. 플랫폼 선택 가이드

| 시나리오 | ECS | Cloud Run | Swarm |

|------------------|-------------|----------------|--------------|

| MVP 런칭 | ❌ | ✅🚀 | ✅ |

| 기업 규제 준수| ✅ | ❌ | ❌ |

| 학습 곡선 | 복잡(Vertical) | 간단(Gentle) | 평탄(Flat) |

6. 실제 사례

  • Startup A: ECS → Cloud Run 전환으로 월 $200 → $5 비용 절감
  • Startup B: 온프레미스 하드웨어 사용으로 연간 $15,000 절감
  • 실패 사례: ECS 사용 시 VPC 지식 부족으로 $500 NAT 게이트웨이 비용 발생

결론

  • Cloud Run : 1명령어로 신속한 배포가 필요한 경우 최적
  • Swarm : 온프레미스 서버 관리가 필요한 경우 선택
  • ECS : AWS 전용 기능(VPC, 보안)이 필수적인 경우 사용
  • 핵심 팁: Docker 이미지 최소화(node:alpine 사용), 메모리 제한 설정, GitHub Actions 자동화(deploy-cloudrun 액션 활용)