AWS는 사용자 입맛에 맞게 시스템을 만들 수 있도록 아주 다양한 선택지를 제공해준다. 이 덕분에 비용에 대한 최적화도 쉽게 할 수 있다. 문제는 인프라를 구축하기도 벅차서 각 서비스마다 특성을 고려해서 만들기가 어렵다는 것이다. 하지만 웬만한 aws 서비스의 기본은 ec2 instance라서 이것의 종류와 생성 방법에 대해서만 알아도 많은 부분에 적용할 수 있다.
Instance Type
Instance type은 인스턴스 패밀리, 세대, 크기 등으로 구분해서 이름 지어진다.
가장 앞에 나타나는 인스턴스 패밀리는 계속 추가되고 있지만 자주 사용하는 패밀리는 다음과 같다.
- R
Ram 중심으로 메모리를 많이 사용하는 처리나 인메모리 디비 등에 사용한다. - C
CPU 중심으로 고성능의 처리가 필요한 경우 사용한다. - I
I/O 중심으로 IOPS가 높은 작업에 사용한다. - G, P
GPU 중심으로 딥러닝이나 그래픽 등에 사용한다. - M
각종 리소스가 균형 있게 할당된 타입으로, 범용적으로 사용한다. - T
트래픽이 급증하거나 자원이 많이 소모될 때 burst모드로 좋은 성능을 내며 감당한다. 이러는 동안 credit는 줄어들고 전부 소진되면 CPU 성능이 떨어진다. 따라서 서비스에 문제가 생겼을 때 credit도 모니터링을 해야 한다.
기준 성능보다 덜 사용하면 소진된 credit은 다시 점차 채워지고 다시 burst모드로 진입할 수 있다. 이게 불안하면 unlimited burst 모드도 있는데, 추가적인 비용이 계속 나가기 때문에 이런 경우라면 다른 instance type을 생각해보는 게 좋다.
인스턴스 세대는 아무래도 최신 타입을 선택하는 게 성능 대비 비용의 효율이 좋고, 인스턴스 크기는 8xlarge와 같이 표현하는데 이는 2xlarge보다 4배의 vCPU와 메모리를 가진다는 뜻이다. 필요한 성능 패턴에 맞게 크기가 큰 인스턴스를 사용할지, 크기가 작은 인스턴스를 여러 개 사용할지 선택한다.
Launch Type
인스턴스를 어떤 방법으로 생성할지 선택한다.
- On-demand
클라우드 환경답게 사용할 때만 빌리고 사용한 만큼만 과금한다. 아무 제약 조건이 없기 때문에 다른 방법에 비해서 저렴하다. - Reserved Instance
인스턴스를 장기간 빌려 할인받는 방법이다.- RI: On-demand와 비교하면 최대 75% 저렴
- Convertible RI: 빌려 놓은 기간 동안 instance type을 변경할 수 있다. 당연히 가격은 좀 더 비싸다.
- Scheduled RI: 주기적으로 특정 시간에만 인스턴스를 사용한다.
- Spot Instance
aws에서 쉬고 있는 ec2 instance를 가격 경쟁을 통해 입찰해서 사용한다. 즉 내가 제시한 max price보다 spot price가 더 비싸지면 뺏길 수 있다. spot pool은 aws에서 관리하는데 공급이 부족하거나 다른 기타 이유로 언제든 중단될 수 있다.
Spot Instance를 고르는 방법도 여러 가지가 있다.
Fleet request를 통해 여러 instance type을 후보로 spot instance를 생성할 수도 있고, n개의 instance/vCPU를 할당받을 수도 있으며, 할당받은 spot instance가 뺏겼을 때에 대한 정책도 설정할 수 있다.
싼 가격만큼 희생되는 게 가용성인데 다행인 점은 인스턴스를 중단시키기 전에 CloudWatch Event로 미리 알림을 받을 수 있기 때문에 이를 활용하면 On-demand 수준의 가용성을 구현할 수도 있다. - Dedicated Instance
서로 다른 계정의 인스턴스와 물리적으로 격리된다 - Dedicated Host
Dedicated Instace에 추가적으로 소켓 / pysical core 수를 제공한다. 보통 이를 기반으로 계약하는 Lisence 이슈가 있을 때 사용한다.
Placement Groups
단순히 생성 요청하고 할당받지 않고, n개의 인스턴스를 어떤 배치로 할당받을지에 대한 정책도 세울 수 있다. 적절한 배치를 통해 낮은 latency, 고가용성 등의 이점을 얻을 수 있다.
- Cluster
하나의 AZ에 배치해 낮은 latency로 통신할 수 있다. 하지만 한꺼번에 문제가 생길 수 있는 위험이 있다. - Spread
최대 7개의 인스턴스를 다른 하드웨어에 배치해서 가용성을 높인다. - Partition
Spread와 비슷한데 서로 다른 파티션에 속한 인스턴스가 하드웨어를 공유하지 않도록 배치한다. 논리적으로 나눈 파티션에 여러 대의 인스턴스를 할당할 수 있어 대규모 분산처리 등에 사용된다.
Metadata / Userdata
EC2 Instance 자체에서 EC2 자신에 대한 정보를 확인할 수 있다.
http://169.254.169.254/latest/meta-data/ 에서는 EC2 instance 정보를 보여준다. 이 ip 주소는 aws에서 관리하는 주소로 ec2에서만 접근할 수 있다. http://169.254.169.254/latest/user-data/ 에서는 인스턴스가 기동 될 때 사용하는 user data를 보여준다.
'aws' 카테고리의 다른 글
AWS ElastiCache Redis (0) | 2020.04.11 |
---|---|
AWS RDS와 Aurora (0) | 2020.04.11 |
AWS IAM 보안 정책 (0) | 2020.04.07 |
DNS 과정과 route 53 사용법 (0) | 2020.04.04 |
Security Group vs Network ACL 정리 (0) | 2020.04.02 |
댓글