AWS Certified Solutions Architect Associate [13] ECS, Fargate, ECR, EKS

CHAN LIM·2022년 7월 29일
0

컨테이너

Docker

  • 앱 배포를 위한 소프트웨어 개발 플랫폼
  • 컨테이너 기술
    • 앱이 컨테이너에 패키징되면 어느 운영체제에서든 같은 방식으로 실행됩니다.
    • 호환성 문제 없습니다.
    • 행위 특성도 예측 가능해서 작업을 덜어줍니다.
    • 유지 및 배포가 쉽습니다.
    • 언어, 운영체제, 기술에 상관 없이 실행이 가능합니다.
  • 사용 :
    • 마이크로서비스 아키텍처
    • 온프레미스에서 클라우드로 앱을 리프트-앤-시프트

도커 이미지는 어디에 저장되는가?

  • 도커 레포지토리
    • Docker Hub
      • 유명한 퍼블릭 레포지토리
      • 많은 기술에 맞는 기본 이미지를 찾을 수 있습니다.
    • Amazon ECR
      • 비공개 이미지를 실행할 수 있습니다.

Docker vs Virtual Machines

  • 도커는 가상화 기술의 일종이지만, 순전히 가상화 기술은 아닙니다.
  • 리소스가 호스트와 공유되어 한 서버에서 다수의 컨테이너를 공유할 수 있습니다.

도커 시작

  • Dockerfile을 작성해야 합니다.
    • 도커 컨테이너를 구성하는 파일

AWS와 도커 컨테이너 관리

  • Amazon ECS
    • 도커 관리를 위한 Amazon의 전용 플랫폼
  • Amazon EKS
    • Kubernetes의 관리형 버전으로 오픈 소스 프로젝트입니다.
  • AWS Fargate
    • Amazon의 서버리스 컨테이너 플랫폼으로 ECSEKS 둘 다 함께 작동할 수 있습니다.

ECS

ECS - EC2 type

= Elastic Container Service

  • AWS에서 컨테이너를 실행하면
    ECS 클러스터에 이른바 ECS 태스크를 실행하는 것입니다.
  • EC2 클러스터에는 EC2 시작 유형 바로 EC2 인스턴스입니다.
  • EC2 시작 유형으로 EC2 클러스터를 사용할 때는 인프라를 직접 프로비저닝하고 유지해야 해합니다.
  • 각 EC2 인스턴스는 ECS 클러스터에 등록하기 위해서 ECS 에이전트를 실행해야 합니다.
  • ECS 태스크를 수행하기 시작하면 AWS가 컨테이너를 시작하거나 멈출 겁니다.

ECS - Fargate type

  • AWS에 도커 컨테이너를 실행하는데,
    인프라를 프로비저닝하지 않아 관리할 EC2 인스턴스가 없습니다.
  • 서버리스
    • 서버를 관리하지 않아 서버리스라 부르는데 서버가 없는 건 아닙니다.
  • ECS 태스크를 정의하는 태스크 정의만 생성하면 ECS 태스크를 대신 실행합니다.
    • 새 도커 컨테이너를 실행하면 어디서 실행되는지 알리지 않고 그냥 실행됩니다.
  • 작업을 위해 백엔드에 EC2 인스턴스가 생성될 필요도 없어요.
  • 확장하려면 간단하게 태스크 수만 늘리면 돼요.
    • EC2 인스턴스를 관리할 필요가 없습니다.

ECS - IAM Roles(역할)

EC2 인스턴스가 도커에 ECS 에이전트를 실행한다고 하면

  • _
    • EC2 인스턴스 프로파일을 생성
    • ECS 에이전트가 EC2 인스턴스 프로파일을 이용해 API 호출을 만들 겁니다.
    • 인스턴스가 저장된 ECS 서비스가 CloudWatch 로그에 API 호출을 해서 컨테이너 로그를 보내고 ECR로부터 도커 이미지를 가져오죠.
    • Secrets ManagerSSM Parameter Store에서 민감 데이터를 참고하기도 합니다.
  • ECS 태스크 역할
    • 각 태스크에게 구체적인 역할을 허용합니다.
    • 역할이 각자 다른 ECS 서비스에 연결할 수 있게 합니다.
    • ECS 서비스의 태스크 정의에서 태스크의 역할을 정의합니다.

로드 밸런서 통합

  • 애플리케이션 로드 밸런서
    • 거의 모든 유스 케이스를 지원하고 작동합니다.
  • 네트워크 로드 밸런서
    • 처리량이 매우 많거나 높은 성능이 요구될 때만 권장합니다.
  • ELB
    • 권장하지 않습니다.
    • Fargate와 연결할 수 없습니다.

