EC2
- 아마존에서 가장 인기있는 서비스로 어디에나 사용되고 있다
- AWS에서 제공하는 IaaS이다
- EC2는 하나의 서비스라고 볼 수 없고 여러가지를 포함하고 있다
- AWS에서 가상머신을 빌리는 것을 EC2 인스턴스라고 한다
- 데이터를 가상 드라이브 또는 EBS 볼륨에 저장할수 있다
- 로드 밸런서로 분산시킬 수 있다 (ELB)
- 오토 스케일링 그룹으로 통해 서비스를 확장시킬 수 있다 (ASG)
EC2 size & 설정 옵션
- OS: Linux, Windows, Mac OS
- 컴퓨터 성능과 코어의 양도 선택할 수 있다 (CPU)
- 메모리 양도 선택할 수 있다 (RAM)
- 용량도 선택할 수 있다 (EBS & EFS)
- 하드웨어에 연결할 수도 있다 (EC2 Instance Store)
- 연결할 네트워크도 선택할 수 있다 (어떤 종류의 공용 IP)
- 방화벽 규칙, 보안그룹도 선택할 수 있다
- 인스턴스를 구성하기 위한 부트스트랩 스크립트가 있다
- 인스턴스를 실행할 때 자동으로 실행하는 명령어를 의미한다
- 업데이트, 소프트웨어 설치, 파일 다운 등 뭐든지 할 수 있다
1. 생성
- 운영체제 선택하고 보안그룹, 키페어 등을 설정하면 된다

2. 타입
- EC2 Instance에는 여러가지 타입이 있다
- 범용, 컴퓨터 최적화, 메모리 최적화, 가속화된 컴퓨팅 등이 있다
- m5.2xlarge를 예로 들어보자
- m: 인스턴스 클래스로 General Purpose이다
- 5: 인스턴스 세대로 AWS에서 계속 개선해서 만들어 출시한다
- 2xlarge: 인스턴스 클래스에서 사이즈를 말한다. small, large등 커질수록 더 많은 메모리와 CPU를 가지게 된다
3. 보안그룹
- 방화벽으로 네트워크 보안을 수행하는데 기본이 된다
- EC2 인스턴스 안팎으로 트래픽이 허용되는 방식을 제어한다
- 허용규칙만 있어서 무엇이 들어가고 나갈 수 있는지만 제어한다
- 보안그룹은 서로 참조할 수 있다
- 보안그룹은 특정 지역과 VPC 조합에만 제한된다
- 따라서 다른 지역 전환또는 VPC를 변경하는 경우 새 보안 그룹을 생성해야 한다

4. 구매옵션
- On-Demand Instance
- 필요한 대로 인스턴스를 실행할 수 있어서 단기적인 작업에 좋다
- 비용을 예측할 수 있고 초 단위로 요금을 지불하면 된다
- Reserved: 1년 또는 3년
- 장기간 작업을하는데 유용하다
- 전환형 예약 틴스턴스: 시간이 지나면 인스턴스 타입을 변경하는 등 유연하게 사용할 수 있다
- Saving Plans(절약 계획): 1년과 3년
- 특정한 인스턴스 유형을 약정하는 게 아닌 달러 단위로 특정한 사용량을 약정한다
- Spot Intances: 매우 짧게 사용을 위한 것이다
- Dedicated Hosts: 전용 호스트
- 물리적 서버 전체를 예약해서 인스턴스 배치를 제어할수 있다
- Dedicated Instances: 전용 인스턴스
- 다른 고객이 나의 하드웨어를 사용하지 않는 것이다
- Capacity Reservations: 용량 예약
- 원하는 기간동안 특정한 AZ에 용량을 예약할 수 있다
1). EC2 On Demand
- Linux 또는 Windows의 경우 1년후에 비용이 청구되고 다른 OS는 1시간 단위로 청구가 이뤄진다
- 비용이 가장 많이 들지만 장기적인 약정도 필요없다
- 단기적이고 중단 없는 워크로드가 필요할 때 또는 애플리케이션 가동을 예측할 수 없을 때 유용하다
2). EC2 Reserved Instances
- 예약 인스턴스는 On Demand에 비해 72% 할인을 제공한다
- 인스턴스 타입, Region, Tenancy, OS등을 예약한다
- 예약 기간을 1년이나 3년으로 지정해서 할인을 더 받을 수 있고 선결제, 부분 선결제, 후결제 중에 선택할 수 있다
- 범위를 특별한 리전이나 존으로 예약할 수 있고 사용량이 일정한 애플리케이션(DB)에 사용하는 것이 좋다
- 예약 인스턴스를 마켓플레이스에서 사거나 팔 수 있다
전환형 예약 인스턴스
- 인스턴스 타입, Region, Tenancy, OS, 범위등을 변경할 수 있다
- 유연성이 더 크기 때문에 할인율이 떨어져 66% 정도이다
3). EC2 Saving Plans
- 장기간 사용하면 할인을 받을 수 있다
- 예약 인스턴스와 마찬가지로 70%할인을 받을 수 있는데, 1년 또는 3년 동안 시간당 10달러로 약정을 하게 된다
- 사용량이 한도를 넘어서면 절약 플랜은 On Demand 가격으로 받는다
- 특정한 인스턴스와 패밀리, Region으로 고정된다
- 예를들어 M5와 Region은 고정이고, OS, Instance Size, Tenancy는 변경가능하다
4). EC2 Spot Instances
- 할인폭이 제일 커서 온디맨드에 비해 최대 90%까지 할인이 된다
- Spot Instace에 대해 지불하려는 최대 가격을 정의하고 Spot가격이 이를 뛰어넘으면 인스턴스가 손실된다
- Batch Jobs, Data analysis, Image Processing등에 사용하면 좋다
- 중요한 작업이나 데이터베이스에는 적절하지 않다
5). EC2 Dedicated Hosts
- 전용으로 사용되는 EC2 인스턴스 용량이 있는 실제 물리적 서버를 받게 된다
- 온디맨드로 초당 비용을 지불하거나 1년 또는 3년동안 예약할 수 있다
- 실제 물리적 서버를 예약하기 때문에 AWS에서 가장 비싼 옵션이다
6). EC2 Dedicated Instances
- 전용 하드웨어에서 실행되는 인스턴스이다
- 같은 계정에서 다른 인스턴스와 함께 하드웨어를 공유할 수 있고, 인스턴스 배치에 대한 통제권은 없다
7). EC2 Capacity Reservations
- 원하는 기간동안 특정한 AZ에서 온디맨드 인스턴스를 예약할 수 있다
- 기간 약정은 없고 언제라도 용량을 예약하고 취소할 수 있다
5. 배치그룹
- EC2 인스턴스가 AWS 인프라에 배치되는 방식을 제어할 때 사용한다
- AWS의 하드웨어와 직접적인 상호작용을 하지는 않지만 각각 어떻게 배치되기를 원하는지 AWS에게 알려준다
- 3가지 전략이 있다
- Cluster: 인스턴스 그룹화하여 단일 가용 영역내에서 지연 시간이 짧은 하드웨어 설정한다
- Spread: 분산 배치그룹으로 다른 하드웨어에 분산되지만 가용영역별로 7개 인스턴스만 가질 수 있다
- Partition: 분산 배치그룹과 비슷하게 인스턴스를 분산하지만 여러 파티션에 인스턴스가 분할되어 있고 이 파티션은 가용 영역내의 다양한 하드웨어 랙 세트에 의존한다
1). Placement Groups Cluster
- 모든 인스턴스간에 초당 약 10기가의 대역폭을 확보하여 향상된 네트워크를 활성화할 수 있다
- 지연시간이 짧고 처리량이 많은 네트워크를 확보할 수 있다
- 단점으로는 가용영역에 장애가 발생하면 모든 인스턴스가 장애가 난다
2). Placement Groups Spread
- 분산배치그룹은 실패 위험을 최소화하려고 한다
- 모든 EC2 인스턴스가 다른 하드웨어에 있어, 고가용성을 유지한다
- 단점의 그룹에 제한이 있어 가용영역당 7개의 인스턴스밖에 사용할 수 없다

