AWS의 컨테이너 : ECS, Fargate, ECR, EKS

JINWOO OH·2023년 7월 24일

SAA

목록 보기
16/19
post-thumbnail

What is Docker?

  • 앱 배포를 위한 소프트웨어 개발 플랫폼 (Container 기술)
  • 앱이 컨테이너에 패키징되면 어느 운영체제에서든 같은 방식으로 실행

Amazon ECS - EC2 Launch Type

  • Elastic Container Service
  • ECS 클러스터에 ECS task를 실행
  • EC2 Launch Type
    • 인프라를 직접 프로비저닝하고 유지해야 한다

Amazon ECS - Fargate Launch Type

  • 인프라를 프로비저닝하지 않아 관리할 EC2인스턴스가 없다
  • 서버리스
  • ECS task를 정의하는 task 정의만 생성하면 필요한 CPU나 RAM에 따라 실행

Amazon ECS - IAM Roles for ECS

  • EC2 Instance Profile (EC2 Launch Type only)
    • ECS agent만 EC2 인스턴스 프로파일을 사용하며 프로파일을 이용해 API를 호출한다
  • ECS Task Role
    • EC2와 Fargate 시작 유형에 모두 해당
    • 두 개의 태스크가 있다면 각자에 특정 역할을 만들 수 있다
  • 역할을 다르게 하는 이유는 역할이 각자 다른 ECS 서비스에 연결할 수 있게 하기 때문

Amazon ECS - Load Balancer Integrations

  • 모든 사용자가 ALB 및 백엔드의 ECS 태스크에 직접 연결
  • NLB는 처리량이 매우 많거나 높은 성능이 요구될 때만 권장

Amazon ECS - Data Volumes (EFS)

  • ECS task에 파일 시스템을 마운트해서 데이터를 공유할 때 사용
  • 어느 AZ 에 실행되는 태스크든 EFS에 연결되어 있다면 데이터를 공유할 수 있고 원한다면 파일 시스템을 통해 다른 태스크와 연결 할 수 있다
  • Fargate와 EFS 모두 serverless이기 때문에 서버를 관리할 필요가 없고 미리 비용을 지불하며 미리 프로비저닝만 하면 사용할 수 있다

ECS Service Auto Scaling

  • 세 개의 지표에 대해 확장이 가능하다
    • CPU사용률
    • RAM
    • ALB 관련 지표인 타겟당 요청 수
  • Target Tracking
  • Step Scaling
  • Scheduled Scaling
  • 백엔드에 EC2 인스턴스가 없다면 Fargate를 이용하는 것이 좋다 (서버리스 이므로)

EC2 Launch Type - Auto Scaling EC2 Instances

  • Auto Scaling Group Scaling
  • ECS Cluster Capacity Provider
    • 새 태스크를 실행할 용량이 부족하면 자동으로 ASG를 확장

Amazon ECR

  • Elastic Container Registry
  • AWS에 도커 이미지를 저장하고 관리하는 데 사용
  • 두 가지 옵션
    • 계정에 한해 이미지를 비공개로 저장
    • 퍼블릭 저장소를 활용
  • ECS와 완전히 통합되어 있고 이미지는 백그라운드에서 S3에 저장
  • 이미지의 취악점 스캐닝, 버저닝 태그 및 수명 주기 확인을 지원

Amazon EKS

  • Elastic Kubernetes Service
  • kubernetes : 컨테이너화한 애플리케이션의 자동 배포, 확장, 관리를 지원
  • EKS의 두가지 mode
    • EC2 모드 : EC2 인스턴스에서처럼 작업자 모드를 배포할 때 사용
    • Fargate 모드 : EKS 클러스터에 serverless 컨테이너를 배포할 때 사용
  • 클라우드 또는 컨테이너 간 마이그레이션을 실행하는 경우 EKS가 간단한 솔루션이 될 수 있다
  • EKS pod가 실행되는 EKS node는 ASG로 관리할 수 있다

Amazon EKS - Node Types

  • Managed Node Groups
    • AWS로 노드, EC2 인스턴스를 생성하고 관리
    • 온디맨드 인스턴스와 스팟 인스턴스를 지원
  • Self-Managed Nodes
    • 직접 노드를 생성하고 EKS 클러스터에 등록
  • AWS Fargate
    • 서버리스
    • 유지 관리도 필요 없고 노드를 관리할 필요가 없음

Amazon EKS - Data Volumes

  • EKS 클러스터에 데이터 볼륨을 연결하려면 EKS 클러스터에 스토리지 클래스 매니페스트를 지정해야 한다
  • CSI (Container Storage Interface) 드라이버를 사용한다
  • 유일한 스토리지 클래스 유형인 Amazon EFS를 지원 (EBS, Fargate)
  • FSx for Lustre와 FSx for NetApp ONTAP을 지원

AWS App Runner

  • 규모에 따라 웹 애플리케이션, API 배포를 돕는 서비스
  • vCPU의 수, 컨테이너 메모리의 크기, 오토 스케일링 여부 상태 확인을 설정하면 된다
  • App Runner 서비스가 웹 앱을 빌드하고 배포 (컨테이너가 생성되고 배포)
  • 오토 스케일링이 가능하고 가용성이 높다
  • 로드 밸런싱 및 암호화 기능을 지원
  • 빨리 배포해야 하는 웹 앱, API 그리고 마이크로서비스, 신속한 프로덕션 배포가 필요할 때도 App Runner 서비스가 좋다

0개의 댓글