Amazon Web Services 한국 블로그

AWS Compute Optimizer – 기계 학습 기반 사용자 맞춤형 클라우드 자원 최적화 서비스 출시

Amazon EC2 인스턴스 유형에 대해 자주 받는 질문 중 하나는”애플리케이션에 적합한 인스턴스 유형을 어떻게 선택할 수 있습니까?”라는 것입니다.

올바른 인스턴스 유형을 선택하는 것은 예상되는 일상적인 변수를 고려하여 애플리케이션 성능 특성을 파악하고 이러한 특성에 맞는 인스턴스 유형을 선택해야 합니다. 그런 다음, 주요 지표를 모니터링하여 올바르게 선택했는지 확인하고 시간을 두고 반복적으로 인스턴스 유형을 조정해 애플리케이션의 비용 대 성능 비율에 가장 적합한 인스턴스 유형을 찾아야 합니다. 리소스를 초과 프로비저닝하면 인프라 비용이 너무 많이 발생하고 적게 프로비저닝하면 애플리케이션 성능이 저하되어 고객 경험에 영향을 줄 수 있습니다.

AWS는 올해 초에 Cost Explorer – Rightsizing Recommendations를 출시했습니다. 이 서비스는 동일 패밀리 내에서 다운사이징하여 비용을 절감할 수 있는 사용률이 낮은 Amazon Elastic Compute Cloud(EC2) 인스턴스를 식별하는 데 도움을 줍니다. AWS는 훌륭한 피드백을 받았으며 고객은 동일한 인스턴스 패밀리 내에서 다운사이징을 넘어 더 많은 권장 사항을 요구하고 있습니다.

AWS Compute Optimizer 기능 출시
비용 절감 및 워크로드 성능 향상을 위해 최적의 AWS 컴퓨팅 리소스 권장해주는 AWS Compute Optimizer를 발표했습니다. 특히, 기계 학습 기술을 사용하여 계정의 리소스 사용 기록을 분석하고 리소스 사용에 맞게 적절히 설명된 실행 가능한 권장 사항을 만듭니다. AWS Organizations에 통합되어 이제 마스터 AWS Organizations 계정 하나로 여러 계정에 대한 권장 사항을 볼 수 있습니다.

AWS Compute Optimizer를 시작하기 위해 AWS 관리 콘솔로 이동하여 서비스를 활성화하겠습니다. 즉시 Amazon CloudWatch 지표를 사용하여 리소스 사용 및 기록에 대한 분석을 시작하고 몇 시간 후에 첫 번째 권장 사항을 제공합니다.

AWS Compute Optimizer 대시보드에서 첫 번째 권장 사항을 볼 수 있습니다.

초과 프로비저닝된 8개 인스턴스를 클릭하여 세부 정보를 확인하겠습니다.

실행 가능한 스캔 결과를 확인하기 위해 8개 링크 중 하나를 클릭해보겠습니다.

AWS Compute Optimizer는 다양한 옵션을 제공합니다. 페이지 아래쪽으로 스크롤하여 이 권장 사항을 적용할 경우 어떤 영향이 있는지 확인할 수 있습니다.

AWS Command Line Interface(CLI)에서 권장 사항에 액세스할 수도 있습니다.

