기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
서버리스 .NET 고려
개요
서버리스 컴퓨팅은 애플리케이션을 빌드하고 배포하는 데 널리 사용되는 접근 방식이 되었습니다. 기본적으로 서버리스 접근 방식이 최신 아키텍처를 빌드할 때 제공하는 확장성과 민첩성 때문입니다. 그러나 일부 시나리오에서는 서버리스 컴퓨팅의 비용 영향을 고려하는 것이 중요합니다.
Lambda는 개발자가 전용 서버 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 플랫폼입니다. Lambda는 인프라 비용을 절감하려는 .NET 개발자에게 특히 매력적인 옵션입니다. .NET 개발자는 Lambda를 통해 확장성이 뛰어나고 잠재적으로 비용 효율적인 애플리케이션을 개발하고 배포할 수 있습니다. 개발자가 서버리스 접근 방식을 사용하면 더 이상 애플리케이션 요청을 처리하기 위해 서버를 프로비저닝하지 않아도 됩니다. 대신 개발자는 온디맨드 방식으로 실행되는 함수를 생성할 수 있습니다. 이 경우 가상 머신을 실행, 관리 및 확장하는 것보다 서버리스 접근 방식이 더 확장 가능하고 관리 가능하며 비용 효율적일 수 있습니다. 따라서 사용률이 적은 리소스나 서버 유지 관리 비용에 대해 걱정할 필요 없이 애플리케이션에서 사용하는 리소스에 대해서만 비용을 지불하면 됩니다.
개발자는 최신 교차 플랫폼 .NET 버전을 사용하여 빠르고 효율적이며 비용 효율적인 서버리스 애플리케이션을 빌드할 수 있습니다. .NET Core 이상 버전은 무료 오픈 소스 프레임워크로, 이전 .NET Framework 버전보다 서버리스 플랫폼에서 실행하는 데 더 적합합니다. 이를 통해 개발자는 개발 시간을 줄이고 애플리케이션 성능을 높일 수 있습니다. 또한 최신 .NET은 C# 및 F#을 비롯한 다양한 프로그래밍 언어를 지원합니다. 이러한 이유로 클라우드에서 최신 아키텍처를 빌드하려는 개발자에게 매력적인 옵션입니다.
이 섹션에서는 Lambda를 서버리스 옵션으로 사용하여 비용을 절감하는 방법을 설명합니다. Lambda 함수의 실행 프로파일을 미세 조정하고, Lambda 함수의 메모리 할당을 적정 규모로 조정하며, 네이티브 AOT
비용 영향
비용을 절감할 수 있는 정도는 할당된 메모리 양과 각 함수의 기간 외에도 서버리스 함수가 실행할 실행 횟수를 비롯한 여러 요인에 따라 달라집니다.는 매월 100만 개의 무료 요청과 매월 400,000GB 초의 컴퓨팅 시간을 포함하는 프리 티어를 AWS Lambda 제공합니다. 이러한 프리 티어 한도에 도달하거나 근처의 워크로드에 대한 월별 비용을 크게 줄일 수 있습니다.
Lambda 함수를 대상으로 하는 로드 밸런서를 사용할 경우 추가 비용이 발생할 수도 있습니다. 이는 Lambda 대상에 대해 로드 밸런서가 처리하는 데이터의 양으로 계산됩니다.
비용 최적화 권장 사항
Lambda 함수의 적정 규모 조정
적정 규모 조정은 .NET 기반 Lambda 함수의 비용 최적화를 위한 필수 사례입니다. 이 프로세스에는 코드를 변경하지 않도고 성능과 비용 효율성의 균형을 맞추는 최적의 메모리 구성을 식별하는 작업이 포함됩니다.
128MB에서 최대 10,240MB 범위의 Lambda 함수에 대한 메모리를 구성하여 간접 호출 중에 사용할 수 있는 vCPU의 양도 조정합니다. 이를 통해 메모리 또는 CPU 바인드 애플리케이션이 실행 중에 추가 리소스에 액세스할 수 있으므로 간접 호출 지속 시간과 전체 비용이 잠재적으로 줄어듭니다.
그러나 .NET 기반 Lambda 함수에 대한 최적의 구성을 식별하는 작업은 특히 변경이 빈번한 경우 시간이 많이 걸리는 수동 프로세스일 수 있습니다. AWS Lambda
Power Tuning 도구
예를 들어 .NET 기반 Lambda 함수의 메모리를 늘리면 성능에 영향을 주지 않으면서 총 간접 호출 시간이 개선되고 비용이 절감될 수 있습니다. 함수에 대한 최적의 메모리 구성은 서로 다를 수 있습니다. AWS Lambda Power Tuning 도구는 각 함수에 대해 가장 비용 효율적인 구성을 식별하는 데 도움이 될 수 있습니다.
다음 예제 차트에서는 이 Lambda 함수의 메모리가 증가함에 따라 총 간접 호출 시간이 개선됩니다. 이로 인해 함수의 원래 성능에 영향을 주지 않으면서 총 실행 비용이 절감됩니다. 이 함수의 경우 함수에 대한 최적의 메모리 구성은 512MB입니다. 리소스 사용률이 각 간접 호출의 총 비용에 가장 효율적이기 때문입니다. 이는 함수마다 다르며 Lambda 함수에서 도구를 사용하면 적정 규모 조정의 이점을 얻을 수 있습니다.
새 업데이트가 릴리스될 때 통합 테스트의 일환으로 이 연습을 정기적으로 수행하는 것이 좋습니다. 자주 업데이트되지 않는 경우 이 연습을 주기적으로 수행하여 함수가 조정되고 규모가 올바른지 확인합니다. Lambda 함수에 적절한 메모리 설정을 식별한 후에는 프로세스에 적정 규모 조정을 추가할 수 있습니다. AWS Lambda Power Tuning 도구는 새 코드를 릴리스하는 동안 CI/CD 워크플로에서 사용할 수 있는 프로그래밍 방식 출력을 생성합니다. 이를 통해 메모리 구성을 자동화할 수 있습니다.
AWS Lambda
Power Tuning 도구
Lambda는 .NET 애플리케이션을 사전 컴파일할 수 있는 네이티브 AOT도 지원합니다. 이를 통해 .NET 함수의 실행 시간을 줄여 비용을 절감할 수 있습니다. 네이티브 AOT 함수 생성에 대한 자세한 내용은 Lambda 설명서의 네이티브 AOT 컴파일을 지원하는 .NET 함수를 참조하세요.
유휴 대기 시간 방지
Lambda 함수 지속 시간은 요금 청구 계산에 사용되는 하나의 차원입니다. 함수 코드가 차단 직접 호출을 수행하면 응답 수신을 기다리는 시간에 대한 요금이 청구됩니다. 이 대기 시간은 Lambda 함수가 함께 체이닝되거나 함수가 다른 함수의 오케스트레이터 역할을 수행할 때 늘어날 수 있습니다. 배치 작업 또는 주문 전송 시스템과 같은 워크플로가 있는 경우 관리 오버헤드가 추가됩니다. 또한 최대 Lambda 제한 시간인 15분 내에 모든 워크플로 로직 및 오류 처리를 완료하지 못할 수 있습니다.
함수 코드에서 이 로직을 처리하는 대신 워크플로의 오케스트레이터로 AWS Step Functions
Graviton 기반 함수로 이동
이제 차세대 Graviton2 프로세서로 구동되는 Lambda 함수가 정식 출시되었습니다. ARM 기반 프로세서 아키텍처를 사용하는 Graviton2 함수는 다양한 서버리스 워크로드에 대해 20% 저렴한 비용으로 최대 19% 더 나은 성능을 제공하도록 설계되었습니다. 지연 시간이 짧고 성능이 향상된 Graviton2 프로세서로 구동되는 함수는 미션 크리티컬 서버리스 애플리케이션을 구동하는 데 적합합니다.
Graviton 기반 Lambda 함수로 마이그레이션하는 방법은 Lambda 비용을 최적화하려는 .NET 개발자에게 비용 효율적인 옵션일 수 있습니다. Graviton 기반 함수는 기존 x86 프로세서 대신 ARM 기반 프로세서를 사용합니다. 이를 통해 성능을 저하시키지 않고 비용을 크게 절감할 수 있습니다.
Graviton 기반 함수로 이전하면 몇 가지 이점이 있지만 고려해야 할 몇 가지 과제와 고려 사항도 있습니다. 예를 들어 Graviton 기반 함수는 Amazon Linux 2를 사용해야 하지만, 이는 일부 .NET 애플리케이션과 호환되지 않을 수 있습니다. 또한 ARM 기반 프로세서와 호환되지 않는 서드 파티 라이브러리 또는 종속성과의 호환성 문제가 있을 수 있습니다.
.NET Framework 애플리케이션을 실행 중이고 Lambda를 사용하여 서버리스를 활용하려는 경우 Porting Assistant for .NET
다음 차트에서는 주요 수치를 계산하는 함수에 대한 x86 및 ARM/Graviton2 아키텍처 결과를 비교합니다.
함수는 단일 스레드를 사용합니다. 메모리가 1.8GB로 구성된 경우 두 아키텍처에서 최소 지속 시간이 보고됩니다. 무엇보다 Lambda 함수는 2개 이상의 vCPU에 액세스할 수 있지만 이 경우 함수는 추가 전력을 사용할 수 없습니다. 동일한 이유로 비용은 최대 1.8GB의 메모리에서 안정적입니다. 메모리가 많을수록 이 워크로드에 대한 추가 성능 이점이 없기 때문에 비용은 증가합니다. Graviton2 프로세서는 이 컴퓨팅 집약적 함수의 성능을 높이고 비용을 절감합니다.
Graviton에서 ARM 기반 프로세서를 사용하도록 함수를 구성하려면 다음을 수행합니다.
-
에 로그인한 AWS Management 콘솔 다음 Lambda 콘솔
을 엽니다. -
함수 생성을 선택합니다.
-
함수 이름에 이름을 입력합니다.
-
런타임에서 .NET 6(C#/PowerShell)을 선택하세요.
-
아키텍처에서 amd64를 선택하세요.
-
필요한 추가 구성을 수행한 다음 함수 생성을 선택하세요.
추가 리소스
-
대상으로서 Lambda 함수(AWS 문서)
-
를 사용하여 AWS Lambda 비용 및 성능 최적화 AWS Compute Optimizer
(AWS 컴퓨팅 블로그) -
AWS Lambda 비용 최적화 - 1부
(AWS 컴퓨팅 블로그) -
AWS Lambda 비용 최적화 - 2부
(AWS 컴퓨팅 블로그) -
.NET 7을 AWS Lambda 사용하여에서 서버리스 .NET 애플리케이션 빌드
(AWS 컴퓨팅 블로그)