Cloud Computing Service
인터넷을 통해 서버, 스토리지, DB, 네트워크 및 기타 컴퓨팅 자원에 대한 온디맨드 액세스를 제공하는 서비스
사용자가 직접 인프라를 보유하거나 관리할 필요가 없고, 필요할 때 원하는 컴퓨팅 리소스를 사용할 수 있다.
AWS의 주요 컴퓨팅 엔진
IaaS
- EC2
- AWS에서 가장 기본적이고 널리 쓰이는 인프라
- 가상 머신으로 제공되며 인스턴스라고 불림
- 물리 환경의 컴퓨터처럼 컴퓨팅 리소스를 제공한다.
- LightSail
- 초보자 친화적인 서비스로, 주어진 리소스 옵션 중 하나를 골라 단일 가상 서버를 간단히 설정한다.
- 사전에 구성된 템플릿을 이용해 인스턴스를 빠르게 배포할 수 있다.
Serverless
- Elastic Beanstalk (PaaS)
- EC2 위에 구축된 고급 관리 플랫폼
- 사용자가 애플리케이션 코드를 EB에 업로드하기만 하면 EB가 EC2 인스턴스를 자동으로 생성하고 프로비저닝, 로드 밸런싱, Auto Scaling 등의 개발과 배포를 자동화한다.
- Lambda (FaaS)
- 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행하는 서비스
- 서버 및 운영체제의 유지보수, 용량 프로비저닝 및 자동 확장, 코드 모니터링 과 같은 컴퓨팅 리소스의 모든 관리를 자체적으로 수행하므로, Lambda가 사용하는 언너 중 하나로 코드만 제공하면 된다.
Lightsail
가상 머신, 컨테이너, 데이터베이스, CDN, 로드 밸런서, DNS 관리 등 프로젝트를 빠르게 시작하는 데 필요한 모든 기능을 신속하게 이용 가능하도록 하는 VPS (Virtual Private Server) 서비스
1대의 물리적 서버에 다수의 가상 서버를 구축한다.
뭔가 AWS스럽지 않은 콘솔에서 인스턴스, 컨테이너, DB, 스토리지, DNS 등을 한 번에 관리할 수 있다!
Lightsail 기능
- Instance
- AWS 클라우드에 있는 가상 프라이빗 서버 (VPS)
- 리전, 가용영역, 인스턴스 이미지(특정 운영체제와 소프트웨어 구성 포함)로 선택할 플랫폼과 블루프린트(미리 정의된 설정, 구성 및 자원의 모음) 선택
- 인스턴스 이미지 (AMI) : WordPress, Django, Nginx(LEMP) Node.js, Ubuntu, CentOs 등이 있고, 브라우저 내 SSH 또는 자체적인 SSH 클라이언트를 사용하여 인스턴스에 소프트웨어를 추가로 설치할 수 있다.
- 인스턴스 시작시 스크립트 설정, SSH 키페어, 데일리 백업 설정 및 인스턴스 플랜 설정
- 가격에 따라 정해진 CPU,메모리,디스크 용량을 선택하게 되고 정해진가격만큼 과금되는 형식 (예측 가능한 과금)
한달 내내 실행을 시켜도 트래픽이 많지 않다면 EC2보다 훨씬 저렴하다
- Container Service
- 클라우드에서 컨테이너형 어플리케이션을 쉽게 실행하도록 돕는 서비스
- 필요한 배포 이미지, 성능, 노드수만 지정하면 인프라를 관리할 필요 없이 컨테이너 서비스 실행
- 도커 컨테이너 실행이 가능하지만, windows 컨테이너는 지원되지 않는다.
- 컨테이너 서비스는 Lightsail의 로드밸런스 대상이 될 수 없다.
- LightSail의 로드 밸런서는 인스턴스 간의 트래픽을 분산하는데 사용되지만, 컨테이너 서비스의 경우 수동으로 로드밸런싱을 해주어야 한다.
- Database
- DBMS 선택 및 master user name, 데이터베이스 이름 설정, 데이터베이스 선택 가능
- Networking
- 고정 IP : Lightsail로 만들어진 인스턴스에 고정 IP 주소 할당
- Distribution : 콘텐츠 전송 네트워크(CDN) 기능 제공
- Load Balancer : 트래픽을 여러 서버로 균등하게 나누는 기능을 제공
- Storage
- Bucket 생성 : 파일, 이미지, 비디오 등의 객체를 저장하고 액세스하는 공간을 제공
- Disk 생성 : 라이트세일 인스턴스에서 하드 드라이브로 마운트할 수 있는 스토리지 볼륨
- Snapshot
- 인스턴스나 디스크의 상태를 캡쳐하여 백업 또는 복원에 사용하는 기능
- 문제 발생 시 백업, 애플리케이션 확장을 위한 복제, 다른 AWS 서비스로의 마이그레이션 등에 이용한다.
- DNS Zone
EC2
AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공하는 서비스로, 하드웨어 투자 없이 빠르게 어플리케이션을 개발하고 배포하도록 가상 서버의 구축과 네트워킹 구성, 스토리지 관리 등을 돕는 서비스
EC2 Keywords
- AMI
- Lightsail을 EC2로 마이그레이션 할 때에도 AMI를 이용한다
- 도커의 이미지와 같은 역할이지만, EC2를 특정 환경으로 실행시키기 위한 레시피라고 보면 된다!
- 보안그룹과 키페어
- 공개 키 (Public Key) : AWS에서 인스턴스를 생성할 때 사용되며, 인스턴스 내부에 자동으로 저장이 된다.
- 개인 키 (Private Key) : 사용자가 인스턴스를 처음 생성할 때 다운로드하며(pem), 해당 키는 절대로 EC2에 업로드되지 않는다. 사용자만이 이 개인 키를 가지고 있어야 하며, 이를 사용해 EC2 인스턴스에 접근한다.
- Elastic IP
- 인스턴스 재시작시 바뀌는 IP 주소를 고정할 수 있다.
- 인스턴스 스토어 볼륨
- 인스턴스와 물리적으로 직접 연결된 스토리지로 임시데이터를 저장하는 스토리지 볼륨이다.
- 인스턴스를 끄면 사라진다
- Amazon Elastic Block Store (Amazon EBS)
- 클라우드에서 사용하는 가상의 하드디스크
- EC2와 별개로 동작하기 때문에 인스턴스가 종료되어도 별개로 작동이 가능하다.
- EC2와 같은 AZ에 있어야 한다.
Lightsail vs EC2
Auto Scaling & Load Balancer
Auto Scaling
클라우드 리소스를 자동으로 조정하여 지정된 조건에 따라 필요할 때만 필요한 만큼의 컴퓨팅 리소스를 사용할 수 있도록 하는 AWS 서비스이다.
사용량이 증가하면 Auto Scaling은 사용자 정의 규칙에 따라 자동으로 EC2 인스턴스를 추가하여 용량을 늘리고, 사용량이 감소하면 리소스를 줄여 비용을 절감한다.
Scale up vs Scale out
결론적으로, AWS Auto Scaling은 Scale in & out!
Scale up
하나의 인스턴스의 리소스(예: CPU, 메모리)를 늘리는 것을 의미.
Scale out
더 많은 인스턴스를 추가하여 전체 시스템의 용량을 늘리는 방식
EC2 Auto Scaling
AutoScaling을 위한 서비스가 이렇게나 다양한데 EC2 Auto Scaling을 한 번 보자