Graviton 인스턴스 및 컨테이너 사용 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Graviton 인스턴스 및 컨테이너 사용

개요

AWS Graviton 인스턴스는 에서 실행되는 컨테이너 AWS 를 포함하여 Amazon Elastic Compute Cloud(AmazonEC2)에서 실행되는 클라우드 워크로드에 대해 최상의 가격 성능을 제공하도록 에서 설계된 ARM 프로세서로 구동됩니다 AWS. 현재 Amazon 에서 사용할 수 있는 Graviton은 세 세대입니다EC2. 이 안내서는 최신 버전의 Graviton을 사용할 때 상당한 비용 절감이 있기 때문에 .NET 애플리케이션에서 Graviton 2 및 3을 사용하는 데 중점을 둡니다. Graviton 인스턴스는 Linux 운영 체제만 실행한다는 점에 유의하세요. 따라서 Graviton 인스턴스는 Linux에서 실행되는 NET에 대한 강력한 제안이지만 Windows 운영 체제 또는 레거시 에는 옵션이 아닙니다.NET 프레임워크 애플리케이션.

Graviton 3는 비슷한 EC2 인스턴스보다 60% 더 효율적이며 최대 40% 더 나은 성능을 제공합니다. 이 가이드는 Graviton 사용의 비용 이점에 중점을 두지만 Graviton은 성능 개선 및 환경 지속 가능성 개선의 추가 이점을 제공한다는 점에 유의하는 것이 중요합니다.

비용 영향

Graviton으로 전환하면 최대 45%까지 절감할 수 있습니다. 레거시 를 리팩터링한 후.NET 프레임워크 애플리케이션을 최신 버전으로NET 전환하면 Graviton 인스턴스를 사용할 수 있는 기능을 잠금 해제할 수 있습니다. Graviton으로의 전환은 .NET 개발자를 위한 효과적인 비용 최적화 기술입니다.

다음 표의 예제는 Graviton 인스턴스로 마이그레이션하여 달성할 수 있는 성능 개선 가능성을 보여줍니다.

Graviton 성능 그래프

이전 다이어그램에서 결과를 생성하는 데 사용되는 벤치마킹 접근 방식에 대한 전체 분석 및 설명은 AWS 컴퓨팅 블로그의 AWS Graviton2: 벤치마크를 사용하여 .NET 5 활성화를 참조하세요.

효율성이 향상된 이유 중 하나는 x86과 Graviton 간의 vCPU 의미 차이입니다. x86 아키텍처에서 vCPU는 하이퍼스레딩을 통해 달성되는 논리적 코어입니다. Graviton에서 vCPU는 vCPU가 워크로드에 완전히 커밋될 수 있도록 하는 물리적 코어와 같습니다.

Graviton2를 사용하면 비슷한 x86/x64 인스턴스에 비해 가격 성능이 40% 향상됩니다. Graviton3은 Graviton2를 통해 다음을 제공합니다.

  • 최대 25% 향상된 성능으로 성능 프로파일 향상

  • 최대 2배 더 높은 부동 소수점 성능

  • 최대 2배 빠른 암호화 워크로드 성능

  • 최대 3배 향상된 기계 학습 성능

또한 Graviton3는 클라우드에서 DDR5 메모리를 지원하는 첫 번째 인스턴스입니다.

다음 표는 Graviton 기반 인스턴스와 동등한 x86 기반 인스턴스 간의 비용 절감 차이를 보여줍니다.

이 표는 19.20%의 Graviton 절감을 보여줍니다.

인스턴스 유형 아키텍처 vCPU 메모리(GB) 시간당 비용(필요 시)
t4g.xlarge ARM 4 16 $0.1344
t3.xlarge x86 4 16 $0.1664

이 표는 14.99%의 Graviton 절감을 보여줍니다.

인스턴스 유형 아키텍처 vCPU 메모리(GB) 시간당 비용(필요 시)
c7g.4xlarge ARM 16 32 $0.5781
c6i.4xlarge x86 16 32 $0.6800

Graviton을 고려할 때는 애플리케이션의 성능 프로파일을 테스트하는 것이 중요합니다. Graviton은 견고한 소프트웨어 개발 관행을 대체하지 않습니다. 테스트를 사용하여 기본 컴퓨팅 리소스를 최대한 활용하고 있는지 확인할 수 있습니다.

비용 최적화 권장 사항

Graviton 프로세서/인스턴스를 활용하는 방법에는 여러 가지가 있습니다. 이 섹션에서는 x86 아키텍처 머신 사용에서 Graviton(ARM) 인스턴스로 이동하는 데 필요한 변경 사항을 안내합니다.

Lambda에서 런타임 설정 변경

에서 런타임 설정을 전환하는 것이 좋습니다 AWS Lambda. 자세한 내용은 Lambda 설명서의 런타임 환경 수정을 참조하세요. 는NET 컴파일된 언어이므로 빌드 프로세스를 따라 이 작업을 수행해야 합니다. 이 작업을 수행하는 방법의 예는 의NET Graviton에서 섹션을 참조하세요 GitHub.

컨테이너

컨테이너화된 워크로드의 경우 다중 아키텍처 컨테이너 이미지를 생성합니다. Docker 빌드 명령에서 여러 아키텍처를 지정하여 이 작업을 수행할 수 있습니다. 예:

docker buildx build -t "myImageName:latest" --platform linux/amd64,linux/arm64 --push .

와 같은 도구를 사용하여 빌드를 오케스트레이션 AWS Cloud Development Kit (AWS CDK) 할 수도 있습니다. https://aws.amazon.com/blogs/devops/build-and-deploy-net-web-applications-to-arm-powered-aws-graviton-2-amazon-ecs-clusters-using-aws-cdk/ Docker의 예제는 Docker 설명서의 Docker Desktops를 사용하여 Arm 및 x86에 대한 다중 아치 이미지 구축을 참조하세요.

Amazon EC2

x86/x64ARM에서 로 마이그레이션하려면 컴파일 단계에서 ARM 아키텍처를 대상으로 지정합니다. Visual 스튜디오에서 ARM64 를 생성할 수 있습니다CPU. 지침은 Microsoft 설명서의 Arm64 및 기타 플랫폼을 대상으로 프로젝트를 구성하려면을 참조하세요.

를NET 사용하는 경우 ARM 시스템에서 빌드를 실행CLI하면 Graviton 호환 빌드가 생성됩니다. 데모를 보려면 에서 Arm64 on AWS Graviton2를 사용한 Accelerate .NET 6 성능을 Arm64 시청하세요 YouTube. 종속성 문제로 인해 컴파일 시간 오류가 발생하여 개별적으로 해결할 수 있습니다. 종속성에 대한 ARM 라이브러리가 있는 한 전환은 비교적 간단해야 합니다.

추가 리소스