[aws] ec2 인스턴스 타입

dante Yoon·2022년 1월 27일
0

aws

목록 보기
1/1
post-thumbnail

EC2 는

EC2는 Elastic Cloud Compute의 줄임말이고 한글로는 클라우드 가상 서버라고 부른다.
아마존 웹 서비스에서 대여해서 사용할 수 있으며 하나의 서버를 인스턴스라고 한다.
대여할 수 있는 EC2 인스턴스에는 여러 종류가 있으며 다음과 같이 여러 타입으로 분류된다.

EC2 instance type

EC2 인스턴스는 여러 타입으로 세분화되는데, 다양한 타입 중에 본인의 어플리케이션을 구축하는데 적절한 타입을 선택함으로 비용을 절감할 수 있다. 시스템 설계자에게 비용 절감은 중요한 문제이기 때문에 각 타입을 언제 선택하면 좋을지에 대해 잘 알아두어야 한다.

On demand

내가 필요할 때마다 사용할 수 있다.(즉 가용성이 99.99%)이다. 항상 서버가 켜져있으며, 기본적으로 많은 사람들이 EC2를 입문할때 선택하는 인스턴스 타입이다. 뒤에 살펴볼 전용 호스트를 제외 하고는 여러 인스턴스 타입 중 제일 비싸며, 가용성이 중요하되 짧은 워크로드를 갖는 프로그램을 서빙하는 서버를 구축하기 원할 때 필요하다. 흔히 우리가 사용하는 웹 어플리케이션, 홈페이지의 경우 여기에 해당한다고 볼 수 있다.

Reserved instance

한글로 예약 인스턴스라고 부른다. 온디맨드와 비교해 최대 72%의 가격을 절감할 수 있으며, 다만 한번 사용할 때 1,3년 둘 중에 하나의 기간을 선택하여 사용해야 한다. 사용에 필요한 가격을 미리 지불할 수 있으며 이 때 지불하는 가격은 더욱 큰 폭으로 절감된다. 예약을 하고 사용하기 때문에 일반적인 경우로는 m5와 같은 cpu 타입을 사용 도중에 변경할 수 없으며, 중간에 변경에 대한 필요가 예상될 때는 Convertible Reserved Instance를 사용해야 한다. 이 타입은 그냥 Reserved instance와 비교해서 할인 폭이 낮다.(54%)

long term workload가 필요한 작업에 사용한다. 예를 들어 데이터베이스 서버등이 있다.

Dedicated host

기업에서 온프레미스 서버를 구축해서 사용하다 클라우드 서버로 이전의 필요성이 생겼을 때 기존에 사용하던 Microsoft, Oracle과 같은 공급업체의 라이센스를 계속 사용하고 싶을 경우, 이러한 보유 라이센스 운용을 활용할 수 있게 해주는 인스턴스 타입이다.

아마존 웹서비스에서 운용하는 물리서버 전체를 대여하고 싶을 때 사용하며 다른 ec2 타입과 비교해서
인스턴스의 소켓, 코어의 수를 확인할 수 있다.

3년의 주기로 예약해서 사용해야 하며 다음에 설명할 전용 인스턴스와는 아래와 같은 차이점을 보인다.

Dedicated instance

인스턴스 자체에 대한 컨트롤만 가지고 있지 물리적 서버에 대한 컨트롤은 할 수가 없다.
전용 호스트는 물리적 서버에 배치되는 방법에 대한 제어나 소켓, 코어수에 대한 가시성을 제공하는 것에 반해 전용 인스턴스는 이러한 기능을 제공하지 않는다.

Spot instance

인스턴스 타입 중 가장 가격 절감을 할 수 있는 타입이나, 사용자의 의도와 다르게 언제든지 서버가 종료될 수 있는 위험성을 가지고 있다. 가용성이 중요하지 않고 서비스 중단이 큰 우려가 되지 않는 경우에만 사용해야 한다. batch job, data analysis, background processing과 같은 작업을 할 때 사용하는 것이 좋다.
스팟 인스턴스는 max spot price라고 하는 내가 지불할 수 있는 최대 비용의 상한선을 설정해 놓고 이 선을 넘을 경우 인스턴스를 중단 혹은 종료시킬지 설정할 수 있다. 스팟 인스턴스를 설명할 때 같이 쓰이는 용어들을 적어보았다.

  • Spot capacity pool: 사용되지 않은 동일한 인스턴스 타입(m5.large와 같은), AZ의 EC2 모임들(set)
  • Spot price: 스팟 인스턴스를 사용하는데 지불해야 하는 시간당 비용
  • Spot instance request: 스팟 인스턴스를 사용할때 보내는 요청이다. 요청에는 max spot price 정보를 함께 보낼 수 있는데, 이 정보가 명시되지 않는다면 온디맨드의 인스턴스의 가격이 max spot price의 디폴트 값이 된다.

