AWS EC2, AWS Elastic Beanstalk, AWS ECS, AWS Fargate, AWS Lambda(서버리스)

이 기사
2022년 12월 7일부터 2022년 12월 18일까지 원티드에서 프리온보드 백엔드 챌린지에 참석하며 들은 이야기를 요약한 것입니다.


AWS EC2

Amazon Elastic Cloud Compute(C가 2개이므로 2개…)

가장 일반적인 시스템

일반적으로 말하면 클라우드 컴퓨터여기에서 vpc에 연결하여 나만의 컴퓨터를 만들 수 있는 서비스라고 볼 수 있습니다.

가격대별로 코어와 메모리를 설정하여 컴퓨터처럼 사용하세요.

스팟 인스턴스: 한 번에 많은 용량을 보내야 할 때? 필요합니다.

  • aws의 컴퓨터에서는 사용하지 않는 컴퓨터 리소스를 임시로 확보하여 사용합니다.

  • 단점: 우선순위가 낮은 인스턴스이기 때문에 필요할 때 누군가 사용하면 중간에 스팟 인스턴스가 비활성화될 수 있습니다.

    끌 수 있는 인스턴스를 사용하기에 좋습니다.

  • 우선 순위가 낮기 때문에 저렴합니다.

저축 계획: 대부분의 회사에서 사용합니다.

약속하다

실제 회사에서는 ec2를 ‘만’ 사용하는 것이 중요하지 않습니다.


AWS Elastic Beanstalk

  • 애플리케이션을 빠르게 배포하고 관리할 수 있는 서비스
  • 간단히 말해서 애플리케이션 코드를 업로드하기만 하면 작동합니다.

  • 모니터링 및 자동 스케일링은 자동입니다.

  • 아래에 나열된 언어만 사용할 수 있습니다.

  • E2+에는 서비스 개념 대신 다양한 기능이 추가되었습니다.

asw 사이트에서 시작할 때 추가 옵션에서 모든 것을 설정할 수 있습니다.

단일 인스턴스가 사용됩니다.

모니터링 옵션도 설정할 수 있습니다.


과부하 등의 로그를 확인할 수 있습니다.

“로그”로 이동하면 로그를 더 쉽게 얻을 수 있습니다(ec2는 번거롭습니다).

롤링 업데이트 및 배포 변경 : 바로 배포하거나 서버가 3대일 경우 아직 괜찮은지 확인하면서 하나씩 변경하여 배포 방식을 진행할 수 있습니다.


EB: 엘라스틱 빈스토크

EB에 들어갈 수 있는 모든 형식이 있습니다.

예를 들어 시작 스크립트와 같은 것을 설정해야 합니다.


AWA ECR

프로젝트에서 거의 사용되지 않으며 사용할 필요도 없습니다.

하지만 프로덕션에서 사용할 것이기 때문에 알아두면 좋습니다.



Q: EB 서비스를 사용하면 지속적인 배포가 보장되나요? 예


AWS ECS

프로덕션에서 가장 많이 사용되는 서비스입니다.

(EKS를 운영하는 회사는 많습니다.

)

오케스트레이션을 쉽고 빠르게 실행하여 서버를 확장 및 축소합니다.

환경에 따라 사용자가 많을 때는 서버를 확장하고, 적을 때는 축소할 수 있도록 도와주는 서비스입니다.

Docker 컨테이너는 EC2와 Fargate 사이의 모든 환경에서 실행할 수 있습니다.


ECS는 2개의 EC2를 띄우고 컨테이너가 로드되면 EC2에 컨테이너를 분배하는 역할을 하고 새벽이라 필요없을 때는 1개의 EC2로 옮겨준다.

알아야 할 중요한 용어!

  • 택 정의: ecs를 분류할 때 작업 단위, 작업 설정(컨테이너 이미지, 리소스 할당 설정, 열 서버 포트 등)으로 나뉩니다.

  • 작업: 하나 이상의 컨테이너를 포함하며 ecs에서 컨테이너를 운영하는 가장 작은 단위입니다.

  • 서비스: 논리적 단위이므로 자동 스케일링 및 로드 밸런싱을 관리합니다.

  • 클러스터