6. 절전모드
- EC2는 삭제하면 EBS도 삭제된다 (같이 삭제 체크했다면)
- 시작하게되면 OS가 부팅되고 User Data Script도 실행된다
- 애플리케이션, 캐시도 실행되야 하니 시간이 다소 걸리게 된다
- 절전모드에서는 RAM에 있는 메모리는 보존되서 부팅이 빠르게 진행된다
- RAM은 EBS볼륨에 기록되기 때문에 루트 EBS 볼륨을 암호화해야 하고 볼륨 용량도 RAM에 저장하기에 충분해야 한다
- EBS에만 저장이 되고 암호화된 EBS가 필수이다. 최대 60일
실행방식
- Instance가 실행될 때는 RAM에 Data가 들어있다
- 절전모드를 하면 Ram에 있는 데이터를 EBS에 적재한다
- Instance가 Stop이 되고 기존 Ram은 지워진다
- 다시 실행하면면 EBS에 있는걸 Ram에 적재시키고 EBS에 있던 데이터는 삭제시킨다

3). Placemnet groups Partition
- 파티션은 AWS의 랙을 나타낸다
- 파티션이 많을수록 인스턴스가 여러 하드웨어 랙에 분산되어 랙 실패로부터 안전하다
- 파티션은 동일한 리전의 여러 가용 영역에 걸쳐있을 수 있다
- 분산배치와 다른점은 최대 수백개의 EC2 인스턴스를 얻을 수 있다
- 파티션별로 하드웨어가 분리되어 있기 때문에 파티션1이 고장나도 파티션2는 정상작동한다

SSH
- 클라우드에서 실행 시 까다로운 부분 중 하나는 유지 보수나 조치를 위해서 서버 내부와 연결하는 것이다
- Linux에서는 SSH를 통해 컴퓨터에 접속할 수 있다
- AWS에서는 EC2 Instance Connect를 통해 연결할 수 있다
// 파일 이름에 공백이 있는 경우 큰따옴표로 감싸기
ssh -i ".\EC2 Tutorial2.pem" ec2-user@3.38.103.155
1). EC2 Instance Connect
- Amazon EC2 대시보드에서 간단하게 접속할 수 있다
- EC2 Connect로 접속한다음
aws-cli 명령을 하기 위해 configure로 설정하게 되면 누구라도 EC2에 접속해 정보들을 빼갈 수 있다
- 이때 IAM의 Role을 이용하면 된다

ENI
- 탄력적 네트워크 인터페이스 (Elastic Network Interface)
- VPC의 논리적 구성요소이며 가상 네트워크 카드를 나타낸다
- EC2 인스턴스가 네트워크에 액세스할 수 있게 도와준다
- 여러가지 속성을 가진다
- 주요 사설 IPv4와 하나 이상의 보조 IPv4를 가질 수 있다
- 각 ENI는 사설 IPv4당 탄력적 IPv4를 갖거나 혹은 하나의 공용 IPv4를 가질 수 있다
- ENI에 하나 이상의 보안그룹을 연결할 수 있다
- MAC address도 연결할 수 있다
- ENI는 특정 가용영역(AZ)에 종속된다
