EC2(Elastic Compute Cloud)
EC2란?
: AWS에서 제공하는 클라우드 기반 가상 서버 서비스
이를 통해 AWS 데이터 센터에서 여러 가상 서버(EC2 인스턴스)를 실행할 수 있다.
EC2는 Infrastructure as a Service (IaaS) 서비스로, 우리가 직접 하드웨어를 관리하지 않고도 서버를 쉽게 설정하고 사용할 수 있도록 도와준다.
가상화와 하이퍼바이저
AWS는 데이터 센터의 물리적인 호스트 서버에서 가상화 기술을 통해 수많은 EC2 인스턴스를 운영한다.
가상화를 위해 AWS는 Xen과 Nitro라는 하이퍼바이저를 사용하며, 이 하이퍼바이저가 여러 인스턴스를 관리하는 가상화 계층 역할을 하여 가상 서버를 실제 물리 서버처럼 사용할 수 있게 해준다.

인스턴스 유형과 인스턴스 패밀리
EC2는 작업의 성격에 따라 다양한 인스턴스 유형을 제공한다.
예를 들어,
- CPU 중심 작업: 고성능 계산이 필요한 경우 CPU 중심의 인스턴스 선택
- 메모리 중심 작업: 데이터 처리가 많은 경우 메모리 중심의 인스턴스 선택
인스턴스 유형은 CPU, 메모리, 디스크 크기 등 하드웨어 리소스를 결정한다.
운영 체제 선택
EC2 인스턴스는 Linux, Windows 등 다양한 운영 체제를 선택해 실행할 수 있다.
최근에는 Mac OS도 EC2로 실행할 수 있지만, 전용 하드웨어에서 실행되어 다른 운영 체제보다 비용이 많이 든다.
네트워킹과 IP 주소
EC2 인스턴스는 인터넷과 통신하기 위해 여러 IP 주소를 사용할 수 있다.
- 공용 IP 주소: 인스턴스를 인터넷에 연결할 때 사용하는 주소
- 인스턴스를 공용 서브넷에 배치하면 자동으로 공용 IP가 할당된다.
- 다만, 인스턴스를 중지하고 다시 시작하면 새로운 공용 IP가 할당된다.
- 개인 IP 주소: 인스턴스 내부 네트워크에서만 사용하는 IP 주소
- 인스턴스가 중지되고 다시 시작되어도 변경되지 않는다.
- 탄력적 IP 주소: 고정된 공용 IP 주소
- 인스턴스를 중지해도 변경되지 않으며, 고정 IP 주소가 필요한 경우 유용하다.
- 탄력적 IP는 사용 중이지 않을 때도 요금이 부과되므로 주의해야 한다.
네트워크 구성: VPC, 서브넷, 게이트웨이
- VPC (Virtual Private Cloud): AWS가 제공하는 가상 네트워크. VPC를 사용해 여러 인스턴스를 네트워크로 묶을 수 있다.
- 서브넷
- 공용 서브넷 : VPC 내에서 인터넷과 연결되는 인스턴스는 공용 서브넷에 배치한다.
- 사설 서브넷 : VPC 내부에서만 통신할 인스턴스는 사설 서브넷에 배치한다.
- 인터넷 게이트웨이: VPC를 인터넷과 연결하는 장치. 공용 서브넷에 있는 인스턴스는 인터넷 게이트웨이를 통해 인터넷에 연결된다.
- NAT 게이트웨이: 사설 서브넷의 인스턴스가 인터넷으로 아웃바운드 트래픽을 보낼 때 사용하는 장치. NAT 게이트웨이는 인바운드 트래픽을 차단하여 보안을 강화하는 데 사용된다.

