[AWS SAA] 9. Containers on AWS

Sunwu Park·2024년 12월 10일

AWS-SAA

목록 보기
10/12

도커가 가상머신보다 덜 안전한 이유

도커 컨테이너는 호스트 운영 체제의 커널을 공유합니다. 이로 인해 컨테이너 간 격리 수준이 가상머신(VM)에 비해 낮습니다. 반면, 가상머신은 하이퍼바이저를 통해 각 VM이 독립적인 운영 체제를 가지므로 보안 수준이 높습니다. 도커는 경량화된 환경을 제공하지만, 커널에 대한 직접 접근이 가능해지는 만큼 보안 취약점이 발생할 가능성이 높아질 수 있습니다.


Amazon ECS - EC2 Launch Type

ECS란?

  • ECS (Elastic Container Service): AWS에서 제공하는 컨테이너 관리 서비스.
  • 도커 컨테이너를 AWS 상에서 실행할 수 있도록 지원.

EC2 Launch Type 특징

  1. EC2 인프라 관리 필요
    • ECS 클러스터에서 작업(ECS Tasks)을 실행하려면 EC2 인스턴스를 직접 프로비저닝하고 유지 관리해야 함.
  2. ECS 에이전트 실행
    • 각 EC2 인스턴스는 ECS 에이전트를 실행하여 ECS 클러스터에 등록되어야 함.
  3. AWS의 역할
    • 컨테이너의 시작 및 종료 관리는 AWS에서 자동으로 처리.

주요 장점과 단점

  • 장점: 유연한 제어와 맞춤화 가능.
  • 단점: 인프라 설정 및 유지 관리에 추가적인 노력이 필요.

Amazon ECS – Fargate Launch Type

특징

  1. AWS에서 도커 컨테이너 실행
    • 별도의 EC2 인스턴스를 프로비저닝하거나 관리할 필요 없음.
  2. 서버리스(Serverless)
    • 인프라 관리를 AWS가 처리하며, 사용자는 작업 정의(Task Definition)만 생성.
  3. 간단한 스케일링
    • CPU와 RAM 요구 사항에 따라 ECS 작업(ECS Tasks)을 실행.
    • 작업 수(Task)를 늘리기만 하면 스케일링 가능.
    • 더 이상 EC2 인스턴스 관리 필요 없음.

EC2 Launch Type과 관련된 권한 및 역할

EC2 인스턴스 프로파일 (EC2 Launch Type 전용)

  • ECS 에이전트 역할
    • ECS 서비스에 API 호출 수행.
    • 컨테이너 로그를 CloudWatch Logs로 전송.
    • ECR에서 도커 이미지를 가져옴.
    • Secrets Manager 또는 SSM Parameter Store에 저장된 민감한 데이터 참조.

ECSTask Role

  • 작업(Task)에 특정 역할 부여
    • 실행되는 각 ECS 작업에 대해 개별적인 역할을 할당 가능.
    • 서로 다른 ECS 서비스에서 다른 역할을 사용할 수 있음.
    • 작업 정의(Task Definition) 내에서 Task Role 정의.

Amazon ECS – Load Balancer

지원되는 로드 밸런서

  1. Application Load Balancer (ALB)
    • 대부분의 사용 사례에 적합.
    • 가장 일반적으로 사용되는 로드 밸런서.
  2. Network Load Balancer (NLB)
    • 높은 처리량 및 고성능 요구 사항에 권장.
    • AWS Private Link와 함께 사용할 경우 추천.
  3. Classic Load Balancer (CLB)
    • 지원되지만 권장하지 않음.
    • 고급 기능 부재, Fargate 미지원.

Amazon ECS – 데이터 볼륨 (EFS)

특징

  1. EFS 파일 시스템 마운트
    • ECS 작업(Task)에서 EFS 파일 시스템 마운트 가능.
    • EC2 및 Fargate Launch Type 모두 지원.
  2. 멀티 AZ 데이터 공유
    • 여러 AZ에서 실행되는 작업이 동일한 데이터를 공유.
    • Fargate + EFS: 완전한 서버리스(Serverless) 환경 제공.
  3. 사용 사례
    • 멀티 AZ에서 컨테이너 간 지속적으로 공유 가능한 스토리지.
  4. 제약 사항
    • Amazon S3는 파일 시스템으로 마운트할 수 없음.

ECS 서비스 자동 스케일링