작업에는 여러 컨테이너가 포함될 수 있습니다.

여러 Docker 컨테이너를 언제 시작해야 합니까?

로그 관리는 예입니다.

컨테이너는 서버가 될 수 있고 컨테이너는 로그 관리와 같은 서버 관리 컨테이너가 될 수 있습니다.

그것들을 모두 모아 작업이라고 부릅니다.

여러 개의 압정을 함께 묶는 서비스,

서비스 그룹을 클러스터라고 합니다.


각 작업은 작업 정의로 생성되고 그룹화되어 서비스로 관리됩니다.


AWS 파게이트

기존 ECS를 실행 중인 경우 EC2 또는 Fargate의 두 가지 선택이 있습니다.

Fargate는 ec2 없이 컨테이너를 실행할 수 있는 서비스입니다.

Docker 이미지 리포지토리(ECR)에서 이미지를 가져오고 fargate를 실행할 수 있습니다.

장점: 서비스가 성장함에 따라 ec2를 사용하여 늘리고 ecs를 사용하지만, 그것 없이는 fargate로 서버를 늘리거나 줄일 수 있습니다.

왜 우리는 여전히 ec2를 사용하고 있습니까?

가격이 가장 큰 부분입니다.


ec2의 t2.micro 비용(CPU 1/1GB) ⇒ $0.0116

Fargate는 (CPU 1/1GB) ⇒ $0.04048 + $0.004445입니다.

가격차이 4배.


AWS 람다

무조건 서비스. 모르면 절대 안됩니다.

알 필요가있다

서버 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스

코드 실행을 위한 리소스는 임의로 할당할 수 있습니다.

좋은 저렴한 서비스.

이는 코드의 실행 시간과 사용된 리소스에 비례하여 가격이 계산되기 때문입니다.

최대 10기가바이트, 6코어까지 설정하여 사용할 수 있습니다.

치명적 단점: 최대 30분 동안만 사용할 수 있습니다.

장기 실행 작업에 fargate 사용


예) 비동기 처리(Thumbnail 생성)

앱에서 이미지 업로드 →

aws에서 미리 서명된 URL을 전송합니다(URL은 이미 승인되었으며 누구나 액세스할 수 있음). →

S3로 이동 (이미지를 직접 보내면 서버에 과부하가 걸리기 때문에 서버로 직접 이미지를 보내지 않습니다.

)

S3에는 원본 파일이 포함되어 있습니다.

→ Lambda는 이를 사용 가능한 썸네일로 변환합니다.

→ S3로 전송됩니다.

예를 들어,

10,000명이 동시에 이미지를 업로드하는 경우 일괄적으로 처리해야 하지만 Lambda를 사용하면 신청 시 동시에 1,000개의 Lambda가 실행될 수 있습니다.

이미지는 비교적 쉽게 편집할 수 있습니다.

항상 켜져 있어야 하는 EC2/EB를 사용하고 저렴한 Lambda를 선택하는 것은 어떻습니까?


AWS 람다

콜드 스타트 ​​/ 웜 스타트

EC2와 같은 인스턴스보다 대기 시간이 더 깁니다.


코드는 Lambda에 업로드되고 해당 코드는 컨테이너에서 실행됩니다.

aws에서 코드를 실행하는 데 약 1초가 걸립니다.

전방 콜드 스타트(약 1초 소요), 후방 웜 스타트


화면이 켜지는 데 걸리는 시간입니다.



AWS Lambda – 서버리스

클라우드 서비스에서 서버리스 서비스 사용을 간소화하는 오픈 소스 프레임워크입니다.

사용 가능한 언어: Node, Java, Python 등

https://www.serverless.com/

서버리스: AWS Lambda에서 앱 개발 및 모니터링

서버리스 프레임워크 및 서버리스 모니터링 대시보드를 사용하여 AWS Lambda, API Gateway, DynamoDB 등에서 자동 확장 애플리케이션을 쉽게 개발하고 모니터링합니다.

www.serverless.com

백엔드 프레임워크를 Lambda에서 사용할 수 있도록 서버리스로 래핑하는 프레임워크입니다.