스팟 리퀘스트의 리퀘스트 타입은 one-time, persistent 두개로 나뉘어진다.
현재 운용할 수 있는 인스턴스의 가용성이 부족하거나 지불해야 할 비용이 maximum price을 초과할 경우 인스턴스가 중단(interrupt) 되는데, one-time의 경우 interrupt 이후 해당 인스턴스를 수동으로 재시작하지 않으면 다시 start가 되지 않지만, spot request가 persistent타입일 경우 stop -> start 단계를 반복한다.

한가지 더 알아두어야 할 것은, 더 이상의 spot request를 보내지 않는 상태가 되더라도 현재 돌아가고 있는 spot instance들을 멈추는 것은 사용자의 책임이라는 것이다.

Placement group

여러 개의 가상서버(인스턴스)를 하나의 그룹으로 묶어 운영해야 하는 경우가 있다. 여기서 묶는 다는 것은 여러 인스턴스를 하나의 물리적 서버안에 분배할 수도 있으며 다른 AZ에 걸쳐서 분배할 수 있다는 것이다.

cluster

동일한 물리적 서버 안에 인스턴스를 담는다면 가상 서버들 간의 latency가 매우 낮기 때문에 빠른 네트워킹 속도를 보장할 수 있으나 물리 서버에 문제가 생기면 모든 가상 서버에 피해가 가기 때문에 가용성에서 손해를 보는 trade off가 있다. 이렇게 동일한 물리적 서버에 인스턴스를 배치하는 것을 Cluster Placement Group방식이라고 한다. 클러스터 방식은 하나의 AZ에만 인스턴스를 배치할 수 있다.

partition


반대로 여러 AZ에 걸쳐서 인스턴스를 배치하거나, 같은 AZ에 배치하더라도 다른 물리서버를 사용하길 원한다면 partition이 방법이 될 수 있다.

파티션 방식은 하나의 AZ에 최대 7개의 partition을 가질 수 있으며 분배할 수 있는 인스턴스는 총 100개이다.

파티션 방식은 어떤 인스턴스가 어떤 파티션에 속해있는지에 대한 정보를 알 수 있기 때문에 데이터베이스 복사와 같은 작업을 수행하기에 용이하다. HBASE, CASSANDRA 같은 어플리케이션을 사용할 때 용이하다.

spread


스프레드는 가용성을 최대한으로 높이길 원하는 요구사항이 있을 경우 사용하는 방식이다.

앞서 살펴본 그림에서 cluster는 하나의 상자(물리 서버)안에 모든 인스턴스를, partition은 하나의 파티션에 몇 개의 인스턴스를 세트로 가지고 있었는데, 이때 각 인스턴스를 담은 상자 역할을 rack 이라고 하고 하나의 rack은 같은 네트워크와 파워 리소스를 사용한다.

스프레드는 모든 인스턴스를 각기 다른 rack에 담음으로 각 인스턴스가 본인이 아닌 다른 rack의 상황과 완전히 독립적으로 기능할 수 있다.

하나의 spread group은 여러 AZ에 걸쳐 인스턴스를 배분할 수 있으나 하나의 AZ 당 최대 7개의 인스턴스를 가질 수 있다. 어떤 리전에서 3개의 AZ를 가지고 있을때 해당 리전에서 가용할 수 있는 인스턴스의 최대 갯수는 21개이다.

ENI

ENI는 Elasting Network Interface을 의미한다.

EC2 인스턴스에는 스토리지를 어플리케이션 요구사항에 맞게 떼었다 붙였다 할 수 있는데, IP와 같은 네트워크 설정도 동일하게 만들고 떼었다 붙였다 할 수 있다. 하나의 엔티티로 존재하는 네트워크 설정을 ENI라고 한다.

하나의 ENI는 같은 VPC 내부에 있는 서로 다른 인스턴스로 옮길 수 있다. ENI에는 다음과 같은 속성들이 있다.

  • public
  • private ip address
  • MAC address
  • Security group

하나의 인스턴스에 대한 설정을 마쳤다고 하자. 이 인스턴스를 다른 VPC에서 사용해야 한다면 각 VPC에 소속되어 있는 ENI를 해당 인스턴스에 붙이면 된다.

Hibernate

한국어로 하면 최대 절전모드이다. (?)
인스턴스를 종료하게 되면 인스턴스의 메모리가 삭제되고 재가동 시 다시 메모리를 적재해야 하는데,
long term processing을 하는 인스턴스이거나 메모리를 다시 적재하는데 많은 비용이 드는 경우 이러한 비용을 줄이고 싶을 수 있다. EBS를 인스턴스의 최상위 루트 store로 설정하고 저장 방식에 암호화를 적용하여 인스턴스가 종료될 때 메모리를 EBS에 저장하고 이 EBS를 다른 인스턴스에 붙임으로 기존 인스턴스에서 사용하던 메모리를 다시 사용할 수 있다.

Nitro

최신 버전의 EC2라고 보면 된다. 기존 EC2는 최대 32,000 IOPS (IO Operation per seconds)를 제공하는데 반해 nitro는 두배인 64,000 IOPS를 제공한다.

profile
성장을 향한 작은 몸부림의 흔적들

0개의 댓글