특징

  1. ECS 작업(Task) 수 자동 조정
    • 작업 수를 자동으로 증가/감소.
  2. 사용 지표
    • ECSServiceAverageCPUUtilization: CPU 사용률 기반 스케일링.
    • ECSServiceAverageMemoryUtilization: RAM 사용량 기반 스케일링.
    • ALBRequestCountPerTarget: ALB의 대상 요청 수 기반 스케일링.
  3. 스케일링 방식
    • Target Tracking: CloudWatch 지표의 목표 값을 기준으로 스케일 조정.
    • Step Scaling: 특정 CloudWatch 알람 기반으로 스케일 조정.
    • Scheduled Scaling: 지정된 날짜/시간 기반으로 스케일 조정 (예측 가능한 변화).

Fargate vs. EC2 스케일링

  • Fargate Auto Scaling
    • 설정이 간단하며 서버리스 환경에 적합.
  • EC2 Auto Scaling
    • ECS 서비스 스케일링을 지원하기 위해 EC2 인스턴스를 추가로 프로비저닝.
    • Auto Scaling Group (ASG)
      - CPU 사용량 기반으로 EC2 인스턴스 추가/감소.
      - ECS Cluster Capacity Provider와 함께 사용 가능.
      - CPU, RAM 용량 부족 시 EC2 인스턴스 자동 추가.


Amazon ECR (Elastic Container Registry)

특징

  1. Docker 이미지 저장 및 관리
    • AWS에서 Docker 이미지를 저장하고 관리.
  2. 레포지토리 종류
    • Private Repository: 비공개 저장소.
    • Public Repository: 공개 저장소 (Amazon ECR Public Gallery: gallery.ecr.aws).
  3. 완전 통합
    • ECS와 완전히 통합, Amazon S3로 지원.
  4. IAM 기반 접근 제어
    • 권한 오류 발생 시 IAM 정책 확인 필요.
  5. 기능 지원
    • 이미지 취약점 스캔, 버저닝, 이미지 태그, 이미지 라이프사이클 관리 등.

Amazon EKS (Elastic Kubernetes Service)

특징

  1. 관리형 Kubernetes 클러스터
    • AWS에서 Kubernetes 클러스터를 관리형 서비스로 제공.
  2. Kubernetes란?
    • 컨테이너화된 애플리케이션의 자동 배포, 스케일링, 관리를 위한 오픈소스 시스템.
  3. EKS와 ECS 비교
    • ECS: AWS 전용 API.
    • EKS: Kubernetes API 사용 (클라우드에 독립적).
  4. EKS 배포 방식
    • EC2: 워커 노드 배포.
    • Fargate: 서버리스 컨테이너 배포.
  5. 사용 사례
    • 기존 온프레미스 또는 다른 클라우드에서 Kubernetes를 사용하는 기업이 AWS로 마이그레이션할 경우.
  6. 다중 리전
    • 리전별로 개별 EKS 클러스터 배포 필요.
  7. 로그 및 메트릭 수집
    • CloudWatch Container Insights 활용.

Amazon EKS – 데이터 볼륨

  1. StorageClass 매니페스트

    • EKS 클러스터에 스토리지 설정 필요.
  2. CSI (Container Storage Interface) 드라이버 지원

    • Amazon EBS: 블록 스토리지.
    • Amazon EFS: Fargate와 함께 사용 가능.
    • Amazon FSx for Lustre.
    • Amazon FSx for NetApp ONTAP.

AWS App Runner

특징

  1. 완전 관리형 웹 애플리케이션 및 API 배포 서비스
    • 인프라 경험 불필요.
  2. 작동 방식
    • 소스 코드 또는 컨테이너 이미지에서 시작.
    • 자동으로 빌드 및 배포.
  3. 기능
    • 자동 스케일링, 고가용성, 로드 밸런서, 암호화 지원.
    • VPC 접근 지원.
    • 데이터베이스, 캐시, 메시지 큐 서비스와 연결 가능.
  4. 사용 사례
    • 웹 애플리케이션, API, 마이크로서비스, 신속한 프로덕션 배포.

AWS App2Container (A2C)

특징

  1. CLI 도구
    • Java 및 .NET 웹 애플리케이션을 Docker 컨테이너로 마이그레이션 및 현대화.
  2. CI/CD 지원
    • 자동화된 지속적 통합/배포를 지원.

0개의 댓글