반응형
Computing Power (서버)
AWS EC2, AWS Elastic Beanstalk, AWS ECS, AWS Fargate, AWS Lambda (Serverless)
AWS EC2 (Amazon Elastic Cloud Compute)
- 가장 기본적인 형태의 클라우드 컴퓨팅 (= 클라우드 컴퓨터 한 대)
- 온디맨드
- 선결제 금액이나 장기 약정 없이 저렴하고 유연하게 Amazon EC2를 사용하기 원하는 사용자
- 스팟 인스턴스
- 시작 및 종료 시간이 자유로운 애플리케이션 (노는 자원 활용하기)
- 안정성이 보장되는 서버에는 사용하면 안된다
- 보통 배치에 사용, 머신러닝에 사용
- Saving Plans
- 1년 또는 3년 기간의 일정 사용량 약정을 조건으로 EC2 및 Fargate 사용량에 대해 저렴한 요금을 제공하는 유연한 요금
- 비용이 단순히 서버비 뿐만 아니라 네트워크 비용도 포함
- 그래픽카드, 스토리지등 구성 부품을 선택할 수 있다.
- 오토 스케일링을 지원한다.
- 트래픽에 따라 자동으로 인스턴스의 개수를 관리
- 탄력적 IP
- EC2는 재부팅할때마다 IP가 바뀌는데 이 IP를 고정으로 사용하고 싶을때 사용
- 키 페어 ( 비대칭키 )를 등록하여 인스턴스 내부에 접속할때 사용한다.
AWS Elastic Beanstalk
- AWS 클라우드에서애플리케이션을신속하게 배포하고 관리할 수 있는 서비스
(애플리케이션코드를 업로드하기만하면 작동) - Elastic Beanstalk = EC2 + 배포 버전 관리 (롤백) + Elastic Load Balancer + 모니터링 + 로그 트래킹 + 오토 스케일링
- 다양한 언어 지원: .NET / PHP / Java / Ruby / Node.js / Python / Docker / Go
Amazon Fargate
- Fargate를 사용하면 더 이상 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성 또는 조정할 필요가 없습니다. 따라서 서버 유형을 선택하거나, 클러스터를 조정할 시점을 결정하거나, 클러스터 패킹을
최적화할 필요가 없습니다. - 이전에는 컨테이너를 실행하기 위해서는 컨테이너를 실행할 Instance(EC2)를 실행시켜야하였지만, AWS Fargate는 이러한 수고를 덜어 줌
Fargate VS EC2
- 가격이 Fargate가 더욱 비싸다
- 2CPU + 8gb 인스턴스 기준 EC2는 0.104USD인 반면 Fargate는 약 0.226USD이다.
(CPU + 메모리 값 : 0.18624 + 0.04088) - EC2는 칩셋의 성능을 조절할 수 있다. 반면 Fargate는 낮은 성능의 칩셋으로 고정되어 있다.
- 반면 Fargate는 Docker를 사용하다 보니 환경이 안정적이다. 또한 배포할때 편리하다는 장점이 있다.
AWS ECR
- Amazon Elastic Container Registry
- Amazon Elastic Container Registry(Amazon ECR)는 안전하고 확장 가능하고 신뢰할 수 있는 AWS 관리형 컨테이너 이미지 레지스트리 서비스
- DockerHub를 사용하지 않아도 된다. 비슷한 서비스 중 ECR의 비용이 저렴하다.
RDS (DB)
= 데이터를 저장하는 장소S3
= 사진, 이미지 등 파일을 저장하는 장소ECR
= 도커 이미지를 저장하는 장소
AWS ECS
Amazon Elastic Container Service
- ECS(Elastic Container Service)는 AWS에서 제공하는 컨테이너
- 오케스트레이션서비스로 여러 어플리케이션컨테이너를 쉽고 빠르게 실행하고, 컨테이너를 적절하게 분배 및 확장 & 축소 할 수 있도록 도와주는 서비스
- AWS EC2 와 AWS Fargate 중 원하는 환경에서 실행 가능
용어 정리
- Task Definition: 컨테이너의 이미지, CPU/메모리 리소스 할당 설정, port 매핑, volume 설정
- Task: Task 안에는 한 개 이상의 컨테이너들이포함되어 있으며 ECS에서 컨테이너를 실행하는 최소 단위는 Task이다. (인스턴스화)
- Service: Task 들의 Life cycle 을 관리하며, 오토스케일링과로드밸런싱을 관리
- Cluster: Task 가 배포되는 Container Instance 들은 논리적인 그룹
- Task안에 여러 컨테이너가 들어가는 이유
- 사이드카 패턴으로 메인 서버가 죽는 경우를 감지하기 위해서 모니터링용 서버를 구성한다.
- 이를 묶어서 하나의 TASK로 묶어서 올리게 되는 것이다.
- 하나의 Docker-compose라고 보면 된다.
AWS Lambda
- 서버 없이도 코드를 실행시킬 수 있는 서버리스 컴퓨팅 서비스
- 코드를 돌리기위한 리소스를 임의로 지정할 수 있으며, 사용 리소스 x 사용
- 시간에 따라 과금이 된다. (ex. 메모리 용량 / 코어 갯수)
- 최대 15분 / 최대 10GB / 최대 6개의 Core
- 사용 예시
- 비동기 처리 (이미지 썸네일 생성)
- 예측이 불가능 한 리소스 사용 (대용량 처리 / 머신러닝)
Cold Start / Warm Start
- 기본적으로 EC2와 같은 인스턴스보다는 Latency가 높다.
- 콜드 스타트
- 배포 패키지의 크기와 코드 실행 시간 및 코드의 초기화 시간에 따라 새 실행 환경으로 호출을 라우팅할 때 지연 시간이 발생하는 람다 호출 시작 (겨울에 자동차 시동 걸때에서 유래 됨)
- 5분정도 warm하게 유지, 후에 계속 warm하게 유지하기 위해선 지속적으로 사용해야 하는 방법밖엔 없음
- 일반적인 서버의 Latancy가 100ms이하이다. 반면 Lambda는 기본적으로 100ms 이상이다.
Lambda를 사용해야 할때 예시
- 하루에 Request가 10000개 안될때
( 많이 사용하지 않는 서비스 / API / 기능 이다. ) - 병렬 처리
(Youtube에 영상을 올리면 다양한 화질로 변환하는 작업 같은 것)
( SNS 이미지 크롭 )
AWS Lambda - Serverless (프레임 워크)
- AWS, Azure, GCP 등의 서버리스 서비스를 쉽게 사용할 수 있도록 도와주는 오픈소스 프레임 워크
- 사용 가능 서버:
- Node 계열 – ExpressJS, NestJS 등..
- Java 계열 – Spring(Spring Cloud Function),
- Python 계열 – FastAPI, Flask 등..
- 소규모 / 이용자가 많지 않은 서비스에서 가격 효율적으로 이용 가능
반응형
'Devops' 카테고리의 다른 글
AWS 알아보기 5 - AWS RDS & Aurora (0) | 2023.06.11 |
---|---|
AWS 알아보기 4 - 메시지 큐 (Message Queue) (0) | 2023.06.11 |
AWS 알아보기 2 - AWS 인프라 (0) | 2023.06.11 |
AWS 알아보기 1 - AWS란? (0) | 2023.06.11 |
컨테이너, Container (0) | 2023.06.10 |