1️. Docker
Docker 애플리케이션을 컨테이너(Container) 단위로 패키징해 어디서나 동일하게 실행할 수 있도록 해주는 소프트웨어 플랫폼
핵심 개념
- 애플리케이션 + 실행 환경을 함께 패키징
- 어떤 OS / 어떤 환경에서도 동일하게 동작
- 호환성 문제 최소화
- 예측 가능한 실행 결과
- 배포·운영·유지보수 비용 감소
주요 사용 사례
- 마이크로서비스 아키텍처
- 온프레미스 애플리케이션의 AWS 이전 (Lift & Shift)
2️. 운영체제 위에서의 Docker 구조
EC2 Instance (Server)
└─ Host OS
└─ Docker Daemon
├─ContainerA
├─ContainerB
└─Container C
- 하나의 서버에서 여러 컨테이너가 리소스를 공유
- VM 대비 가볍고 빠름
3️. Docker 이미지 저장소
Docker Repository 개념
- Docker 이미지를 저장하는 공간
주요 저장소
- Docker Hub
- 공개 레포지토리
- Ubuntu, MySQL 등 베이스 이미지 제공
- Amazon ECR
- AWS 관리형 컨테이너 레지스트리
- Private Repository
- Public Repository (ECR Public Gallery)
4️. Docker vs 가상머신(VM)
VM 구조
Infrastructure
└─ Host OS
└─ Hypervisor
├─ Guest OS + App
├─ Guest OS + App
└─ Guest OS + App
Docker 구조
Infrastructure
└─ Host OS (EC2)
└─ Docker Daemon
├─ AppContainer
├─ AppContainer
└─ AppContainer
Docker는 완전한 가상화는 아니지만 Guest OS 없이 리소스를 공유 → 훨씬 효율적
5️. Docker 흐름
Dockerfile
│ Build
▼
DockerImage
│ Push / Pull
▼
Docker Repository (Docker Hub / Amazon ECR)
│ Run
▼
DockerContainer
- Dockerfile → Image → Container
- ECR은 이미지 저장소 역할
6️. AWS에서 컨테이너 관리 서비스
주요 서비스 구성
- Amazon ECS: AWS 자체 컨테이너 플랫폼
- Amazon EKS: 관리형 Kubernetes
- AWS Fargate: 서버리스 컨테이너 실행 환경
- Amazon ECR: 컨테이너 이미지 저장소
7️. Amazon ECS – EC2 Launch Type
ECS 클러스터 위에서 EC2 인스턴스 기반으로 컨테이너 실행
특징
- EC2 인프라를 직접 프로비저닝·관리
- 각 EC2 인스턴스에 ECS Agent 실행 필요
- AWS가 컨테이너 실행/중단 관리
구조
ECS Cluster
├─ EC2Instance(ECS Agent)
│ └─ ECSTask(Container)
├─ EC2Instance(ECS Agent)
└─ EC2Instance(ECS Agent)
8️. Amazon ECS – Fargate Launch Type
완전 서버리스 컨테이너 실행
특징
- EC2 인스턴스 관리 ❌
- Task Definition만 작성
- CPU / RAM 지정 → AWS가 자동 실행
- 스케일링은 Task 수 증가만 하면 됨
구조
ECS Cluster
└─ AWS Fargate
└─ ECS Task (Container)
9️. ECS IAM Roles 구조
1. EC2 Instance Profile (EC2 Launch Type 전용)
- ECS Agent 권한
- ECR 이미지 Pull
- CloudWatch Logs 전송
- Secrets Manager / SSM 접근
2. ECS Task Role
- Task 단위 IAM 권한
- 서비스별로 서로 다른 Role 사용 가능
- Task Definition에서 정의
EC2 Instance
├─ ECS Agent (Instance Profile)
├─ TaskA (Task RoleA)
└─ TaskB (Task RoleB)
10. ECS Load Balancer 연동
지원 로드 밸런서
- ALB (권장) – 대부분의 서비스
- NLB – 초고성능 / AWS PrivateLink 연동
- CLB – 지원은 되나 비권장 (Fargate ❌)
기본 구조
Users
└─ ALB (80 / 443)
└─ ECS Tasks
1️1. ECS 데이터 볼륨 – Amazon EFS
특징
- ECS Task에 EFS 마운트 가능
- EC2 / Fargate 모두 지원
- 여러 AZ의 Task가 동일 데이터 공유
- 완전 서버리스 (Fargate + EFS)
⚠️ Amazon S3는 파일 시스템으로 마운트 불가
1️2. ECS Service Auto Scaling
스케일링 기준
- ECS Service 평균 CPU 사용률
- ECS Service 평균 메모리 사용률
- ALB Request Count Per Target
스케일링 방식
- Target Tracking
- Step Scaling
- Scheduled Scaling
ECS Task 스케일링 ≠ EC2 인스턴스 스케일링 Fargate가 훨씬 단순
1️3. EC2 Launch Type – EC2 Auto Scaling
필요 이유
- ECS Task 증가 → EC2 용량 부족 가능
해결책
- Auto Scaling Group
- ECS Capacity Provider
- ASG와 연동
- CPU/RAM 부족 시 EC2 자동 추가
1️4. ECS CPU 기반 스케일링 예시
CloudWatch (ECS Service CPU)
└─ Alarm
└─Scale ECS Tasks
└─ (필요 시) EC2 ASG 확장
1️5. EventBridge로 ECS Task 실행
S3 이벤트 기반 실행
S3Object Upload
└─ EventBridgeRule
└─ ECS Task (Fargate)
├─ S3 접근
└─ DynamoDB 결과 저장
- Task Role로 S3 / DynamoDB 접근
1️6. EventBridge 스케줄 기반 실행
배치 처리 예시
EventBridge (Every1 hour)
└─ ECS Task (Fargate)
└─ S3 데이터 처리
1️7. ECS + SQS 패턴
SQS Queue
└─ ECS Service
├─Task1
├─Task2
└─Task3
- 메시지 수에 따라 Task Auto Scaling
- 비동기 처리에 적합
1️8. 중단된 ECS Task 감지
EventBridge + SNS 알림
ECSTask STOPPED
└─ EventBridge
└─ SNS
└─ Administrator Email
- Event Pattern으로 상태 필터링
- 장애 감지 자동화
1️9. Amazon ECR
Elastic Container Registry
특징
- Docker 이미지 저장·관리
- Private / Public Repository
- ECS와 완전 통합
- Amazon S3 기반
- IAM 기반 접근 제어
- 취약점 스캔, 태그, 라이프사이클 정책 지원
2️0. Amazon EKS 개요
관리형 Kubernetes 서비스
특징
- 오픈소스 Kubernetes
- ECS의 대안
- EC2 또는 Fargate 기반 실행
- 온프레미스 / 타 클라우드 Kubernetes와 호환
- 멀티 리전 시 리전별 클러스터 필요
- CloudWatch Container Insights 연동
2️1. Amazon EKS 아키텍처 개요
VPC
├─Public Subnets
│ └─ ELB
└─Private Subnets
└─ EKS Worker Nodes
└─ Pods
- Public / Private Load Balancer 분리
- Multi-AZ 구성
2️2. EKS 노드 타입
Managed Node Group
- EKS가 EC2 노드 관리
- ASG 자동 생성
- On-Demand / Spot 지원
Self-Managed Node
- 사용자가 직접 노드 관리
- EKS Optimized AMI 사용 가능
Fargate
- 노드 개념 ❌
- 완전 서버리스 Pod 실행
2️3. EKS 데이터 볼륨
StorageClass + CSI Driver 필요
지원 스토리지
- Amazon EBS
- Amazon EFS (Fargate 지원)
- Amazon FSx for Lustre
- Amazon FSx for NetApp ONTAP
2️4. AWS App Runner
코드 또는 컨테이너 기반 웹 앱 배포 서비스
특징
- 인프라 지식 불필요
- 자동 빌드 & 배포
- 자동 스케일링
- 로드 밸런서 내장
- HTTPS 암호화
- VPC 연결 가능
사용 사례
- 웹 애플리케이션
- API
- 마이크로서비스
2️5. AWS App2Container (A2C)
레거시 웹 앱 → 컨테이너 자동 변환
특징
- CLI 도구
- Java / .NET 지원
- 코드 수정 없이 컨테이너화
- CloudFormation 템플릿 생성
- ECR 등록
- ECS / EKS / App Runner 배포
2️6. App2Container 전체 흐름
Discover&Analyze
└─ 앱 인벤토리 분석
Extract&Containerize
└─DockerImage 생성
CreateDeploymentArtifacts
└─ECS/EKS 정의+CI/CD
DeploytoAWS
└─ECR →ECS/EKS/AppRunner