인스턴스 시작 절차
- AMI 선택: 운영 체제와 소프트웨어 구성이 포함된 이미지를 선택한다.
- AMI(Amazon Machine Image): 인스턴스에 사용할 운영 체제와 미리 설치된 소프트웨어 구성을 정의하는 이미지 (Amazon Linux, Windows Server 등)
- 스냅샷: 인스턴스 상태를 백업하는 기능으로, 이를 통해 새로운 AMI를 만들 수 있다.
- 인스턴스 유형 선택: CPU, 메모리, 디스크 크기 등을 기준으로 선택한다.
- 예) T2.micro: 무료 계층에서 사용할 수 있는 일반 용도 인스턴스 유형
- 키 페어 생성: SSH를 통해 인스턴스에 연결할 때 사용되는 보안 키. 개인 키는 로컬에 안전하게 보관해야 한다.
- 보안 그룹 설정:
- 보안 그룹은 인스턴스에 접근할 수 있는 네트워크 트래픽을 제어하는 방화벽 역할을 한다.
- SSH(포트
22)나 RDP(포트3389)와 같은 특정 프로토콜 및 포트를 허용할 수 있다. - 보안을 강화하기 위해 특정 IP 주소에서만 접근 가능하도록 설정할 수 있다.
AMI 공유
AMI는 미리 생성된 이미지를 사용하거나 새로 생성해서 사용할 수 있으며, 이를 특정 AWS 계정이나 모든 AWS 계정과 공유할 수 있다.
특정 계정에만 AMI를 공유하고 싶다면 AMI의 launchPermission 속성을 수정하면 된다.
- AMI 공유의 원칙:
- AMI를 공유하려면 AMI와 연관된 EBS 볼륨 스냅샷도 함께 공유되어야 한다.
- 암호화된 스냅샷을 공유하려면 KMS 키 권한도 해당 계정에 부여해야 사용 가능하다.
- 활용 사례: MSP 파트너나 특정 AWS 계정만 AMI를 사용하도록 설정할 때, launchPermission 속성을 설정해 보안을 강화할 수 있다.
*MSP: Managed Service Provider의 약자로, 클라우드 서비스와 인프라 운영을 전문적으로 관리해주는 제3자 서비스 제공업체
보안 그룹 설정 예시
프라이빗 서브넷에서 실행되는 EC2 인스턴스만 RDS 데이터베이스에 접근하도록 설정하려면 아래와 같이 보안그룹을 구성할 수 있다.
- 보안 그룹 생성
- EC2 인스턴스용 보안 그룹:
SG-PrivateEC2 - RDS 데이터베이스용 보안 그룹:
SG-RDS
- EC2 인스턴스용 보안 그룹:
- 인바운드 규칙 추가
- SG-RDS 보안그룹에 다음과 같은 인바운드 규칙을 추가한다.
이 설정은 SG-PrivateEC2에 속한 리소스에서만 RDS에 접근하도록 허용한다.- 프로토콜:
TCP - 포트:
3306(MySQL의 경우) - 소스:
SG-PrivateEC2
- 프로토콜:
- SG-RDS 보안그룹에 다음과 같은 인바운드 규칙을 추가한다.
- 트래픽 흐름 제어
- 프라이빗 서브넷의 EC2 인스턴스만
SG-RDS를 통해 RDS에 액세스할 수 있다. - 퍼블릭 서브넷이나 다른 리소스는
SG-RDS의 인바인드 규칙에 의해 차단된다.
- 프라이빗 서브넷의 EC2 인스턴스만
EC2 사용자 데이터와 메타데이터
인스턴스 메타데이터
- 메타데이터
- EC2 인스턴스에 대한 다양한 정보를 제공하는 데이터
- 예) AMI ID, 호스트 이름, 인스턴스 ID, IPv4 주소 등
- 메타데이터 접근 경로
- HTTP URL
http://169.254.169.254/latest/meta-data/을 통해 접근할 수 있으며, - curl 명령어로 메타데이터를 요청할 수 있다.
- HTTP URL
- 메타데이터 서비스 버전
- V1: 오래된 버전으로 인증 없이 정보에 접근할 수 있지만, 보안이 취약하다.
- V2: 최신 버전으로 더 안전하며, 인증을 위해 세션 토큰이 필요하다.
- 기본값은 V2이며, V1은 보안 강화를 위해 비활성화할 수 있다.
IMDSv1 (Instance Metadata Service version 1)
- 설명: 기본적인 메타데이터 접근 방식으로, EC2 인스턴스에서 메타데이터에 직접 접근할 수 있다.
- 보안 특징: 인증 절차 없이 HTTP 요청만으로 메타데이터 정보에 접근할 수 있어, 잠재적인 보안 위험이 존재한다.
- 주요 사용 방법: 단순히 curl 명령어를 사용해 접근 가능.
IMDSv1 사용 예시 명령어
# 인스턴스 ID
curl <http://169.254.169.254/latest/meta-data/instance-id>
# AMI ID
curl <http://169.254.169.254/latest/meta-data/ami-id>
# 인스턴스 가용 지역
curl <http://169.254.169.254/latest/meta-data/placement/availability-zone/>
IMDSv2 (Instance Metadata Service version 2)
- 설명: 보안을 강화한 버전으로, 메타데이터에 접근하려면 임시 보안 토큰을 요청하고 이를 통해 메타데이터에 접근해야 한다.
- 보안 특징: 토큰 기반 인증을 요구하여 무단 접근 위험을 줄일 수 있다. 주로 SSRF 공격 방지를 위해 도입되었다.
- 주요 사용 방법: 먼저 PUT 요청으로 토큰을 요청하고, 이후 이 토큰을 포함한 HTTP 요청으로 메타데이터에 접근한다.
IMDSv2 보안 토큰 요청 명령어
TOKEN=$(curl -X PUT "<http://169.254.169.254/latest/api/token>" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
- 명령어 설명:
- PUT 요청: curl -X PUT으로 메타데이터 서비스에 토큰 요청.
- 메타데이터 엔드포인트:
http://169.254.169.254/latest/api/token에서 토큰을 받아옴. - TTL 설정:
X-aws-ec2-metadata-token-ttl-seconds: 21600헤더를 통해 토큰 유효 기간을 21,600초(6시간)로 지정. - TOKEN 변수 저장: 응답으로 받은 토큰을
$TOKEN변수에 저장.
IMDSv2 사용 예시 명령어
# 요청된 토큰으로 메타데이터에 접근 (인스턴스 ID)
curl -H "X-aws-ec2-metadata-token: $TOKEN" <http://169.254.169.254/latest/meta-data/instance-id>
사용자 데이터
- 사용자 데이터: 인스턴스가 처음 시작될 때 실행할 스크립트를 포함할 수 있다. 이를 통해 초기 설정, 업데이트, 소프트웨어 설치 등을 자동으로 수행할 수 있다.
- 제한 사항:
- 사용자 데이터는 최초 인스턴스 시작 시에만 실행된다. 인스턴스를 재시작하거나 중지 후 다시 시작해도 실행되지 않는다.
- 사용자 데이터는 16KB로 제한되며, 기본적으로 인코딩되어야 한다.
사용자 데이터 설정 방법
- 콘솔: 인스턴스 생성 시 사용자 데이터 필드에 스크립트를 입력하여 설정할 수 있다.
- CLI: 스크립트를 파일로 작성한 후,
-user-data옵션을 통해 파일을 지정해 인스턴스 시작 시 실행되도록 설정할 수 있다.
실제 활용 예시
- 웹 서버 인스턴스: 사용자 데이터에 웹 서버 설치 및 시작 스크립트를 포함하여 인스턴스를 처음 시작할 때 자동으로 웹 서버가 실행되도록 설정할 수 있다..
- 메타데이터와 사용자 데이터 결합: 메타데이터를 사용하여 인스턴스 정보를 얻고, 사용자 데이터 스크립트를 통해 초기 설정을 자동화할 수 있다.
사용자 데이터 및 메타데이터를 활용한 스크립트 예제 - script.sh 파일
#!/bin/bash
# 시스템 업데이트 및 Apache 웹 서버 설치
yum update -y
yum install -y httpd
# Apache 웹 서버 시작 및 부팅 시 자동 시작 설정
systemctl start httpd
systemctl enable httpd
# IMDSv2를 통해 메타데이터 가져오기
TOKEN=$(curl -X PUT "<http://169.254.169.254/latest/api/token>" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
INSTANCE_ID=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" <http://169.254.169.254/latest/meta-data/instance-id>)
AMI_ID=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" <http://169.254.169.254/latest/meta-data/ami-id>)
INSTANCE_TYPE=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" <http://169.254.169.254/latest/meta-data/instance-type>)
# 메타데이터를 HTML 페이지로 표시
cat <<EOF > /var/www/html/index.html
<html>
<head>
<title>EC2 Instance Metadata</title>
</head>
<body>
<h1>EC2 Instance Metadata</h1>
<p>Instance ID: $INSTANCE_ID</p>
<p>AMI ID: $AMI_ID</p>
<p>Instance Type: $INSTANCE_TYPE</p>
</body>
</html>
EOF
- 명령어 설명:
- 사용자 데이터 스크립트 실행: 위 스크립트는 EC2 인스턴스가 시작될 때 사용자 데이터로 실행되며, 시스템을 업데이트하고 Apache 웹 서버를 설치한 후 시작한다.
- IMDSv2를 사용한 메타데이터 접근: IMDSv2 방식으로 보안 토큰을 요청하고, 이를 사용해 인스턴스 ID, AMI ID, 인스턴스 유형 등의 메타데이터를 가져온다.
- 웹 페이지 생성: 가져온 메타데이터 정보를 HTML 파일로 만들어
/var/www/html/index.html에 저장하고, 이를 통해 웹 서버에서 인스턴스 정보를 확인할 수 있다.
- 메타데이터는 인스턴스의 기본 정보를 제공하며, V2 버전을 사용하는 것이 안전하다.
- 사용자 데이터는 인스턴스 시작 시 설정 스크립트를 자동으로 실행하여 초기 환경을 구축하는 데 유용하다.
- 사용자 데이터는 인스턴스 최초 시작 시에만 실행되므로, 이 점을 고려하여 초기 설정을 계획하는 것이 중요하다.
액세스 키와 IAM 역할
액세스 키 (Access Keys)
: AWS CLI와 같은 도구에서 AWS 리소스에 접근할 수 있는 장기 자격 증명
- 사용 방식:
- CLI에서 S3 버킷 같은 AWS 서비스와 작업할 때 사용된다.
- 액세스 키는 AWS 계정에 할당된 권한을 상속받아 EC2 인스턴스에서 사용된다.
- 보안 문제:
- 액세스 키는 장기 자격 증명이므로, 만약 노출된다면 계정에 대한 무단 접근 위험이 크다.
- 일반 텍스트로 저장될 가능성이 있어 보안상 취약할 수 있다.
- 권장 사항: 가능한 한 액세스 키 사용을 최소화하는 것이 좋다.
IAM 역할 (IAM Roles)
: EC2 인스턴스와 같은 AWS 서비스가 특정 권한을 갖도록 부여하는 임시 자격 증명
- 사용 방식:
- EC2 인스턴스에 IAM 역할을 할당하여, EC2 인스턴스가 특정 AWS 리소스에 접근할 수 있도록 설정한다.
- AWS STS(Security Token Service)를 통해 임시 자격 증명을 얻어, EC2 인스턴스가 역할을 사용해 필요한 권한을 획득할 수 있다.
- 보안 장점:
- IAM 역할은 EC2 인스턴스에 액세스 키를 저장하지 않아도 자동으로 권한이 부여된다.
- 단기 자격 증명을 통해 권한을 얻기 때문에, 장기적으로 노출 위험이 적고, 만료되면 자동으로 갱신된다.
- AWS STS를 통해 자격 증명이 주기적으로 갱신되므로, 만료된 자격 증명을 자동으로 새로 획득한다.
- 권장 사항: 액세스 키보다 IAM 역할 사용을 권장한다. 특히, 보안을 강화하고 무단 접근 위험을 줄이기 위해 가능한 한 IAM 역할을 사용하는 것이 좋다.
| 액세스 키 (Access Keys) | IAM 역할 (IAM Roles) | |
|---|---|---|
| 유형 | 장기 자격 증명 | 단기 자격 증명 |
| 보안 | 일반 텍스트 저장 가능, 손상 시 계정 전체에 위험 | 인스턴스에 자격 증명 저장 필요 없음, STS로 주기적 갱신 |
| 사용 방식 | CLI 구성 및 S3 버킷 등 AWS 서비스 접근 | EC2 인스턴스에 직접 권한 부여, 임시 자격 증명 사용 |
| 권장 사항 | 최소한으로 사용 | 가능할 때마다 사용 |
IAM 역할은 액세스 키보다 보안상 유리하며, EC2 인스턴스에 필요한 권한만 부여하고, 임시 자격 증명을 자동으로 관리할 수 있어 AWS 리소스 접근의 최선의 방법이다.
EC2 배치 그룹 (Placement Groups)
EC2 배치 그룹은 AWS가 EC2 인스턴스를 특정 방식으로 배포하여 성능과 가용성을 조절할 수 있는 기능이다.
인스턴스를 어떻게 배치하느냐에 따라 네트워크 성능과 안정성을 최적화할 수 있으며, 워크로드에 맞는 3가지 배치 그룹 옵션이 있다.
1. 클러스터 배치 그룹 (Cluster Placement Group)
- 특징: 인스턴스들이 동일한 가용 영역(Availability Zone) 내에서 물리적으로 가깝게 배치된다.
- 장점: 대기 시간이 매우 낮고, 높은 네트워크 처리량을 제공한다.
- 사용 사례: 노드 간 통신이 빈번하고 대기 시간이 중요한 고성능 컴퓨팅(HPC) 애플리케이션에 적합하다.
- 예시) 과학 계산, 실시간 금융 시뮬레이션 등 대규모 데이터를 빠르게 처리해야 하는 작업
2. 분할 배치 그룹 (Partition Placement Group)
- 특징: 인스턴스를 논리 파티션으로 나누어 배치하여, 하나의 파티션의 하드웨어 실패가 다른 파티션에 영향을 주지 않도록 한다.
- 장점: 파티션 간 물리적 격리로 인해 가용성이 높아진다.
- 사용 사례: 분산 및 복제 작업이 필요한 NoSQL 데이터베이스(예: Hadoop, Cassandra, Kafka)에 적합하다.
- 예시) 분산된 데이터베이스 시스템에서 각 노드가 데이터를 복제하여, 특정 파티션의 장애 시에도 다른 파티션이 정상 작동함
3. 스프레드 배치 그룹 (Spread Placement Group)
- 특징: 각 인스턴스가 서로 다른 물리적 랙(rack)에 배치된다. 하나의 랙이 실패해도 다른 인스턴스는 영향을 받지 않는다.
- 장점: 인스턴스 간 물리적 격리로 인해 장애 발생 시 특정 랙에 영향을 받지 않도록 보장한다.
- 사용 사례: 인스턴스가 물리적 고립을 필요로 하는 중요한 워크로드에서 사용한다. 장애 복원력이 높은 구성이 필요한 경우에 적합하다.
- 예시) 고가용성이 요구되는 개별 인스턴스나 각 인스턴스가 중요한 역할을 하는 애플리케이션.
실제 비즈니스 시나리오
요구사항:
- 지연에 민감한 애플리케이션에 대한 인메모리 데이터베이스를 실행하는 Amazon EC2 인스턴스를 실행하려고 함.
- 이 EC2 인스턴스는 100,000개 이상의 분당 트랜잭션을 처리하며 높은 네트워크 처리량이 필요.
- 데이터 전송 비용을 최소화해야 함.
솔루션:
- 클러스터 배치 그룹을 사용하여 모든 EC2 인스턴스를 동일한 AWS 지역 내 가용 영역(AZ)에 배치:
- 인스턴스 간 최소 네트워크 지연 시간과 최대 처리량 제공.
- 높은 성능과 데이터 전송 효율성을 위해 적합.
EC2 Network Interfaces (ENI, ENA, EFA)
*EC2 네트워크 인터페이스
*AWS의 EC2 인스턴스는 네트워크를 통해 다른 리소스와 통신한다.
이를 가능하게 하는 것이 네트워크 인터페이스이며, 아래 세 가지 주요 유형이 있다.
- Elastic Network Interface(ENI)
- Elastic Network Adapter(ENA)
- Elastic Fabric Adapter(EFA)
Elastic Network Interface (ENI)
- 설명: 기본적인 네트워크 어댑터로, 모든 EC2 인스턴스에서 사용할 수 있는 표준 네트워크 인터페이스
- 기능:
- 개인 IP 주소와 공용 IP 주소를 제공한다.
- 보안 그룹과 네트워크 ACL을 통해 네트워크 트래픽을 제어할 수 있다.
- 기본적인 네트워크 성능을 제공하며, 고성능 요구사항이 없는 애플리케이션에 적합하다.
- 사용 사례:
- 일반 웹 서버나 데이터베이스 서버와 같은 애플리케이션
- 고성능 네트워킹이 필요하지 않은 인스턴스
Elastic Network Adapter (ENA)
- 설명: 고성능 네트워킹 기능을 제공하는 어댑터로, 대역폭이 높고 인스턴스 간 대기 시간이 낮은 네트워크 성능을 지원한다.
- 기능:
- ENA를 통해 네트워크 성능이 높은 EC2 인스턴스에 높은 대역폭과 짧은 지연 시간을 제공한다.
- ENA는 일부 고성능 인스턴스에서만 사용 가능하며, 네트워크 집약적인 작업에 적합하다.
- 사용 사례: 데이터 전송이 많거나 빠른 응답 속도가 필요한 인스턴스
- 빅데이터 처리
- 분산 데이터베이스 클러스터
- 데이터 전송이 많은 작업(예: 대규모 파일 업로드 및 처리)
Elastic Fabric Adapter (EFA)
- 설명: 고성능 컴퓨팅(HPC), 머신 러닝(ML), 딥러닝과 같은 대규모 작업에 특화된 어댑터. MPI(Message Passing Interface)를 지원하여 인스턴스 간의 지연 시간을 크게 줄인다.
- 기능:
- ENA보다 더욱 짧은 지연 시간과 높은 네트워크 성능을 제공한다.
- EFA 전용으로 설계된 애플리케이션과 연동되어 성능을 극대화한다.
- 사용 사례:
- 고성능 컴퓨팅(HPC)
- 머신 러닝/딥러닝 모델 훈련
- 노드 간 통신이 빈번하고, 빠른 응답이 필요한 작업
네트워크 인터페이스 사용 시 유의 사항
- 가용성 영역 제한: 네트워크 인터페이스는 동일한 가용성 영역(AZ) 내에서만 연결할 수 있다.
- 다중 서브넷 연결 가능: 인스턴스는 여러 네트워크 인터페이스를 연결할 수 있으며, 각 인터페이스는 같은 가용성 영역 내의 서로 다른 서브넷에 연결할 수 있다.
AWS Nitro System: Nitro Instances와 Nitro Enclaves
AWS Nitro System
- AWS Nitro System은 차세대 EC2 인스턴스를 위한 하드웨어 및 소프트웨어 플랫폼으로, EC2 인스턴스 성능과 보안을 극대화하기 위해 설계되었다.
- Nitro 시스템은 가상화된 인스턴스와 베어 메탈 인스턴스를 모두 지원하며, 여러 하드웨어 모듈을 통해 기능을 분리하여 성능과 보안을 최적화한다.
Nitro System의 주요 구성 요소
- Nitro Card (니트로 카드):
- VPC용 Nitro 카드: VPC 네트워크 성능을 처리하여 네트워크 연결을 효율화.
- EBS용 Nitro 카드: EBS 스토리지 접근을 처리하며, 빠른 스토리지 연결을 제공.
- 인스턴스 스토리지용 Nitro 카드: 인스턴스 스토리지 성능을 강화하여 밀집된 스토리지 인스턴스를 지원.
- 제어 Nitro 카드: 인스턴스 제어를 위한 작업을 관리.
- 이러한 기능을 분리하여 성능을 최적화하고, 인스턴스 자체에서 네트워크, 스토리지 작업을 오프로드하여 가상화 성능을 향상한다.
- Nitro Security Chip (니트로 보안 칩):
- 하드웨어 수준에서 보안을 강화하는 칩으로, EC2 인스턴스의 데이터 보호를 담당한다.
- EC2 하드웨어 및 하이퍼바이저를 보호하여 신뢰할 수 있는 컴퓨팅 환경을 제공한다.
- Nitro Hypervisor (니트로 하이퍼바이저):
- 전통적인 하이퍼바이저의 역할을 줄이고, 리소스 오버헤드를 최소화하여 베어 메탈과 유사한 성능을 제공한다.
- Nitro Hypervisor는 CPU와 메모리 리소스를 인스턴스에 최대한 할당해 가상화의 성능 저하를 줄인다.
- Nitro Enclaves:
- 격리된 컴퓨팅 환경을 제공하여 민감한 데이터를 안전하게 처리할 수 있다.
- 보안 강화: 외부 네트워크나 영구 스토리지 접근이 제한된 환경으로, 승인된 코드만 실행되도록 설정 가능하다.
- 사용 사례: 암호화된 데이터의 안전한 처리, 금융 및 의료 데이터, 개인 식별 정보(PII) 보호 등 고도의 보안이 요구되는 컴퓨팅 환경.
- 고도로 민감한 데이터 보호: Nitro Enclaves는 외부 접근이 차단된 격리된 환경을 제공하여 보안 요구 사항이 높은 금융 데이터, 의료 데이터, PII 등의 처리를 지원한다.
- KMS 통합: AWS Key Management Service(KMS)와 통합하여 암호화 키를 통해 데이터 보호를 강화할 수 있다.
- 보안 컴퓨팅: Nitro Enclaves는 격리된 환경 내에서 실행되므로, 승인된 코드만 구동되도록 설정하여 악성 코드의 영향을 방지할 수 있다.
Nitro Instances의 주요 특징
- 성능 최적화: Nitro 시스템은 전통적인 가상화 계층에서 발생할 수 있는 성능 저하를 제거하여, 가상화된 인스턴스와 베어 메탈 인스턴스 모두 높은 성능을 제공한다.
- 유연성: Nitro 시스템은 다양한 인스턴스 유형(T3, M5, C5 등)을 지원하며, 고성능 네트워킹과 스토리지 요구 사항을 충족한다.
- 고성능 컴퓨팅 (HPC): 초당 100Gbps 이상의 네트워크 성능과 최대 60TB의 스토리지 등 고성능 컴퓨팅을 위한 인스턴스 옵션을 제공한다.
Nitro 시스템을 지원하지 않는 인스턴스
- T2와 같은 저비용 인스턴스 유형은 Nitro 시스템을 지원하지 않으며, 일부 고성능 또는 보안 기능을 사용할 수 없다.
- 최신 인스턴스 유형에서만 Nitro 시스템이 적용되며, 인스턴스 선택 시 Nitro 지원 여부를 확인하는 것이 좋다.
Amazon EC2 가격 옵션
주요 EC2 가격 옵션
1. 온디맨드 인스턴스 (On-Demand Instances):
- 필요 시 사용하며, 장기 약정이나 할인이 없다.
- 단기 테스트 및 예측 불가능한 워크로드에 적합하다.
- 기본 요금이 적용되며, 개발 환경과 유연성이 필요한 경우 사용하기 좋다.
2. 예약 인스턴스 (Reserved Instances):
- 1년 또는 3년 약정을 통해 최대 75% 할인을 받을 수 있다.
- 예측 가능한 워크로드와 장기 사용이 예상되는 환경에 적합하다.
- 예약 인스턴스는 일반 예약과 컨버터블 예약으로 나뉜다.
- 일반 예약 인스턴스(Standard RI): 인스턴스 사이즈, 네트워크 유형 , AZ 변경 가능.
- 컨버터블 예약 인스턴스(Convertable RI): 인스턴스 사이즈, 네트워크 유형 , AZ, 운영 체제, 테넌시, 결제옵션 변경이 가능하여 유연성 높음.
- 예약 인스턴스 결제 방식
- 선불 결제 (All Upfront): 가장 큰 할인을 제공하며, 전체 비용을 미리 지불.
- 부분 선불 결제 (Partial Upfront): 부분 금액을 선불로 지불하고 나머지는 월별로 납부.
- 무선불 (No Upfront): 선불 없이 월별 납부로 이용하되, 할인이 다소 적음.
3. 스팟 인스턴스 (Spot Instances):
- AWS가 여유 있는 인스턴스를 최대 90% 할인된 가격으로 제공.
- 중단 가능성이 있어 비용 민감한 워크로드에 유리하지만, 중단 시 2분 전 경고를 통해 인스턴스를 종료 또는 보존 가능.
- 저렴한 비용의 단기 계산 작업, 예를 들어 데이터 분석, 이미지 및 비디오 처리 등 비즈니스 연속성이 덜 중요한 작업에 적합하다.
4. 전용 인스턴스 (Dedicated Instances):
- 인스턴스당 비용을 지불하며, 물리적 격리를 통해 보안을 강화한다.
- 다른 AWS 고객과 호스트를 공유하지 않으며 강화된 보안과 내부 정책 준수(compliance)가 필요한 경우 유리하다.
5. 전용 호스트 (Dedicated Hosts):
- 호스트 단위로 요금이 청구되며, 사용자에게 물리적 서버를 전용으로 제공.
- 호스트 레벨에서 소켓, 코어, 호스트 ID를 확인할 수 있어 특정 라이선스 요구사항을 충족하기 위한 인스턴스 배치에 유리하다.
- 서버 바인딩 소프트웨어 라이선스가 필요하거나, 특정 하드웨어에 대한 제어가 필요한 경우 유용하다.
6. 저축 계획 (Savings Plans):
- EC2, Fargate, Lambda와 같은 컴퓨팅 서비스에 대해 1년 또는 3년간 약정을 통해 시간당 비용을 절감할 수 있는 옵션.
- 컴퓨팅 저축 계획과 EC2 저축 계획이 있으며,
- 컴퓨팅 저축 계획은 특정 인스턴스 유형과 지역에 구애받지 않음.
- EC2 저축 계획은 선택한 인스턴스 패밀리와 지역 내에서 비용 절감이 가능하다.
실제 비즈니스 시나리오
요구사항:
- 비용 절감: 회사는 3년 동안 애플리케이션의 비용을 절감하고자 하며, 다양한 인스턴스 패밀리와 크기를 표준화해야 합니다.
- 유연성 필요: 향후 6개월동안 애플리케이션의 사용량과 인기에 따라 EC2 인스턴스 패턴과 크기를 변경해야 합니다.
솔루션:
- 컴퓨팅 세이빙 플랜 (Compute Savings Plan):
- 특정 인스턴스 유형에 제한되지 않고 EC2 인스턴스 패밀리, 크기, 리전, OS 변경에 대해 유연성을 제공.
- 3년 약정을 통해 최대 66%의 비용 절감 가능.
- 워크로드 변화와 인스턴스 변경에 유연하게 대응할 수 있어 요구사항을 충족.
'AWS' 카테고리의 다른 글
| AWS 데이터 분석: Athena, Glue, Redshift, EMR (2) | 2024.12.18 |
|---|---|
| AWS 실시간 데이터 처리: Amazon Kinesis (1) | 2024.12.17 |
| AWS VPC(Virtual Private Cloud) (1) | 2024.12.16 |
| AWS EC2 Auto Scaling & Load Balancing (3) | 2024.12.16 |
| AWS IAM (Identity and Access Management) (2) | 2024.12.13 |