🚀 컨테이너 기술과 AWS ECS 개요
1️⃣ 컨테이너 기술이란?
컨테이너(Container) 기술은 애플리케이션과 실행 환경을 함께 패키징하여 어디서든 일관된 실행을 보장하는 기술이다.
- 호환성 문제 없음 → 환경이 달라도 동일하게 실행 가능
- 가벼움 → 가상머신(VM)보다 빠르고 리소스를 절약
2️⃣ 도커(Docker)란?
도커는 컨테이너 기술의 대표적인 구현체로, 여러 개의 컨테이너를 실행할 수 있다.
- 도커 이미지는 Docker Hub나 Amazon ECR에 저장 가능
- 도커 파일(Dockerfile)을 작성하고 빌드하면 도커 이미지가 생성됨
- 이미지를 실행하면 컨테이너가 되어 애플리케이션을 실행할 수 있음
3️⃣ 도커 vs 가상머신(VM) 차이
도커는 가상화 기술의 일부이지만 VM과는 차이가 있다.
| 가상머신(VM) | 도커(Docker) |
---|
운영체제 | 개별 OS 포함 | 호스트 OS 공유 |
무게 | 무거움(GB 단위) | 가벼움(MB 단위) |
속도 | 부팅 속도 느림 | 즉각 실행 가능 |
리소스 사용 | 중복된 OS로 리소스 소모 큼 | 경량화되어 리소스 절약 |
💡 도커는 OS 위에서 컨테이너를 실행하지만, VM은 개별 OS를 포함하여 무겁고 느리다.
🛠 AWS에서 컨테이너 관리
AWS에서는 도커 컨테이너를 ECS, EKS, Fargate로 관리할 수 있다.
- ECS (Elastic Container Service) → AWS의 컨테이너 오케스트레이션 서비스
- EKS (Elastic Kubernetes Service) → 쿠버네티스(Kubernetes) 기반 컨테이너 관리
- AWS Fargate → 서버리스(Serverless) 컨테이너 실행
4️⃣ AWS ECS(Elastic Container Service)
AWS ECS는 두 가지 방식으로 컨테이너를 실행할 수 있다.
🔹 EC2 런치 타입
- EC2 인스턴스에서 직접 컨테이너 실행
- 클러스터 내 EC2 인프라는 직접 관리해야 함
- ECS 에이전트를 EC2에 설치해야 함
🔹 Fargate 런치 타입 (Serverless)
- EC2 인스턴스 없이 컨테이너 실행 가능
- CPU/RAM 자동 할당, 관리 부담 최소화
- 확장 시 태스크(Task) 수만 늘리면 됨
5️⃣ IAM 역할(Role) 및 보안
ECS 실행을 위해 IAM 역할을 적절히 설정해야 한다.
- EC2 인스턴스 프로파일 역할 → EC2 기반의 ECS 태스크 실행 시 필요
- ECS 태스크 역할(Task Role) → 컨테이너가 AWS 서비스(S3, DynamoDB 등)와 연동할 때 필요
각기 다른 IAM 역할을 부여하는 이유는 보안 및 권한 관리 때문이다.
6️⃣ 로드 밸런서 통합
ECS는 ALB(Application Load Balancer)와 NLB(Network Load Balancer)를 지원한다.
- ALB (권장) → HTTP/HTTPS 트래픽 분산
- NLB → 고성능, 높은 처리량이 필요할 때 사용
7️⃣ 데이터 지속성 (Persistent Storage)
컨테이너의 데이터는 기본적으로 휘발성이지만 EFS(AWS Elastic File System)을 사용하면 지속성을 확보할 수 있다.
| EFS | S3 |
---|
파일 시스템 | 가능 | 불가능 |
서버리스 | 가능 | 가능 |
컨테이너 마운트 | 가능 | 불가능 |
💡 Fargate + EFS 조합을 사용하면 완전한 서버리스 환경 구축 가능!
✅ 마무리
- 도커는 VM보다 가볍고 빠르게 애플리케이션을 배포할 수 있는 컨테이너 기술이다.
- AWS ECS/Fargate를 활용하면 서버 관리 없이 컨테이너를 실행할 수 있다.
- EFS를 활용하면 Fargate에서도 데이터 지속성을 유지할 수 있다.