EC2
Elastic Compute Cloud 의 약자로, 하나의 가상 머신을 빌려주는 서비스라고 생각하면 된다.
아래와 같은 특징을 가진다.
- EBS - 가상 드라이브에 데이터를 저장한다
- ELB - Load balancer를 통해 로드를 분산한다.
- ASG - Auto Scaling Group으로 스케일링 할 수 있다.
EC2 생성 옵션
EC2 인스턴스를 생성할 때 선택할 수 있는 옵션은 다음과 같다.
- OS : Linux, Windows, Mac OS ...
- CPU
- RAM
- 저장공간 : 네트워크를 통해 연결되는 EBS/EFS가 있고, 인스턴스에 직접적으로 연결된 블록 디바이스 스토리지 형태인 Instance store가 있다.
- Network Card
- Firewall rules - Security Group이 방화벽 역할을 한다.
- Bootstrap script - EC2 인스턴스가 최초로 launch될 때 실행되는 script이다. EC2 User data라고 부른다. 보통 업데이트를 실행하거나 필요한 소프트웨어를 설치하며, 인스턴스의 root 계정으로 진행되기 때문에 sudo 명령어가 필요하다.
EC2 인스턴스 타입
EC2 인스턴스를 생성할 때 아래와 같이 명시된 인스턴스 타입을 고르게 된다. 각 명칭이 어떤 것을 의미하는 지 알아보자.
m
: 인스턴스의 클래스를 나타낸다. General purpose, Compute Optimized, Memory optimized 등등의 용도별로 구분된다.
5
: 인스턴스 클래스의 세대를 나타낸다. 숫자가 높을수록 더 개선된 것이라고 볼 수 있다.
2xlarge
: 인스턴스 클래스의 사이즈를 나타낸다. 크기가 커질수록 가격이 굉장히 높아진다...
보안 그룹 (SG, Security Group)
보안 그룹(이하 SG)은 EC2 인스턴스로부터 나가거나 들어오는 트래픽을 통제하는 방화벽 역할을 한다.
기본값으로 모든 접근에 대해 막혀있는 상태이고 어떤 접근을 허용할지를 설정하면 된다.
SG의 rule을 설정하면 어떤 접근을 허용할 지 설정할 수 있는데, 이는 IP나 SG의 endpoint로도 참조가 가능하다.
SG는 EC2 인스턴스의 애플리케이션처럼 동작하는 것이 아니라 바깥에 있으면서 방화벽 역할을 하는 것이기때문에 트래픽이 block되어도 EC2 인스턴스는 알지못한다. 때문에 SG에서 허용되어 있지 않은 IP가 EC2 인스턴스에 접근하려고 했을 때 한없이 로딩이 이어진다. (time out)
SSH Access (port 22) 만을 위한 개별 SG를 만드는 것이 좋다.
기능
- port 접근 설정
- 접근 가능한 IP range 설정
- Inbound network 설정 - 외부에서 EC2 인스턴스로 들어오는 트래픽
- Outbound network 설정 - EC2 인스턴스로부터 나가는 트래픽. 보통 모든 IP에 열어둔다.
비용
- On-Demand Instances : 기간이 짧은 작업에 적합하다. 가격을 예측할 수 있고 초마다 비용이 측정된다.
- Reserved : 기간이 길고 고정적인 작업에 적합한 고정비용 옵션이다. 1년 혹은 3년 옵션으로 대여할 수 있고 market place에서 남은 기간이 있는 인스턴스를 사고 팔 수 있다.
- Savings Plans : 1년 혹은 3년 동안 사용한다는 계약을 하는 것은 Reserved와 비슷하지만 Savings plan은 얼마어치를 사용할 것을 보장한다는 점에서 다르다. (e.g 1년동안 시간당 $10 사용을 약속) 정해진 비용을 초과해서 사용 시 On-demand 옵션으로 비용이 청구된다.
- Spot Instances : 가장 저렴한 옵션이다. 경매를 하는 방식이어서 인스턴스를 도중에 잃을 위험이 있어 짧고 종속되지 않는 작업에 적합하다. (배치작업, 데이터 분석 등등)
- Dedicated Hosts : 물리적인 서버 전체를 빌리는 것이어서 가장 비싼 옵션이다. 물리적인 서버에 직접 접근을 할 수 있는 권한이 주어진다.
- Dedicated Instances :
- Capacity Reservations : 특정 AZ의 capacity를 빌린다.
AMI (Amazon Machine Image)
EC2 인스턴스를 사용자의 상황에 맞게 커스텀한 설정이 이루어져 있는 일종의 EC2 템플릿이다.
Region 기준으로 생성되고 Region 간 AMI 복사가 가능하다. 단, 복사하지 않고 그 원본을 통해 다른 Region에 인스턴스를 생성할 수는 없다. AMI marketplace가 있어 사용자들이 본인이 생성한 AMI를 사고 팔 수 있다.
AMI 생성방법
- EC2 인스턴스를 사용자의 상황에 맞게 설정한다.
- 데이터 일관성을 위해 인스턴스를 중지한다.
- AMI를 생성한다. (이 과정에서 EBS snapshot 또한 생성됨)
이렇게 생성한 AMI를 사용하여 설정이 완료된 EC2 인스턴스를 바로 launch할 수 있다.
EC2 Instance store
EC2 인스턴스에 직접적으로 연결된 블록 디바이스 스토리지로, 고성능 하드디스크가 필요할 때 사용하면 된다.
EBS는 네트워크 드라이브로 그에 따른 여러 장점들(안정성, 사용성)이 있지만 EC2 Instance store는 EBS 보다 좋은 I/O 성능을 가지며 buffer, cache 같은 임시 컨텐츠를 다루기에 용이하다.
다만 단점은 EC2 인스턴스를 중지시켰을 때 데이터가 사라져 데이터 손실의 위험이 있어 사용자가 백업과 복구에 대한 준비를 철저히 해야한다.