SLASH 기술 블로그

AWS 101 - EC2 인스턴스 타입 파헤치기 본문

인프라

AWS 101 - EC2 인스턴스 타입 파헤치기

SLASH 2021. 4. 26. 23:59
반응형

 

AWS EC2에서는 다양한 인스턴스 타입을 제공한다. 가장 기본적인 t로 시작하는 범용 인스턴스부터, R로 시작하는 메모리 최적화 인스턴스, 컴퓨팅에 최적화된 C로 시작하는 인스턴스들까지, 처음 인스턴스를 띄울 때는 이렇게 다양한 타입 중에 어떤 것을 선택해야 하는지도 꽤나 고민이 될 것이다.

 

처음 서비스를 만들고 인프라를 만지면서 했던 실수 중 하나는 인스턴스의 특성을 제대로 고려하지 않고 vCPU, 메모리만 보고 인스턴스를 골랐던 것. 같은 스펙을 가지고 있더라도, 인스턴스의 특성에 따라서 특화된 기능이나 비용은 천차만별이다.

 

오늘은 다양한 인스턴스 타입을 파헤쳐보고, 상황에 따라 어떤 인스턴스를 선택하는 게 좋을지 알아보도록 하자.

 

뭘 해야할지 모르겠을 때는? 범용 인스턴스

처음 인스턴스를 만들 때, 아니면 구체적으로 어떤 작업을 해야할지 모르겠을 때는 범용 인스턴스가 정답이다.

프리티어로 인스턴스를 띄울 때는 어쩔 수 없이 t2.micro 인스턴스를 써야할텐데, 프리티어 제한이 없다면 t3 계열 인스턴스를 쓰면 된다.

 

나같은 경우는 모니터링, 스케줄링 등으로 사용하는 인스턴스들은 t3a.micro나 t3a.small을 사용하고, 웹서버의 경우 t3a.large를 사용하고 있다.

 

인스턴스 뒤에 붙는 알파벳들이 궁금할텐데, 한 마디로 아키텍처의 차이다.

 

버스트 가능한 성능 인스턴스

범용 인스턴스의 설명을 보다 보면, 버스트 가능한 성능 인스턴스라는 말이 나온다. 대체 이게 무슨 뜻일까?

 

t2, t3a같은 버스트 인스턴스는 시간에 따라 일정한 크레딧을 받는다. 이 크레딧은 단위당 1분동안 CPU의 100%에 해당하는 성능을 제공한다. 만약 주어진 크레딧에 해당하는 성능보다 적게 CPU를 사용하면, 남은 크레딧은 잔액으로 저장되고 이후 CPU를 많이 사용해야할 경우 잔액 크레딧을 사용해서 성능을 끌어올릴 수 있다.

 

이러한 버스트 인스턴스같은 경우 평소에는 CPU를 적게 쓰고, 특정 시간에 CPU 사용량이 치솟는 서비스의 경우 적합하다. 그냥 우리가 흔히 아는 웹사이트 생각하면 된다. 특정 시간에 사람이 몰리는 이벤트를 자주 하는 쇼핑몰같은 사이트를 생각해보자. T2, T3, T3a, T4g와 같은 T로 시작하는 인스턴스가 여기에 해당한다.

 

버스트를 지원하지 않는 일반 인스턴스도 있다. M으로 시작하는 M5, M6g같은 인스턴스인데, 나는 추후에 CPU 자원을 많이 사용하는 기능을 별도 인스턴스로 띄울 때 M5a.large나 M6g.large를 써볼 예정이다. 꾸준히 CPU 자원을 사용하는 서버의 경우 버스트 인스턴스 말고 이런 일반 범용 인스턴스를 쓰는게 좋다. 물론, 연산이 무지막지하게 필요하다면 C타입이나 P타입을 고려해봐야겠지만.

 

데이터 분석이나 캐시를 위한 메모리 인스턴스

메모리 최적화 인스턴스에 속하는 R 타입 인스턴스의 특징은 단연 메모리다. 비슷한 가격의 다른 타입과 비교했을 때 1.5배이상의 메모리를 가지고 있고, 최대 768GB 수준의 메모리까지 지원한다고 한다. 이보다 더 많은 용량을 지원하는 X 타입 인스턴스도 있다.

 

일반적인 웹/앱서비스를 운영할 때는 어디에서 사용하면 좋을까? 가장 먼저 생각할 수 있는 건 역시 캐시. ElastiCache같은 Managed 서비스를 사용하는게 아니라면 이렇게 높은 메모리를 제공하는 인스턴스를 사용하는게 좋을 것 같다. ElastiCache에서도 메모리 최적화 인스턴스를 지정해 사용할 수 있다.

