✅ Amazon Compute Services
✅ Amazon EC2
- AWS에서 안전하고 크기 조정이 가능한 컴퓨팅 용량을 클라우드에서 제공하는 웹서비스이다.
- 이 서비스를 통해서 아마존이 각 세계에 구축한 데이터 센터의 서버용 컴퓨터들의 자원을 원격으로 사용할 수 있다.
- AWS가 제공하는 URL(Public DNS)를 통해 이 컴퓨터에 접근할 수 있다.
✅ EC2 장점
- 용량을 늘리거나 줄일 수 있다. (탄력성)
- 사용한만큼 지불하므로 저렴하다.
- 사용자가 인스턴스를 완전히 제어할 수 있다.
- 보안 및 네트워크 구성, 스토리지 관리 효과적이다.
✅ EC2의 지역 및 가용 영역 선택
- 각 리전은 개별 지역 내 존재하는 지리적 위치를 의미한다.
- 가용영역(AZ)은 리전 내 있는 구분된 가용성 영역을 의미하며 전용선으로 연결되어 있어 마치 한 클러스터인것처럼 동작한다.
- 지역별로, 지역 내에서도 가용영역을 분리하여 강력한 내결함성과 안정성을 얻을 수 있다.
✅ EC2 요금 옵션
- 온디맨드
- 선결제 금액이나 장기 약정 없이 저렴하고 유연하게 EC2를 사용하기 원하는 사용자
- 단기의 갑작스럽거나 예측할 수 없는 워크로드가 있으며, 중단되어서는 안되는 애플리케이션
- EC2에서 처음으로 개발 또는 시험 중인 애플리케이션
- 스팟 인스턴스
- 시작 및 종료 시간이 자유로운 애플리케이션
- 컴퓨팅 가격이 매우 저렴해야만 수익이 나는 애플리케이션
- 대량의 서버 용량 추가로 긴급히 컴퓨팅 파워가 필요한 사용자
- Saving Plans
- 1년 또는 3년 기간의 일정 사용량 약정을 조건으로 EC2 및 Fargate 사용량에 대해 저렴한 요금을 제공하는 유연한 요금
- 예약 인스턴스
- 수요가 꾸준한 애플리케이션
- 예약 용량이 필요할 수 있는 애플리케이션
- 총 컴퓨팅 비용을 절감하기 위해 1년 또는 3년 동안 EC2를 사용하기로 약정할 수 있는 고객
- 전용 호스팅
- EC2에서 Microsoft 및 Oracle 같은 공급업체의 적격 소프트웨어 라이선스를 사용할 경우
- 기존의 물리적 서버에서 EC2를 사용할 경우
- 온디맨드로 구매 가능(시간당).
- 온디맨드 요금과 비교하여 최대 70% 할인된 예약 인스턴스로 구매 가능.
✅ Amazon EC2 Auto Scaling
- 사용자가 정의한 정책, 일정 및 상태 확인에 따라 자동으로 EC2 인스턴스를 시작하거나 종료하도록 설계된 웹 서비스
- Auto scaling group이란 동일한 사양, 환경 등(동일한 AMI)을 가지고 있는 EC2 인스턴스들의 그룹이다.
- Auto scaling은 인스턴스의 수를 트래픽에 따라 자동으로 조절해준다.
✅ Auto Scaling 구성 요소
- 그룹 - EC2 인스턴스는 그룹에 정리되어 조정 및 관리 목적의 논리적 단위로 처리할 수 있습니다.
- 구성 템플릿 - 그룹에서는 시작 템플릿 또는 시작 구성(권장되지 않음, 제공되는 기능이 적음)을 EC2 인스턴스에 대한 구성 템플릿으로 사용합니다. 인스턴스의 AMI ID, 인스턴스 유형, 키 페어, 보안 그룹, 블록 디바이스 매핑 등의 정보를 지정할 수 있습니다.
- 조정 옵션 - Auto Scaling 그룹을 조정하는 여러 가지 방법을 제공한다. 예를 들어, 지정한 조건의 발생(동적 확장) 또는 일정에 따라 조정하도록 그룹을 구성할 수 있습니다.
✅ Auto Scaling 목적
- 내결함성 향상
- 비정상 상태일 때를 감지하여 종료 후 이를 대체할 인스턴스를 시작
- 복수의 AZ에 배포하도록 Auto Scaling Group을 구성하였을때 하나의 AZ가 사용 불가 상태가 되어도 다른 AZ에 같은 수의 인스턴스가 새로 배포되어 서비스 제공
- 가용성 향상
- 현재 트래픽 요구를 처리할 수 있는 적절한 용량을 갖춤
- 비용 관리 개선
- 필요에 따라 동적으로 인스턴스 수를 확장 / 축소 하면서 사용한 EC2 인스턴스에 대해서만 비용을 지불
✅ Auto Scaling 축소 정책
- 축소 이벤트 발생 시나리오
- 동적 조정 정책을 사용할 때 지표 값의 변화로 그룹 크기가 줄어드는 경우
- 예약된 조정을 사용할 때 예약된 작업의 결과로 그룹 크기가 줄어드는 경우
- 그룹의 크기를 수동으로 줄이는 경우
1. 예시 그림의 Auto Scaling 그룹에는 인스턴스 유형 1개와 가용 영역 2개가 있고 원하는 용량은 인스턴스 2개입니다. 또한 리소스 사용률이 증가하거나 감소할 때 인스턴스를 추가 및 제거하는 동적 조정 정책이 있습니다. 이 그룹에 있는 인스턴스 2개는 다음 다이어그램에 표시된 것처럼 가용 영역 2개에 분산됩니다.
2. Auto Scaling 그룹이 확장되면 Amazon EC2 Auto Scaling은 새 인스턴스를 시작합니다. 이제 Auto Scaling 그룹에 있는 인스턴스 3개가 다음 다이어그램에 표시된 것처럼 가용 영역 2개에 분산됩니다.
3. Auto Scaling 그룹이 축소되면 Amazon EC2 Auto Scaling이 인스턴스 중 하나를 종료합니다.
4. 그룹에 특정 종료 정책을 할당하지 않은 경우 Amazon EC2 Auto Scaling에서는 기본 종료 정책을 사용합니다.
인스턴스 수가 가장 많은 가용 영역을 선택
가장 오래된 시작 구성이 있는 인스턴스를 선택
다음 청구 시간에 가장 가까운 인스턴스를 선택
✅ Amazon EC2 Image Builder
- 가상 시스템 및 컨테이너 이미지의 구축, 테스트 및 배포를 자동화하는 파이프라인을 제공하는 서비스이다.
✅ Image Builder 기능
- OS 이미지 생성, 유지, 검증, 배포 작업의 파이프라인 생성
- AWS 및 On-Premise 환경의 이미지 생성 및 유지 관리 지원
- 같은 AWS Organization 내에서 생성된 이미지 공유
✅ Amazon Machine Image (AMI)
- EC2 인스턴스를 시작하는데 필요한 정보가 들어있는 이미지. 즉 EC2의 복사본이라고 생각하면 된다.
- 다양한 OS의 이미지를 생성할 수 있어 EC2에 필요한 설정이나 환경 구축을 따로 할 필요없이 필요한 이미지를 선택하여 빠르게 생성할 수 있다.
- 직접 AMI를 생성할 필요없이 AWS Marketplace에서 다양한 OS와 환경이 구축되어있는 AMI를 선택하여 EC2를 생성할 수도 있다. (유료)
✅ AMI 구성
- 1개 이상의 Amazon EBS 스냅샷 또는 인스턴스 스토어 기반 AMI의 경우 인스턴스의 루트 볼륨에 대한 템플릿(ex 운영체제, 애플리케이션의 서버, 애플리케이션)
- AMI를 사용하여 인스턴스를 시작할 수 있는 AWS 계정을 제어하는 시작 권한
- 시작될 때 인스턴스에 연결할 볼륨을 지정하는 블록 디바이스 매핑
✅ AMI 사용
- AMI를 생성 및 등록한 다음 새 인스턴스를 시작하기 위해 AMI를 사용할 수 있다. (AMI 소유자가 시작 권한을 부여한 경우 AMI에서 인스턴스를 시작할 수 있다.)
- AMI를 동일한 AWS 리전 또는 다른 AWS 리전으로 복사할 수 있다.
- 더 이상 필요없는 AMI는 등록 취소할 수 있다.
- 고유한 AMI 또는 사전 빌드된 AMI는 특정 리전에만 사용할 수 있다.
- AMI에는 네트워크 엑세스 제어나 공유 기능이 없다.
✅ Amazon Lightsail
- Lightsail이란 아마존에서 제공하는 VPS (Virtual Private Server) 서비스이다.
- VPS (Virtual Private Server)
하나의 물리적 서버를 나누어 여러개의 가상 서버로 사용하는 방법의 한 형태
쪼개어진 가상 서버를 여러명의 클라이언트가 나눠 쓰는 것이다.
하나의 물리 서버를 다른 이들과 공유하는 개념이긴 하지만 각 클라이언트는 독립적인 서버 공간을 가지는 것이 가능하다.
- VPS (Virtual Private Server)
- 라이트세일 플랜에는 가상 머신, SSD 기반 스토리지, 데이터 전송, DNS 관리, 정적 IP 주소 등 프로젝트를 시작하는 데 필요한 모든 것이 포함되어 있다.
- 통상적으로 웹 사이트의 운영, 단순 앱 운영, 개발 및 테스트 환경 등의 목적으로 사용되는 경우가 많다.
- 그렇다면 언제 EC2를 사용하는가?
- 빅데이터 분석
- 고성능 컴퓨팅
- 과학 분야 컴퓨팅
- 멀티-티어 애플리케이션
- 그렇다면 언제 EC2를 사용하는가?
✅ Lightsail 장점
- 클릭 한번으로 모든 과정을 생략하고 아주 쉽게 VPS를 생성 및 관리할 수 있다.
- 확장 가능하며 수많은 AWS services에 접근 가능하다.
- 고가용성 어플리케이션을 쉽게 만들 수 있다.
- 저렴하고 단순하며 요금을 예측 가능하다.
✅ Lightsail 제한 요소
- 계정당 최대 20개의 인스턴스 유지
- 5개의 고정 IP (EIP)
- 총 3개의 DNS 존
- 총합 20TB의 블록스토리지(디스크) 연결
- 5개의 로드 밸런서
- 최대 20개 인증서
✅ AWS App Runner
- 개발자가 사전 인프라 경험이 없어도 컨테이너형 웹 어플리케이션 및 API를 규모에 맞게 신속하게 배포할 수 있도록 지원하는 완벽한 관리형 서비스이다.
- 자동으로 웹 어플리케이션을 구축 및 배포하고 암호화로 트래픽의 로드 밸런싱을 수행한다.
- 트래픽 요구에 맞게 자동으로 확장 또는 축소되므로 서버나 스케일 관리보다 어플리케이션에 집중할 수 있다.
✅ App Runner의 기능
- 자동 배포 : App Runner를 코드 저장소 또는 컨테이너 이미지 레지스트리에 연결하면 App Runner는 소스 코드 또는 컨테이너 이미지가 업데이트 될 때마다 자동으로 어플리케이션을 빌드 및 배포할 수 있다.
- Auto Scaling : App Runner는 기본적으로 활성화되어있는 애플리케이션의 요구 사항에 맞게 컨테이너 수를 자동으로 확장 또는 축소한다.
- 부하 분산 : 어플리케이션의 안정성과 가용성을 보장하기 위해 트래픽의 균형을 자동으로 조정한다.
- 인증서 관리 : App Runner는 구성이 필요없는 완전 관리 형 TLS와 함께 제공된다. 인증서가 만료되기 전에 App Runner는 인증서를 자동으로 갱신한다.
- 로그 및 지표 : App Runner는 광범위한 개발, 배포 및 런타임 로그를 제공하므로 컨테이너화 된 앱을 간편하게 모니터링하고 최적화 할 수 있다. 기본 제공 Amazon CloudWatch 통합을 통해 포괄적 인 컴퓨팅 지표 집합을 얻을 수 있다.
✅ AWS Batch
- 배치성 작업만을 위한 전용 서비스이다.
- 배치 작업의 볼륨 및 특정 리소스 요구 사항에 따라 최적의 계산 리소스 양과 유형을 동적으로 프로비저닝한다.
- 작업 실행에 사용하는 배치 컴퓨팅 소프트웨어나 서버 클러스터를 설치하고 관리할 필요가 없어 결과 분석과 문제 해결에 집중할 수 있다.
- EC2 및 Spot Instance 같은 AWS 컴퓨팅 서비스 및 기능의 전체 범위에 걸쳐 배치 컴퓨팅 워크로드를 계획, 예약 및 실행한다.
✅ AWS Elastic Beanstalk
- 서버에서 개발된 웹 어플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스이다.
- 코드를 업로드해서 용량 프로비저닝, 로드 밸런싱, 오토 스케일링, 어플리케이션 상태 모니터링, 배포를 자동으로 처리하도록 구성할 수 있다.
- Elastic Beanstalk를 사용해 배포를 진행하면 CloudFormation을 이용해 리소스 생성이 진행된다.
✅ Elastic Beanstalk 특징
- 초기 세팅
기본적으로 필요한 환경을 몇번의 클릭으로 세팅할 수 있다. - 환경 구성
AWS Console에서 서버에 필요한 환경 변수들을 쉽게 변경/관리할 수 있다. - 배포 관리
1) S3에 저장된 소스코드로 버전 관리가 된다.
git으로 내려받은 프로젝트 폴더에 들어가서, Beanstalk 배포 명령어인 eb deploy를 쳐주면, S3에 소스코드가 올라가게 된다. - 운영
Auto Scailing이 편하다.
빈스톡 설정 값에서 CPU 혹은 메모리가 일정 이상을 사용하는 경우 인스턴스를 늘리도록 설정할 수 있다. - 로그
패신저, 기본 어플리케이션 로그 등의 로그 로테이트를 알아서 해준다. S3에 저장해주므로 S3에서 로그를 확인할 수 있다. - 모니터링
서버에 문제가 발생한 경우 알림을 주는 경우도 있다.
✅ Elastic Beanstalk 구성 요소
- Application
인프라와 그 위에 동작하는 어플리케이션을 포함해 이르는 말이다. - Environment
어플리케이션이 동작하기 위한 인프라의 설정을 이르는 말이다.
1) Webserver Environment
WebSite, Web Application, Web API 등 HTTP 요청을 서비스하는 경우 사용한다.
2) Worker Environment
시간이 걸리는 처리 등을 백그라운드에서 처리하기 위한 환경으로 오래걸리는 작업을 SQS등을 통해 처리하기를 원할 때 사용한다.
ex) 웹 서버가 인코딩 처리 요청을 받는다. 요청받은 인코딩 요청을 큐에 저장하고, 일단 처리가 시작되었다는 것만 응답한다. 큐에 등록된 처리를 백그라운드에서 실행한다. 처리 완료 후에는 큐에서 제거한다.
✅ AWS Fargate
- EC2 인스턴스의 서버나 클러스터를 관리할 필요 없이 컨테이너를 실행하기 위해 Amazon ECS에 사용할 수 있는 기술이다.
- Fargate를 사용하면 더 이상 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성 또는 조정할 필요가 없다.
✅ Fargate 특징
✅ Fargate 유형
- Fargate launch type
백엔드 인프라를 프로비저닝하고 관리할 필요 없이 컨테이너화된 어플리케이션을 실행한는 데 사용할 수 있다. - EC2 launch type
Amazon ECS 클러스터에 등록하고 직접 관리하는 EC2 인스턴스에서 컨테이너식 어플리케이션을 실행하는 데 사용할 수 있다.
✅ Fargate 장/단점
- 장점
- 관리의 복잡도가 줄어든다.
- Cluster Autoscaler를 사용할 필요가 없다.
- 기존 어플리케이션 변경 없이 Fargate로 이전 가능하다. (소스코드의 변경 X)
- 단점
- 리소스 상한선이 존재한다.
- Stateful한 워크로드의 사용이 불가하다.
- Daemonset을 비롯한 Privilieged Pod 사용 불가능
✅ AWS Lambda
- 서버를 프로비저닝, 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스이다.
- 고정 비용 없이 사용 시간에 대해서만 비용이 발생한다.
✅ Lambda 활용
- 서버를 띄우지 않고 간단한 코드를 실행시키고 싶은 경우
- 특정 기간 또는 특정 주기로 코드를 실행시켜야 하는 경우
- 트리거가 실행될때만 코드를 실행시키고 싶은 경우
✅ Lambda 주요 장단점
- 장점
- 인프라에 대한 걱정 없이 코드 실행 가능 -> NoOps 실현
- 트리거를 이용해 애플리케이션을 자동으로 확장/축소 가능.
- 코드가 병렬로 실행되고 각 트리거는 개별적으로 처리되어 정확히 워크로드 규모에 맞게 조정됨.
- 100ms 단위로 코드가 실행되는 시간 및 코드가 트리거되는 회수를 측정하여 요금을 부과하고, 코드가 실행되지 않을 때는 요금이 부과되지 않음.
- 단점
- 대기 시간이 길다. (Cold Start)
이벤트 중심의 서비스이기 때문에, 항상 실행되고 있지는 않다. (초기 지연 시간이 발생한다) - 상태 제한
- Dos (서비스 거부)
- 테스트 장애
- 대기 시간이 길다. (Cold Start)
✅ Lambda 호출 방식
- 동기식 호출
함수가 이벤트를 처리하여 응답을 반환하기를 기다린다. - 비동기식 호출
Lambda는 처리를 위해 이벤트를 대기열에 저장하고 즉시 응답을 반환한다.
함수가 오류를 반환하거나 병목 중인 경우 Lambda는 재시도를 처리하고, 호출 레코드를 대상에 보낼 수 있다.
✅ AWS Serverless Application Repository
- 서버리스 어플리케이션용 관리형 레포지토리이다.
- 팀, 조직 및 개인 개발자는 재사용 가능한 어플리케이션을 저장 및 공유하고 서버리스 아키텍처를 손쉽게 어셈블 및 배포할 수 있다.
- 서버리스 아키텍처의 AWS Serverless Application Repository로부터 사전 빌드된 어플리케이션을 활용할 수 있으며 이를 통해 팀의 중복된 작업을 줄이고 출시 시간을 단축하는데 도움이 된다.
✅ AWS SAM (Serverless Application Model)
- Serverless Application을 정의하고 관리하는 서비스이다.
SAR의 각 어플리케이션은 사용되는 AWS 리소스를 정의하는 AWS SAM 템플릿과 함께 패키지된다.
- SAM Template : JSON 혹은 YAML을 형식으로 func, API, permission, config, event 등을 정의
- SAM CLI : 템플릿을 빌드, 실행, 디버그, 로컬 테스트, 패키징, 배포 등을 하는 tool
✅ AWS Outposts
- AWS 인프라, 서비스, API 및 도구를 고객 온프레미스로 확장하는 완전 관리형 서비스이다.
- 대기 시간이 짧거나 로컬 데이터 처리 요구로 인해 사내에 남아 있어야 하는 워크로드를 지원하기 위해 아웃포스트를 사용할 수 있다.
✅ Outposts 버전
- VMware Cloud on AWS
인프라를 실행하는데 사용하는 것과 동일한 VMware 제어부 및 API를 사용할 수 있다. - Native AWS
AWS 클라우드에서 실행하는데 사용하는 것과 동일한 API와 제어부를 사용할 수 있다.
✅ Outposts 구성
- Outpost— AWS 가 전초기지를 설치할 고객 관리형 물리적 건물입니다. 현장은 전초기지에 대한 시설, 네트워킹 및 전력 요구 사항을 충족해야 합니다.
- Outpost 구성— Amazon EC2 컴퓨팅 용량, Amazon EBS 스토리지 용량 및 네트워킹 지원이 혼합되어 있습니다. 각 구성에는 고유한 전력, 냉각 및 무게 지원 요구 사항이 있습니다.
- Outpost 용량— 전초기지에서 컴퓨팅 및 스토리지 리소스를 사용할 수 있습니다. AWS Outposts 콘솔에서 전초기지 용량을 보고 관리할 수 있습니다.
- Outpost 장비— AWS에서 소유 및 관리하는 랙, 서버, 스위치 및 케이블을 포함하여 AWS Outposts post 서비스에 대한 액세스를 제공하는 물리적 하드웨어입니다.
- 서비스 링크— Outpost와 연결된 AWS 리전 간에 통신할 수 있는 네트워크 경로입니다. 각 전초기지는 가용 영역과 관련 지역의 확장입니다.
- 로컬 게이트웨이— Outpost와 온프레미스 네트워크 간에 통신을 지원하는 논리적 상호 연결 가상 라우터입니다.
✅ AWS Wavelength
- AWS 컴퓨팅 및 스토리지 서비스에 5G 네트워크의 높은 대역폭과 매우 짧은 대기 시간을 결합하여 개발자가 완전히 새로운 종류의 어플리케이션을 혁신하고 제작할 수 있게 해주는 서비스이다.
- AWS Wavelength를 사용하면 컴퓨팅 및 스토리지가 이동 통신 사업자의 5G 네트워크에서 바로 호스팅되기 때문에 가장 적은 네트워크 홉으로 5G 네트워크의 디바이스에서 AWS 클라우드의 애플리케이션 리소스에 연결할 수 있어 지연 시간과 대역폭 이점을 최대한 활용할 수 있다.
✅ VMware Cloud on AWS
- AWS와 VMware가 공동으로 개발한 하이브리드 클라우드 솔루션이다.
- 온프레미스 VMware vSphere 기반 환경을 EC2에서 실행되는 AWS Cloud에 신속한 마이그레이션이 가능하고 유연성과 확장성, 강력한 보안을 지원해 기업의 디지털 트랜스포메이션 여정을 가속화 할 수 있는 최상의 하이브리드 클라우드 서비스이다.
참고
'Public Cloud > AWS' 카테고리의 다른 글
AWS EKS로 웹 앱을 배포해보자 ! - 2. Application 배포하기 (0) | 2022.03.16 |
---|---|
AWS EKS로 웹 앱을 배포해보자 ! - 1. EKS 구성하기 (0) | 2022.03.16 |
AWS EKS로 웹 앱을 배포해보자 ! - 0. 초기 설정 (0) | 2022.03.16 |
[AWS] AWS EKS란 ? (0) | 2022.03.15 |
[AWS] AWS VPC란 ? (0) | 2022.03.02 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!