$ aws compute-optimizer get-ec2-instance-recommendations --instance-arns arn:aws:ec2:us-east-1:012345678912:instance/i-0218a45abd8b53658
{
    "instanceRecommendations": [
        {
            "instanceArn": "arn:aws:ec2:us-east-1:012345678912:instance/i-0218a45abd8b53658",
            "accountId": "012345678912",
            "currentInstanceType": "m5.xlarge",
            "finding": "OVER_PROVISIONED",
            "utilizationMetrics": [
                {
                    "name": "CPU",
                    "statistic": "MAXIMUM",
                    "value": "2.0"
                }
            ],
            "lookBackPeriodInDays": 14.0,
            "recommendationOptions": [
                {
                    "instanceType": "r5.large",
                    "projectedUtilizationMetrics": [
                        {
                            "name": "CPU",
                            "statistic": "MAXIMUM",
                            "value": 3.2
                        }
                    ],
                    "performanceRisk": 1.0,
                    "rank": 1
                },
                {
                    "instanceType": "t3.xlarge",
                    "projectedUtilizationMetrics": [
                        {
                            "name": "CPU",
                            "statistic": "MAXIMUM",
                            "value": "2.0"
                        }
                    ],
                    "performanceRisk": 3.0,
                    "rank": 2
                },
                {
                    "instanceType": "m5.xlarge",
                    "projectedUtilizationMetrics": [
                        {
                            "name": "CPU",
                            "statistic": "MAXIMUM",
                            "value": "2.0"
                        }
                    ],
                    "performanceRisk": 1.0,
                    "rank": 3
                }
            ],
            "recommendationSources": [
                {
                    "recommendationSourceArn": "arn:aws:ec2:us-east-1:012345678912:instance/i-0218a45abd8b53658",
                    "recommendationSourceType": "Ec2Instance"
                }
            ],
            "lastRefreshTimestamp": 1575006953.102
        }
    ],
    "errors": []
}

AWS Compute OptimizerAmazon CloudWatch 지표를 권장 사항의 기준으로 사용합니다. 기본적으로 CloudWatch 지표는 하이퍼바이저 관점에서 관찰할 수 있는 지표(예: CPU 사용률, 디스크 IO 및 네트워크 IO)입니다. AWS Compute Optimizer가 메모리 사용과 같은 계정 운영 시스템 수준 지표를 고려하도록 하려면 EC2 인스턴스에 CloudWatch 에이전트를 설치해야 합니다. AWS Compute Optimizer는 이러한 지표가 제공되면 자동으로 인식하여 권장 사항 생성 시 이를 고려합니다. 그렇지 않은 경우 콘솔에 “데이터를 사용할 수 없음”을 표시합니다.

AWS 고객은 리소스를 선택할 때 성능이 유일한 지표가 아니라 가격 대 성능 비율이 중요하다고 말합니다. 예를 들어, 새로운 세대 인스턴스 패밀리가 워크로드 대비 초과 프로비저닝된것 처럼 보여도 이전 세대(예: m3 또는 m4) 대신 m5와 같은 새로운 세대 인스턴스 패밀리를 사용하는 것이 합리적입니다. AWS Compute Optimizer가 워크로드에 가장 적합한 AWS 리소스 목록을 식별한 후 권장 사항에 예상 리소스 효율성과 함께 온디맨드 요금, 예약 인스턴스 요금, 예약 인스턴스 사용률 및 예약 인스턴스 적용 범위를 함께 제공하는 이유가 바로 여기에 있습니다.

AWS Compute Optimizer는 적합한 리소스 규모를 쉽게 알 수 있게 해 줍니다. 그러나 최신 애플리케이션 또는 수평으로 확장되는 상태 비저장 애플리케이션에 적합한 리소스 규모는 쉽게 알 수 있지만 오래된 앱에 적합한 리소스 규모는 파악하기가 용이하지 않을 수 있습니다. 일부 오래된 앱은 다른 하드웨어 아키텍처에서 실행되지 않거나, 다른 드라이버가 필요하거나, 애플리케이션 공급업체가 전혀 지원하지 않을 수 있습니다. 패키지 또는 오래된 앱의 클라우드 리소스를 최적화하기 전에 공급업체에게 문의하십시오.

새 권장 사항을 프로덕션에 적용하기 전에 새 권장 인스턴스 유형에서 애플리케이션을 철저히 테스트하는 것이 좋습니다.

Compute Optimizer는 무료로 제공되며 처음에는 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드), 미국 동부(오하이오), 남아메리카(상파울루) AWS 리전에서 사용할 수 있습니다. 지금 바로 AWS 관리 콘솔에 연결하여 클라우드 애플리케이션에 적합한 리소스 규모를 선택할 경우 얼마를 절감할 수 있는지 알아보십시오.

— seb