데이터 볼륨 (EFS)

  • EC2 태스크에 파일 시스템을 마운트해서 데이터를 공유하려고 합니다.
  • EFS 파일 시스템을 사용하는 게 좋습니다.
  • EC2Fargate 시작 유형 모두 호환이 되며
    EC2 태스크에 파일 시스템을 직접 마운트할 수 있습니다.
  • 어느 AZ에 실행되는 태스크든
    Amazon EFS에 연결되어 있다면 데이터를 공유할 거고
    원한다면 파일 시스템을 통해 다른 태스크와 연결할 수 있기 때문이죠.
  • Fargate + EFS = 서버리스
  • 사용 :
    • EFS와 ECS를 함께 사용해서 다중 AZ가 공유하는 컨테이너의 영구 스토리지

ECS가 Lustre용 FSx를 지원하지 않는다는 것.
ECS 태스크의 파일 시스템으로 Amazon S3 버킷을 마운트할 수 없음.


ECS Service Auto Scaling

  • AWS의 Auto Scaling이라는 서비스를 사용하면 세 개의 지표에 대해 확장이 가능합니다.
    • ECS 서비스의 CPU 사용률
    • 메모리 사용률
    • ALB 관련 지표인 타겟당 요청 수
  • 대상 추적 (Target Tracking)
  • 단계 스케일링 (Step Scaling)
  • 스케쥴드 스케일링 (Scheduled Scaling)

  • ECS ASG =/= EC2 ASG
  • 백엔드에 EC2 인스턴스가 없다면
    Fargate를 사용하는 것이 서비스 오토 스케일링에 도움이 됩니다.
    • 서버리스이니까요.

EC2 시작 유형에서 ASG EC2 인스턴스

  • Auto Scaling Group
    • CPU 사용률에 따라 ASG를 확장
    • EC2 인스턴스를 추가
  • ECS 클러스터 용량 공급자(Capacity Provider)
    • 새 태스크를 실행할 용량이 부족하면 자동으로 ASG를 확장합니다.
    • 오토 스케일링 그룹과 함께 사용되며 RAM이나 CPU가 모자랄 때 EC2 인스턴스를 추가합니다.

ECS Rolling Updates

ECS 서비스를 v1에서 v2로 업데이트할 때
태스크가 한 번에 얼마나, 어떤 순서로
시작되고 중지되는지 제어할 수 있습니다.


ECR

= Elastic Container Registry

  • AWS에 도커 이미지를 저장하고 관리하는 데 사용됩니다.
    • 계정에 한해 이미지를 비공개로 저장.
    • 퍼블릭 저장소를 사용해 Amazon ECR Public Gallery에 게시하는 방법.
  • ECR은 Amazon ECS와 완전히 통합되어 있고 이미지는 백그라운드에서 Amazon S3에 저장됩니다.
  • 액세스는 IAM으로부터 제어됩니다. (허용 에러 => 정책)
  • 이미지의 취약점 스캐닝, 버저닝 태그 및 수명 주기 확인을 지원합니다.

EKS

= Amazon Elastic Kubernetes Service

  • AWS에 관리형 Kubernetes 클러스터를 실행하는 방법입니다.
  • Kubernetes
    • 오픈 소스 시스템
    • 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 그리고 관리할 수 있습니다.
  • 컨테이너를 실행하려는 목적은 비슷하지만 API는 아주 다릅니다.
  • EKS는 두 가지 실행 모드를 지원:
    • EC2 인스턴스 등 작업자 노드를 배치할 때 EC2 실행 모드
    • EKS 클러스터에 서버리스 컨테이너를 배치할 때 Fargate 모드

  • 사용 :

    회사가 이미 온프레미스에서 Kubernetes를 사용하거나
    다른 클라우드에서 Kubernetes를 쓰는 경우
    혹은 그냥 Kubernetes API를 사용하려는 경우
    AWS를 통해 Kubernetes 클러스터를 관리하고자 할 때
    Amazon EKS를 사용할 수 있습니다.


  • Kubernetes는 Cloud-agnostic입니다.
    • Azure나 Google 클라우드 등 어떤 클라우드에서도 가능합니다.
    • 클라우드나 컨테이너 사이를 옮겨 다니려면 Amazon EKS를 사용하는 게 훨씬 편합니다.

From
AWS Certified Solutions Architect Associate 시험합격!

profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글