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