EC2란?
EC2는 Elastic Compute Cloud의 약자로 아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스이다.
EC2는 다양한 기능을 제공한다.
- 가상 머신을 빌릴 수 있다. (EC2 인스턴스라고 한다.)
- EBS 볼륨이라는 가상 드라이브에 데이터를 저장할 수 있다.(EBS)
- 여러 머신에 로드를 분산하는 Elastic Load Balancer를 이용한다. (ELB)
- 오토 스케일링 그룹, ASG를 이용해 서비스를 확장한다. (ASG)
EC2 크기 및 구성 옵션
- 운영체제(OS): Linux, Window, Mac OS
- 가상 머신에 사용할 컴퓨팅 성능과 코어 수 즉 CPU를 선택 가능
- 랜덤 액세스 메모리, RAM 용량 선택 가능
- 스토리지 용량 선택 가능
- Network-attached (EBS & EFS)
- hardward (EC2 Instance Store)
- EC2 인스턴스에 연결할 네트워크 유형 선택 가능
- EC2 인스턴스의 방화벽 규칙 정의 가능 (보안 그룹)
- 부트스트랩 스크립트를 이용해 처음 시작할 때의 인스턴스를 구성 가능(EC2 User data)
EC2 User data
- EC2 User data를 이용해 인스턴스를 부트스트래핑 할 수 있다.
부트스트래핑이란? 부트스트래핑은 머신이 시작할 때 명령을 실행하는 것이다. 이 스크립트는 처음 시작할 때 한 번 실행되고 다시 실행되지 않는다.
- EC2 User data는 부팅 작업을 자동화한다 이를 부트스트래핑이라고 부른다.
- 업데이트 설치
- 소프트웨어 설치
- 인터넷에서 일반 파일 다운로드
- EC2 User data는 루트 사용자로 실행된다. (pseudo 권한으로 명령을 실행하게 된다.)
EC2에 사용 가능한 인스턴스
EC2의 구성
- 인스턴스: 클라우드에서 사용하는 가상 서버로 CPU, 메모리, 그래픽 카드등 연산을 위한 하드웨어를 담당
- EBS: Elastic Block Storage의 줄임말로 클라우드에서 사용되는 가상 하드디스크
- AMI: EC2 인스턴스를 실행하기 위한 정보를 담고 있는 이미지
- 보안 그룹: 가상 방화벽
AWS 명명 규칙
- m5.2xlarge
- m: 인스턴스 클래스
- 5 인스턴스의 세대
- 2xlarge: 인스턴스 클래스 내에서의 크기 (small, large, 2xlarge, 4xlarge등), 인스턴스가 클수록 더 많은 메모리와 CPU를 가지게 된다.
EC2 인스턴스 타입 - General Purpose
- 범용 인스턴스는 웹 서버나 코드 저장소와 같은 다양한 작업에 적합하다.
- 컴퓨팅, 메모리, 네트워킹 간의 균형도 잘 맞는다.
EC2 인스턴스 타입 - Compute Optimized
- 컴퓨터 집약적인 작업에 최적화된 인스턴스이다.
- 고성능 프로세스를 사용하는 예:
- 일부 데이터의 일괄 처리 시
- 미디어 트랜스코딩 작업 시
- 고성능 웹 서버가 필요할 시
- 고성능 컴퓨팅이라는 HPC 작업을 할 때
- 머신러닝
- 전용 게임 서버가 있을 때
- 컴퓨터 최적화의 모든 인스턴스는 C로 시작하는 이름을 가진다.
EC2 인스턴스 타입 - Memory Optimized
- 메모리 최적화 유형의 인스턴스는 메모리에서 대규모 데이터셋을 처리하는 유형의 작업에 빠른 성능을 제공한다.
- 메모리는 RAM을 뜻한다.
- 사용 예:
- 대부분 인 메모리 데이터베이스가 되는 고성능의 관계형 또는 비 관계형의 데이터베이스에 사용한다.
- 일래스틱 캐시를 예로 들 수 있는 분산 웹스케일 캐시 저장소에도 사용한다.
- 비즈니스 인텔리전스 즉, BI에 최적화된 인 메모리 데이터베이스와 대규모 비정형 데이터의 실시간 처리를 실행하는 애플리케이션에도 사용한다.
- 메모리 최적화의 모든 인스턴스는 R로 시작하는 이름을 가진다. (X1이나 High Memory, Z1도 있다.)
EC2 인스턴스 타입 - Storage Optimized
- 로컬 스토리지에서 대규모의 데이터셋에 액세스할 때 적합한 인스턴스이다.
- 사용 예:
- 고주파 온라인 트랜잭션 처리인 OLTP 시스템에 사용
- 관계형과 비 관계형인 NoSQL 데이터베이스에 사용
- 레디스(Redis) 같은 메모리 데이터베이스 캐시에 사용
- 데이터 웨어하우징(warehousing) 애플리케이션에 사용
- 분산 파일 시스템에 사용
- AWS의 스토리 최적화 인스턴스는 I,G 또는 H1으로 시작한다.
보안 그룹 및 클래식 포트 개요
- 보안 그룹은 AWS 클라우드에서 네트워크 보안을 실현하는데 기본적인 기능이다.
- 보안 그룹을 이용해 EC2 인스턴스의 인바운드 및 아웃바운드 트래픽을 제어한다.
- 보안 그룹의 규칙은 컴퓨터가 위치한 IP 주소를 참조하거나 다른 보안 그룹을 참조할 수 있다. 즉 보안 그룹이 서로 참조하는 것도 가능하다.
보안 그룹
- 보안 그룹은 EC2 인스턴스에 대한 방화벽 역할을 한다.
- 포트에 대한 액센스를 관리
- 인증된 IP 범위인지 확인 - IPv4, IPv6
- 외부에서 인스턴스로 연결하는 인바운드 네트워크를 제어
- 인스턴스에서 외부로 연결하는 네트워크도 제어
보안 그룹 규칙:
- 보안 그룹은 여러 인스턴스에 연결할 수 있다.
- 보안 그룹은 리전이나 특정 VPC 조합에 고정된다. 따라서 다른 리전으로 옯기면 새 보안 그룹을 만들어야 하고 다른 VPC를 만드는 경우에도 보안 그룹을 다시 만들어야 한다.
- 보안 그룹은 EC2 외부에도 있다. (트래픽이 차단되면 EC2 인스턴스는 이를 확인 할 수 없다.)
- SSH 전용으로 별도의 보안 그룹을 관리하는 것이 좋다.
기본 포트
- 22 = SSH: 리눅스에서 EC2 인스턴스에 로그인할 때 사용
- 21 = FTP: 파일 전송 프로토콜용 이고 파일 공유에 파일을 업로드할 때 사용
- 22 = SFTP: SFTP도 파일을 업로드하며 SSH를 사용하는 보안 파일 전송 프로토콜이다
- 80 = HTTP: 보안이 적용되지 않은 웹사이트에 액세스할 때 사용
- 443 = HTTPS: 보안이 적용된 웹사이트
- 3389 = RDP: 원격 데스크탑 프로토콜용 (윈도우 인스턴스 로그인에 사용)
EC2 인스턴스 가격 정책
- 온디맨드(On-Demand)
- 요청에 따라 가격 책정 가능
- 가격을 예측할 수 있고 초당 비용을 지불
- 리눅스나 윈도우는 첫 1분이 지난 이후부터 초당 비용 청구
- 그외 다른 운영체제에서는 시간당 비용 청구
- 가격은 제일 높지만 선결제가 없고 장기 약정이 필요 없다.
- 온디맨드 옵션에 적합한 예:
- 연속적인 단기 워크로드 (애플리케이션 동작을 예측할 수 없는 워크로드)
- 예약 인스턴스(Reserved Instance-RI)
- 예약 인스턴스는 온디맨드에 비해 비용을 약 72% 절약할 수 있다.
- 특정 인스턴스 속성을 예약한다. (예: 리전, 테넌시 및 OS)
- 예약 기간으로 1년 혹은 3년을 지정할 수 있다. (3년을 선택하면 할인율이 더 크다)
- 전체 선결제나 부분 선결제도 가능하고 선결제 없이도 가능하다. (전체 선결제 할인율 가장 높음)
- 특정 AZ의 용량을 예약하도록 영역을 지정할 수 있다.
- 예약 인스턴스 옵션에 적합한 예:
- 애플리케이션이 안정된 상태로 사용되는 데이터베이스
- 마켓플레이스에서 예약 인스턴스를 구매하거나 판매할 수도 있다.
- 예약 인스턴스에서의 특별한 종류:
- 전환형 예약 인스턴스: 인스턴스 유형을 변경할 수 있고 인스턴스 제품군과 운영체제 및 범위, 테넌시가 변경 가능하다. (유연성이 높기 때문에 할인율이 줄어든다.)
- 절감형 플랜(Savings Plans)
- 예약 인스턴스와 마찬가지로 70% 가까지 할인 받을 수 있다.
- 대신 시간당 10달러의 비용을 1년에서 3년 동안 약정해야 한다.
- 초과하는 사용량은 온디맨드 가격으로 청구 된다.
- Savings Plans는 특정 인스턴스 제품군과 리전에 한해 사용할 수 있다. (예: us-east-1 M5 유형 인스턴스 제품군)
- 인스턴스 크기에 구애받지 않으므로 m5.xlarge, m5.2xlarge 등 모두 사용 가능하다. OS의 경우 Linux와 Window간 전환이 가능하고 테넌시의 경우 호스트, 전용 및 기본값을 전환할 수 있다.
- 스팟 인스턴스(Spot Instances)
- 스팟 인스턴스는 가장 파격적인 할인을 제공한다. (온디맨드와 비교하여 최대 90% 까지 할인된다.)
- 그러나 인스턴스가 언제든 중단될 수 있다. (스팟 인스턴스에 지불한 가격 보다 스팟 가격이 더 높아지면 인스턴스가 중단된다.)
- AWS에서 가장 비용 효율적인 인스턴스이고 서비스가 중단되어도 복구하기 쉬운 워크로드에 매우 효율적이다.
- 스팟 인스턴스 옵션에 적합한 예:
- 배치 작업
- 데이터 분석
- 이미지 처리
- 분산된 워크로드 또는 시작 및 종료 시점이 유동적인 워크로드
- 그러나 중요한 작업이나 데이터베이스에는 적합하지 않다.
- 전용 호스트(Dedicated Hosts)
- 실제 물리적 서버를 임대하는 방식
- 전용 호스트 옵션에 적합한 예:
- 규정 준수 요구 사항이 있거나 기존의 서버 결합 소프트웨어 라이선스를 사용해야 할 경우
- 이때의 비용은 소켓, 코어, VM 소프트웨어 라이선스로 청구
- 전용 호스트 구매 옵션은 온디맨드로 초당 청구되거나 1년 또는 3년 기간을 예약할 수 있다.
- AWS에서 가장 비싼 옵션 (실제로 물리적인 서버를 예약하기 때문)
- 전용 인스턴스(Dedicated Instance)
- 실행되는 인스턴스이며 물리적 서버와는 다르다.
- 같은 계정의 다른 인스턴스와 하드웨어를 공유하긴 하지만 인스턴스 배치는 제어할 수 없다.
전용 호스트와 전용 인스턴스의 차이점
전용 인스턴스는 사용자 하드웨어에 고유한 인스턴스를 갖는 것이고 전용 호스트는 물리적 서버 자체에 액세스 하여 저수준(low level) 하드웨어에 대한 가시성을 제공한다.
EC2의 용량 예약
- 원하는 기간 동안 특정한 AZ에 온디맨드 인스턴스를 예약할 수 있고 이후 필요할 때마다 그 용량에 액세스 할 수 있다.
- 시간 약정이 없기 때문에 언제든지 용량을 예약하거나 취소할 수 있다. (요금 할인 X)
- 요금을 할인 받기 위해서는 리전 예약 인스턴스 혹은 절감형 플랜과 결합해야 한다.
- 인스턴스 실행 여부와 관계없이 온디맨드 요금이 청구된다.
- 특정한 AZ에 위치하는 단기의 연속적인 워크로드에 잘 맞는다.