AWS 서비스 정리 | Fargate

Jihun Kim·2022년 1월 18일
1

aws

목록 보기
11/16
post-thumbnail

Fargate

Fargate는 EC2 인스턴스의 서버나 클러스터를 관리할 필요 없이, 컨테이너를 실행하기 위해 ECS에 사용할 수 있는 기술이다. 이를 이용하면 더 이상 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성할 필요가 없다(EC2 내부 설정 등등). 그러므로 서버 유형 선택 및 클러스터 조정 시점을 결정해 최적화할 필요 역시 없다.


시작 방법

시작 유형 또는 용량 공급자를 사용해 ECS 태스크와 서비스를 실행할 때는 애플리케이션을 컨테이너에 패키징 하고 CPU 및 메모리 요구 사항을 지정한 뒤 네트워킹과 IAM 정책을 정의 하여 시작할 수 있다.


1. Docker

컨테이너를 Docker를 이용해 로컬로 구축하고 테스트한 다음 Fargate의 ECS에 배포할 수 있다. 따라서, 로컬 환경에 도커파일을 생성해 놓는다.


2. ECS(Elastic Container Service)

  • 원래는 이름이 EC2 Container Service의 약자였으나 현재는 명칭이 바뀜
    • EC2 위에 올라가 있기 때문에 role만 구현하면 EC2의 role에 의해 들어갈 수 있는 리소스들을 구현할 수 있기 때문
  • 기존에는 EC2 위에 container를 띄우는 구조였으나, Fargate가 나타나면서 이제는 container만 관리하는 생태로 바뀜
  • 모든 규모의 클러스터를 쉽게 관리함
  • 확장 가능(auto-scaling)

ECS가 ECR(Elastic Container Registry)이랑 다른 점은 무엇일까?

  • ECR은 아마존에서 제공하는 도커 레포지토리라고 보면 된다.
  • 즉, AWS용 도커 허브라고 생각하면 된다.

도메인이 필요하다면 Load Balancer 설정도 하는 것이 좋다.

→ Fargate 생성 전에 미리 설정하는 것이 좋을 것


3. ECS에서 Fargate 생성

Load Balancer

  • 미리 생성해 놓는다.

ECR

  • 일단 프로젝트의 이미지를 ECR에 업로드 해놓는다.

ECS

  • ECS로 가서 클러스터를 생성한다.

  • “클러스터 > 클러스터 생성”을 클릭한다.


  • 아래 세 가지 중 네트워킹 전용이 Fargate이다.

    → 이를 선택한다.

  • 클러스터 이름과 VPC 설정을 하고 생성한다.

  • 이제 새 작업 정의 생성을 클릭해서 새로운 task를 만든다.


  • 작업 크기와 컨테이너 정의가 가능하다.

    → 일단 테스트용이기 때문에 가장 작은 메모리와 CPU로 설정했다.


  • 컨테이너 추가를 누르면 컨테이너 이름과 이에 해당하는 이미지를 설정할 수 있다.

    → 이미지는 ECR에 올려 놓은 이미지 URL을 가져와 사용하면 된다(AWS 내부에 있는 것이기 때문에 바로 인식한다).

    → volumes 설정과 같은 고급 설정들도 있다.

  • Task 생성을 완료한다.


서비스 생성

service를 통해 task 여러 개를 한 번에 관리할 수 있다.

  • 클러스터의 서비스에서 생성을 클릭한다.

  • 작업 생성할 때 유형은 Fargate, 작업 개수는 사용하려는 개수에 따라 적어주면 되는데 하나면 1을 적는다.

    (서비스 유형은 기본이 REPLICA이다.)


  • 최소 정상 상태 백분율(minimum healthy percent): 최소한 실행될 수 있는 container 백분율을 의미한다.

    • 배포를 추가로 할 때 기존에 떠있는 인스턴스에 비해 최소 몇 개를 띄울 지를 정하는 과정을 거쳐야 한다.
  • maximum percent: 최대 인스턴스 가능한 비율

    → minimum이 100%에 6개일 때 maximum이 200%면 컨테이너는 12개까지 가능함(2배)

  • Deployment type

    • Rolling update: 차근차근 업데이트
      • 한 task씩 업데이트 하는 구조
      • 배포시 하나가 실행되면 하나가 멈추고, 또 하나가 추가 실행 되면 다른 하나가 멈추며 전체를 배포하는 형식
      • 이 때, 최대 백분율을 넘을 수 없다. 따라서, 위의 예시처럼 minimum 100%에 6개가 실행되고 있을 때 maxmum이 200%라면 최대 12개까지 가능하다는 점을 유념해야 한다.
    • Blue/green deployment: 한 번에 끄고 켜는 업데이트
      • 한 번에 새로운 Task를 동시에 띄운 뒤 기존의 Task는 다 꺼버리는 방식

        → 이것도 maxmium percent 이상으로는 전체 다 띄울 수 없다.

      • 가령 4개의 기존 task가 있다면 4개를 더 만든 뒤 기존의 4개를 꺼버리는 방식

        → Code Deploy 설정이 필요해서 조금 복잡하다.

      • 따로 추가 설정이 필요하다.

  • 미리 만들어 놓은 load-balancer 설정을 한다.

  • 마지막에 auto-scaling 설정까지 하면 끝



요금

컨테이너에 대한 비용만 지불하면 된다!

선결제 비용이 없으며 사용하는 리소스에 대한 비용만 지불한다. ECS 또는 EKS에서 실행되는 컨테이너식 애플리케이션이 소비하는 vCPU, 메모리, 스토리지 리소스 양에 대해 비용을 지불하게 된다.

요금은 컨테이너 이미지 다운로드를 시작한 시점부터 ECS 태스크 또는 EKS 포드가 종료될 때까지 사용된 vCPU, 메모리, 운영체제, CPU 아키텍처 및 스토리지 리소스를 기준으로 계산된다. 이 때, 가장 가까운 초 단위로 반올림 된다.




1) AWSKRUG 강의

2) ECS 강의

profile
쿄쿄

0개의 댓글