Redis 서버를 위해 cache.r5.large 인스턴스를 사용했다.

 

통계를 위한 빅 데이터 분석 플랫폼을 띄우기에도 적합할 것 같다. 몇억 ~ 몇십억단위의 빅 데이터를 감당하기 위해서는 당연히 대용량의 메모리가 필요하다. 조만간 AWS Redshift를 사용해서 데이터 웨어하우스를 구축할 예정인데, 그 때 분석을 위한 인스턴스로 사용하게 되지 않을까 생각한다.

 

10000~20000GB까지 지원하는 초대용량 메모리 인스턴스도 있는데, 이런 건 어디에 써야할지... 궁금하긴 하다. 이 정도라면 차라리 직접 서버를 구성하는게 비용 효율적이지 않을까?

 

고성능 컴퓨팅을 위한 컴퓨팅 인스턴스

높은 CPU 성능을 제공하는 C 타입 인스턴스는 기본적으로 프로세서 자체도 다른 인스턴스와 비교했을 때 성능이 좋고, 최대로 사용할 수 있는 vCPU의 개수도 높다.

 

이런 고성능 컴퓨팅 인스턴스는 단순 처리량이 많은 경우 사용하면 좋을 것 같다. C 타입 인스턴스에서는 과학 시뮬레이션, 동영상 인코딩 등에 적합하다고 한다.

 

친숙한 예시로는 실시간 MMO RPG 서버같은 경우에 사용할 수 있지 않을까 생각한다. MMO RPG는 다수의 유저가 대량의 요청과 응답을 주고 받기 때문에 그에 따라 처리량이 많으니 이런 컴퓨팅 인스턴스를 사용하면 도움이 될 것 같다. (연산 자체가 복잡하기보다는 연산량 자체가 많음)

 

GPU 연산 처리를 위한 P, G 타입 인스턴스

고성능의 CPU를 제공하는 C 타입 인스턴스와는 다르게, GPU를 통한 병렬 처리를 중점에 둔 인스턴스들도 있다.

 

P 타입 인스턴스의 대표적인 활용 예는 기계 학습이다. 딥러닝에서 사용하는 신경망같은 경우 다수의 파라미터를 가지고 행렬 연산을 할 때 행렬의 성분들끼리 곱셈을 아주 많이 하게되는데, 이는 병렬적으로 처리가 가능해 GPU를 사용했을 때의 효율이 좋다. 비슷한 예시로는 수치 해석 등을 사용하는 공학 시뮬레이션이 있다고 한다.

 

G 타입 인스턴스는 P 타입과 동일하게 GPU가 핵심이지만 단순 연산보다는 그래픽에 조금 더 집중되어 있다. 아주 높은 해상도의 실사 그래픽 렌더링이나 게임 스트리밍같이 그래픽 작업이 많이 필요할 때 유용하다.

 

개인적으로 P, G는 비슷한 사용례가 없어서 피상적인 설명밖에 못하겠다 ㅠ

 

대량의 I/O 처리를 위한 스토리지 인스턴스

연산이 많이 필요한 경우가 있는가 하면, I/O - 입출력 작업이 많이 필요한 경우도 있다. 이럴 때는 스토리지 최적화 인스턴스를 사용하면 좋다.

 

I 타입 인스턴스는 입출력 지연 시간이 짧고 I/O 성능이 좋아 방대한 양의 데이터를 적재하고 내보내는 데이터 웨어하우스나, 입출력이 많은 NoSQL 데이터베이스에 적합하다.

 

D 타입 인스턴스도 있는데, I 타입이 SSD를 사용했다면 이쪽은 HDD를 사용해 기본적인 용량 자체가 높다. 데이터나 로그를 쌓아놓는 저장소로 활용하거나, 마찬가지로 데이터 웨어하우스로 활용할 수 있다.

 


간단하게 AWS EC2가 지원하는 몇 가지 인스턴스 타입에 대해서 알아보았다.

 

인스턴스를 모두 사용해본 것은 아닌지라 개인적인 생각이나 심도있는 설명이 부족했다는 느낌이 든다. 여기서는 상황에 따라 어떤 인스턴스 종류를 선택하면 좋을지 기본적인 개념정도만 잡고, 각 인스턴스에 대한 상세한 정보는 인스턴스 유형 정보에서 확인하면 좋을 것 같다.

반응형

'인프라' 카테고리의 다른 글

Terraform 알아보기  (0) 2021.04.22
Comments