EC2
인스턴스 타입
운영체제, CPU, RAM, Storage, 네트워크 유형을 고를 수 있다.
범용 타입
웹 서버나 코드 저장소 등 다양한 작업에 적합하다.
CPU, Memory, Network 리소스가 균형 잡혀 있다.
컴퓨팅 최적화
배치 처리, 미디어 트랜스코딩, 고성능 웹서버, 고성능 컴퓨팅(HPC), 머신러닝, 전용 게임 서버 등의 작업에 적합하다.
C로 시작하는 이름을 가진다.
메모리 최적화
메모리에서 대규모 데이터를 처리하는 작업에 빠른 성능을 제공한다.
인메모리 데이터베이스, 분산 웹 스케일 캐시 저장소, BI(business intelligence)에 최적화된 인메모리 데이터베이스, 실시간 대규모 비정형 데이터 처리용 애플리케이션 등에 적합하다.
R로 시작하는 이름을 가진다.
스토리지 최적화
로컬 스토리지에서 대규모 데이터셋에 접근할 때 적합하다.
데이터베이스, OLTP(online transaction processing) 시스템, 데이터 웨어하우스 애플리케이션, 분산 파일 시스템 등에 적합하다.
특징
인스턴스를 중지했다가 다시 시작하면 public IPv4가 변경될 수 있다. private IPv4는 변경되지 않는다.
사용자 데이터
부트스트랩 스크립트 또는 cloud-init 명령을 이용해 처음 인스턴스를 구동할 때 어떤 작업을 할 지 설정할 수 있다.
업데이트 설치, 소프트웨어 설치, 인터넷에서 파일 다운 등이 가능하며 부팅 시 어떤 것을 수행할 지 설정할 수 있다.
sudo 권한으로 수행된다.
기본적으로 처음 인스턴스 시작할 때에만 수행되지만, 인스턴스를 재시작할 때마다 사용자 데이터 스크립트와 cloud-init 명령이 실행되도록 구성을 업데이트할 수 있다.
인스턴스가 실행 중일 때는 사용자 데이터를 변경할 수 없다.
시작 템플릿
Amazon Machine Image(AMI)의 ID, 인스턴스 타입, 키 쌍, 보안 그룹, 그리고 EC2 인스턴스를 시작하기 위해 사용하는 다른 파라미터 같은 인스턴스 구성 정보를 지정한다.
여러 템플릿 버전을 가질 수 있다.
원하는 스케일, 성능, 비용을 달성하기 위해 온디맨드 인스턴스와 스폿 인스턴스를 모두 사용하여 다수의 인스턴스 타입에 걸쳐 용량을 프로비저닝할 수 있다.
시작 구성
오토 스케일링 그룹이 EC2 인스턴스를 실행하는 데 사용하는 인스턴스 구성 템플릿이다.
시작 구성을 생성할 때는 Amazon Machine Image(AMI)의 ID, 인스턴스 타입, 키 쌍, 하나 이상의 보안 그룹, 블록 장치 매핑 등 인스턴스에 관한 정보를 명시해야 한다.
보안 그룹
방화벽 규칙은 보안 그룹을 통해 설정할 수 있다.
인터넷에서 서버로 들어오는 인바운드 트래픽, 서버에서 외부로 나가는 아웃바운드 트래픽을 허용/차단할 수 있다.
여러 ec2 인스턴스에 적용될 수 있다. 즉, ec2와 1:1 관계가 아니다.
특정 region, VPC 조합에서만 사용할 수 있다. 따라서 다른 지역으로 전환 시 보안 그룹을 새로 생성해야 한다.
SSH 접근을 위해 별도 보안 그룹을 유지하는 것이 좋다.
임의의 포트에 타임아웃으로 인해 연결할 수 없다면, EC2 보안 그룹에 의해 막힌 것이다.
모든 인바운드 트래픽은 기본적으로 차단되고, 모든 아웃바운드 트래픽은 기본적으로 허용된다.
한 보안그룹에서 다른 보안 그룹들을 허용할 수 있다. 이를 통해 여러 인스턴스끼리 쉽게 통신할 수 있다.
일반적인 포트
22 : SSH - 리눅스 인스턴스에 로그인
21 : FTP - 파일 공유를 위한 업로드
22: SFTP - SSH를 이용한 파일 공유
80: HTTP
443: HTTPS
3389: Remote Desktop Protocol - 윈도우 인스턴스에 로그인
연결
SSH
SSH 연결을 위해서는 Key pair를 만들어야 한다.
다음 명령을 통해 ssh 접근을 할 수 있다. pem 파일이 위치한 디렉토리에서 명령을 실행해야 한다.
chmod 0400 <pem filename>
ssh -i <pem filename> ec2-user@<public ip>
EC2 Instance Connect
AWS Console에서 Connect 버튼을 누르면 브라우저 상에서 CLI를 사용할 수 있다.
SSH 키를 관리할 필요가 없다.
IAM 역할
EC2에서 AWS 리소스 정보를 얻기 위해 IAM 역할을 연동시킬 수 있다.
EC2 인스턴스에 aws configure 명령으로 절대 access key를 입력해두면 안된다. EC2에 접근할 수 있는 어떤 유저이든 access key에 접근할 수 있기 때문이다.
구매 옵션
워크로드에 따라 적절한 옵션을 선택해야 한다.
On-Demand
단기 워크로드, 가격 예측 가능, 초 단위로 과금
선결제나 장기 약정이 필요 없다.
애플리케이션 동작을 예상할 수 없는 경우
Reserved
장기 워크로드에 적합
애플리케이션의 데이터베이스 등
인스턴스 유형, 리전, 테넌시, OS 등 특정 속성을 예약할 수 있다.
1, 3년 단위로 예약 가능
전환형 예약 인스턴스의 경우 인스턴스 유형, 패밀리, OS, 테넌시를 변경할 수 있다.
Saving Plans
장기 워크로드에 적합, 사용량 기반
시간 당 과금되는 액수를 1, 3년 단위로 예약 가능하다. (ex. 1년동안 500달러 쓸게~)
사용량을 초과하는 경우 온디맨드 가격으로 청구된다.
특정 리전과 제품군에 한해 사용 가능하다. ex) us-east-1 리전의 M5 장비
인스턴스 크기, OS, 테넌시는 변경 가능하다.
Spot Instances
서비스가 중단되어도 복구하기 쉬운 단기 워크로드에 적합
배치 작업, 데이터 분석, 이미지 프로세싱, 분산 워크로드, 시작 및 종료가 유동적인 워크로드
가장 저렴하다.
설정해둔 가격을 넘어가면 인스턴스가 즉시 종료될 수 있다.
최대 스팟 인스턴스 가격을 정의하여, 인스턴스의 스팟 가격이 우리가 지불하고자 하는 최대 가격보다 낮다면
해당 인스턴스를 유지한다.
스팟은 시간에 따른 공급와 용량에 따라 달라진다. 현재 스팟 가격이 정의된 최대 가격을 초과하면 2분의 유예 기간동안 인스턴스가 하던 작업을 우아하게 중지시키거나 바로 종료시킬 수 있다.
AWS가 스팟 인스턴스를 회수하는 것을 원하지 않는다면, 스팟 블록을 사용할 수 있다. 스팟 블록은 지정된 기간(1~6시간) 동안 스팟 인스턴스를 차단한다. 그동안 중단 없이 해당 블록을 사용할 수 있다.
스팟 요청에서는 원하는 인스턴스 수, 최대 가격 및 시작 사양, 유효 기간을 지정하고 요청의 유형을 설정해야 한다.
다음은 두 가지 요청의 유형이다.
스팟 인스턴스 일회성 요청
스팟 요청이 완료되는 즉시 인스턴스가 시작된다.
이후 스팟 요청은 사라진다.
영구 인스턴스 요청
스팟 요청이 유효한 기간 동안은 인스턴스 수도 유효하다
인스턴스가 중지되거나 스팟 가격을 기준으로 중단되는 경우, 스팟 요청이 다시 실행되고 유효성이 확인되면 스팟 인스턴스가 다시 시작된다.
스팟 인스턴스를 중지했는데, 스팟 요청이 여전히 활성 상태라면 스팟 요청은 자동으로 인스턴스를 다시 시작할 수 있다.
스팟 요청을 취소하려면, 스팟 요청이 활성 상태이거나, 비활성화 상태여야 한다.
스팟 인스턴스를 더 이상 사용하지 않으려면 스팟 요청을 취소한 후 스팟 인스턴스를 종료해야 한다.
스팟 인스턴스를 먼저 종료하면, AWS는 스팟 요청으로 돌아가 요청된 상태에 맞게 다시 스팟 인스턴스를 시작한다.
스팟 플릿
스팟 인스턴스의 집합이다. 선택적으로 온디맨드 인스턴스가 될 수 있다.
여러 개의 런치 풀과 여러 인스턴스 유형을 정의할 수 있다.
다양한 인스턴스 유형, 다양한 OS 및 다양한 가용성 영역을 기반으로 런치 풀을 정의한다.
런치 풀을 여러 개 정의해두면, 플릿이 가장 적합한 런치 풀을 선택한다.
스팟 플릿이 예산에 도달하거나 원하는 용량에 도달하면 인스턴스 시작을 중지한다. 스팟 플릿에 스팟 인스턴스를 할당하는 전략을 정의해야 한다.
최저 가격: 가장 낮은 가격인 풀에서 인스턴스를 시작하도록 하여 비용이 최적화된다. 워크로드가 매우 짧은 경우 적합하다.
다양성: 스팟 인스턴스를 직접 정의한 모든 풀에 분산한다. 가용성과 긴 워크로드에 적합하다.
용량 최적화: 원하는 인스턴스 수에 맞는 최적의 용량을 가진 풀을 사용한다.
가격 용량 최적화(추천): 사용 가능한 용량이 가장 큰 풀을 선택하고, 그 중 가격이 가장 낮은 풀을 선택한다.
Dedicated Hosts
물리 서버 전체를 예약하여 인스턴스 배치를 제어할 수 있다.
소켓, 코어, VM 소프트웨어 라이선스 마다 비용이 청구될 수 있다.
물리적인 서버를 예약하기 때문에 가장 비싸다.
복잡한 라이센싱 모델이 있거나 회사에서 강력한 규제와 규정 준수 요건이 있는 경우 적합하다.
기존에 온프레미스 환경에서 사용하던 소프트웨어 라이선스를 그대로 사용 가능하다.
저수준 하드웨어에 대한 가시성을 제공한다.
Dedicated Instances
전용 하드웨어 사용
사용자 하드웨어에 고유한 인스턴스를 갖는 것
같은 계정의 다른 인스턴스와 하드웨어를 공유할 수 있다.
인스턴스 배치는 제어할 수 없다.
Capacity Reservations
AZ의 특정 기간동안 얼마 만큼의 용량을 이용할 지 예약할 수 있다.
온디맨드 인스턴스가 실행중이든 아니든 용량 기반이므로 요금은 계속 나간다.
시간 약정이 없다.
특정 AZ에 존재하는 단기 연속적인 워크로드에 적합하다.
EBS
특징
Elastic Block Store
인스턴스가 실행중인 동안 연결 가능한 네트워크 드라이브
물리 드라이브가 아니다. 따라서 인스턴스와 EBS 볼륨이 통신하기 위해 네트워크 연결이 필요하다. 이로 인해 지연이 발생할 수 있다.
하지만 인스턴스가 내려가고 다른 인스턴스를 구동시켜야 할 때 다시 쉽게 붙일 수 있다.
CCP 레벨의 EBS는 한 번에 하나의 인스턴스에만 마운트 가능하다.
Associate 레벨의 경우 일부 EBS를 다중 연결 가능하다.
특정 AZ에만 바운드되어 사용 가능하다. 스냅샷을 이용하면 서로 다른 AZ 간 이동이 가능하다. (매핑할 EC2와 같은 AZ에 있어야 한다.)
사용할 용량을 미리 결정해야 한다.
EC2와 함께 삭제될 지 여부는 직접 설정할 수 있다.
루트 EBS 볼륨은 기본적으로 EC2 인스턴스가 삭제될 때 함께 삭제되도록 설정되어 있다. 다른 EBS 볼륨은 기본적으로 함께 삭제되지 않는다.
스냅샷
EBS 볼륨의 특정 시점에서의 백업
EBS 스냅샷을 다른 AZ 혹은 리전에 복사할 수 있다.
재해 복구 시에 AWS의 다른 리전에 데이터를 백업해둘 수 있다. 백업 시에는 IO를 사용하므로 애플리케이션에 많은 부하가 있을 때에는 진행하면 안된다.
AZ 간에 EBS 볼륨을 이동시키려면 스냅샷을 이용해야 한다.
ex) AZ-1에서 스냅샷 생성 -> AZ-2에서 스냅샷을 기반으로 EBS 볼륨 생성 후 사용
기능
스냅샷 아카이브
스냅샷을 75% 저렴한 아카이브 티어로 옮겨둘 수 있다.
아카이브된 스냅샷은 복원하는 데에 24~72시간 정도가 걸린다.
스냅샷을 휴지통 보관
실수로 스냅샷을 지웠을 때 복원할 수 있도록 한다.
휴지통에 스냅샷을 보관하는 기간을 Retention Rules로 설정 가능하다.
빠른 스냅샷 복원
스냅샷을 완전히 초기화한다.
스냅샷이 매우 클 때 EBS 볼륨을 초기화해야 하거나 매우 빠르게 인스턴스화해야 할 때 유용하다.
비용이 비싸다.
볼륨 유형
크기, 처리량, 초당 I/O 작업 수(IOPS)로 구분된다.
범용 SSD
gp2 / gp3
다양한 워크로드에 대해 가격과 성능의 균형을 맞추는 범용 SSD 볼륨
비용 효율적이다.
지연이 적고 시스템 부트 볼륨, 가상 데스크톱, 개발 및 테스트 환경에 적합하다.
gp3는 gp2보다 최근에 개발되었으며 IOPS와 처리량을 각각 독립적으로 설정할 수 있다. 이 때 볼륨 크기와는 상관 없다.
gp2는 볼륨의 크기와 IOPS가 연관되어 있다. 즉, 볼륨 크기가 커져야 IOPS가 올라갈 수 있다.
둘 다 최대 16000 IOPS 까지 지원한다.
IOPS 프로비저닝 SSD
io1 / io2 Block Express
지연이 적고 처리량이 높은 워크로드에 적합한 가장 높은 성능의 SSD 볼륨 (프로비저닝 되어 있다.)
16000 IOPS 이상이 필요한 경우 사용해야 한다.
io1의 경우 기본 32000 IOPS, Nitro EC2 인스턴스와 함께 사용 시 64000 IOPS까지 지원한다.
io2의 경우 최대 256,000 IOPS까지 지원한다.
데이터베이스 워크로드와 같이 스토리지 성능과 일관성에 민감한 경우에 적합하다.
EBS 다중 연결 기능을 지원한다.
하드디스크 드라이브
st1
자주 접근되고 처리량이 많은 작업을 위한 저비용 대용량 볼륨
빅데이터, 데이터 웨어하우스, 로그 프로세싱 등에 적합하다.
sc1
자주 접근되지 않는 데이터를 위한 가장 저렴한 HDD
EC2의 부팅 볼륨(OS의 루트가 실행되는 위치)으로는 gp2/gp3/io1/io2 만 사용 가능하다.
다중 연결
동일한 EBS 볼륨을 동일 AZ에 있는 여러 개의 EC2 인스턴스와 연결할 수 있다.
io1, io2 제품에서만 사용 가능하다.
각 EC2 인스턴스는 고성능 볼륨에 대한 동시 읽기 및 쓰기 권한을 갖게 된다.
클러스터링된 리눅스 애플리케이션 사용 시 가용성이 높아진다.
지정된 AZ에서만 사용 가능하다.
한 번에 최대 16개의 EC2 인스턴스에 연결 가능하다.
암호화
EBS 볼륨을 생성하면 데이터가 볼륨 내부에 암호화되고, 인스턴스와 볼륨 간의 데이터 전송 시에도 암호화된다.
스냅샷 뿐만 아니라 스냅샷으로 생성한 볼륨 역시 모두 암호화된다.
이때 암호화 및 복호화 메커니즘은 백그라운드에서 처리된다.
지연 시간에는 영향이 거의 없다.
KMS에서 암호화 키를 생성해 AES-256 암호화 표준을 갖는다.
암호화되지 않은 스냅샷을 복사해 암호화할 수 있다.
암호화된 볼륨의 스냅샷은 암호화되어 있다.
EC2 인스턴스 스토어
EBS 볼륨은 네트워크 드라이브이므로 확장성 이식성은 좋지만 성능이 제한되어 있다.
고성능의 하드디스크가 필요하다면 EC2 인스턴스 스토어를 사용해 같은 서버에 물리적으로 연결된 디스크 공간을 이용할 수 있다.
EC2 인스턴스가 중지되거나 종료되면 스토리지가 사라지므로 임시 스토리지로 부른다.
버퍼나 캐시, 스크래치 데이터, 임시 콘텐츠 등을 담아둘 수 있다.
EC2 인스턴스의 서버에 장애가 발생할 때(hardware fail) 데이터가 사라질 위험이 있다.
필요 시 주기적으로 백업하거나 복제해두어야 한다.
EFS
Elastic File System
수백개의 EC2 인스턴스에 마운트 가능한 네트워크 파일 시스템
기본적으로 여러 AZ에 분포된 EC2 인스턴스들에 마운트될 수 있다.
고가용성, 확장성을 지원하지만 EBS 볼륨에 비해 3배 정도 비싸다. 사용하는 데이터 용량(GB)에 따라 비용이 과금된다.
파일 시스템이 자동으로 petabytes 단위까지 확장되므로 미리 용량을 지정하지 않아도 된다.
콘텐츠 관리, 웹서비스 제공, 데이터 공유, 워드프레스 등을 위해 사용 가능하다.
NFS 프로토콜을 사용한다.
EFS에 대한 접근을 제어하기 위해서 보안 그룹을 사용해야 한다. 이는 EC2 생성 시 EFS와 연동하면 AWS가 자동으로 만들어준다.
Linux 기반 AMI와 호환된다. POSIX 파일 시스템을 사용하고 표준 파일 API를 가진다.
KMS를 사용해 암호화를 활성화할 수 있다.
모드
성능 모드
General Purpose (기본으로 활성)
웹서버, CMS 등 지연 시간에 민감한 경우 사용한다.
Max I/O
낮은 지연 시간, 많은 처리량, 병렬성이 필요한 빅데이터, 미디어 프로세싱 등에 사용한다.
처리량 모드
Bursting
파일 시스템의 사용 용량에 따라 처리량을 조금 더 확장할 수 있다.
버스팅 성능은 TiB 당 100MiBps가 제공된다.
Provisioned
스토리지 크기에 관계 없이 처리량을 지정할 수 있다.
ex) 1TB 스토리지에서 1 GiB/s의 처리량이 나오도록 지정
Elastic (추천)
워크로드에 따른 처리량 자동 조절
ex) 읽기는 최대 3GiB/s, 쓰기는 최대 1GiB/s가 되도록 지정
일정 주기로 실행되는 배치 작업으로 디스크에 접근하는 것이 아니라 특정 요인으로 인해 랜덤하게 접근되는 등 워크로드를 예측하기 어려울 때 유용하다.
스토리지 클래스
스토리지 계층
파일을 일정 시간을 기준으로 스토리지 계층 간 이동을 시키기 위해 수명 주기 정책을 구현할 수 있다.
Standard
자주 접근하는 파일을 위한 계층
Infrequenct access (EFS-IA)
자주 접근하지 않을 때 사용
파일을 조회 시 비용이 발생한다.
이 스토리지 계층을 이용해 비용을 절감시킬 수 있다.
Archive
1년에 n번 접근하는 경우 사용
파일 시스템 타입
가용성과 지속성을 기준으로 두 타입으로 나뉜다.
Standard(Regional): multi AZ, 운영 환경에 적합하다.
One Zone: 하나의 AZ에서만 사용 가능하며 개발 환경에 적합하다. 백업이 기본적으로 활성화되어 있으며, 접근 빈도가 낮은 스토리지 계층인 EFS One Zone-IA와 호환된다.
AMI
Amazon Machine Image
사용자 지정 EC2 인스턴스를 의미한다.
각 소프트웨어 구성에 대한 설정 파일, OS, 모니터링 도구 등을 정의해 부팅과 설정 시간이 단축된다.
보안 소프트웨어, 필수 소프트웨어 등 EC2 인스턴스에 설치하고자 하는 소프트웨어가 AMI를 통해 사전에 패키징된다.
특정 리전에 맞도록 구축하고, 원하는 리전에 복사해놓을 수 있다.
EC2 인스턴스를 여러 종류의 AMI에 실행시킬 수 있다.
Public AMI: AWS가 제공하는 AMI
Custom AMI: 직접 사용자가 만들어서 유지하는 AMI
AWS Marketplace AMI: 마켓플레이스에서 특정 판매자가 만든 AMI
AMI 사용 과정
EC2 인스턴스를 시작하고 커스터마이즈한다.
인스턴스를 중지시켜 데이터 무결성을 확보한다.
AMI를 빌드한다. 이 때 EBS 스냅샷이 같이 생성된다.
다른 AMI들에 인스턴스를 실행할 수 있다.
Last updated