Оптимізація AWS Lambda для зниження вартості та підвищення продуктивності

Безсерверні обчислення дозволяють розробникам зосередитися на написанні коду без необхідності управляти серверами. AWS Lambda є яскравим прикладом, пропонуючи простоту, масштабованість і економічність для розміщення функціоналу додатків. Функції Lambda автоматично масштабуются в залежності від попиту, зменшуючи витрати на обробку і пришвидшуючи розробку. Ви платите лише за використаний час обчислень, що вимірюється в мілісекундах, що робить Lambda ідеальним рішенням для змінних навантажень. Крім того, функції Lambda розподілені по кількох зонах доступності AWS, що забезпечує відмовостійкість і високу доступність.

Пам'ять та обчислювальна потужність

Потужність CPU, виділена для вашої функції Lambda, пропорційна кількості пам'яті, яку ви вибираєте. AWS Lambda автоматично розподіляє потужність CPU лінійно залежно від конфігурації пам'яті. Наприклад, функція з 256 МБ пам'яті матиме половину потужності CPU порівняно з функцією з 512 МБ пам'яті. Ви можете вибрати параметр від 128 МБ до 10240 МБ, і кожен з них надасть різну швидкість обчислень, що вплине на продуктивність вашого додатку.

Примітка: Ціни на AWS Lambda за мілісекунду для кожної конфігурації пам'яті можна знайти тут.

Залежно від обраної конфігурації, ваша програма буде працювати по-різному, що призведе до складної поведінки. Якщо ваш код працює швидше на більшій конфігурації пам'яті Lambda, це коштуватиме дорожче за мілісекунду, але вимагатиме менше часу обчислень. Це створює ситуацію, де найкраща конфігурація не є очевидною до проведення тестування.

pic

Зображення взято з https://github.com/alexcasalboni/aws-lambda-power-tuning

Як видно з дослідження випадку на зображенні вище, найкраща конфігурація вартості та продуктивності досягається для функції Lambda з 1536 МБ пам'яті. У порівнянні з початковою конфігурацією 128 МБ, Lambda виконується швидше та коштує менше.

Оптимізація вашого коду Lambda

Оптимізація вартості та продуктивності повинна виконуватись для кожного нового коду, який ви хочете розмістити як функцію Lambda, щоб знайти найкращу конфігурацію. Робити це вручну — довга та виснажлива задача, але на щастя, репозиторій AWS Lambda Power Tuning автоматизує цей процес. Код розгортає AWS Step Function, яку можна прив'язати до вашої цільової функції Lambda через її ARN, і машина станів викликає її, знаходячи найкращу конфігурацію. Це робить інструмент незалежним від мови програмування і зручним у використанні.

pic

Зображення взято з https://github.com/alexcasalboni/aws-lambda-power-tuning

Як використовувати інструмент Power Tuning

Примітка: Репозиторій надає можливість розгортання через AWS SAM CLI, що можна знайти тут, але ми будемо використовувати Terraform.

Розгортання інструменту оптимізації через Terraform

Переконайтеся, що ви клонували репозиторій AWS Lambda Power Tuning.

  1. Перейдіть до папки terraform.

  2. Змініть файл variables.tf на ваш AWS-обліковий запис та регіон

variable "account_id" {  
default = "123456789101"  
}  

variable "aws_region" {  
default = "eu-west-1"  
}
  1. Розгорніть машину станів за допомогою IaC
terraform init  
terraform apply

Виконання машини станів

Після розгортання IaC Terraform ви можете перейти до Step Functions Console і знайти нову функцію машини станів.
Надайте налаштування виконання, вказавши Lambda, яку ви хочете оптимізувати, та різні конфігурації, які ви хочете протестувати, за допомогою наступного JSON:

{  
 "lambdaARN": "your-lambda-function-arn",  
 "powerValues": [128, 256, 512, 1024, 1536, 2048, 3008],  
 "num": 50,  
 "payload": {},  
 "parallelInvocation": true,  
 "strategy": "cost"  
}

Примітка: Ви можете знайти всі доступні поля для конфігураційного JSON тут.

Натисніть "Start Execution", щоб розпочати. Результати покажуть оптимальну конфігурацію пам'яті та середню вартість за виконання.

Останні слова

Примітка: Кредити надаються Alex Casalboni (@alexcasalboni). Велике спасибі за надання цього чудового інструменту для громади розробників безкоштовно.

Оптимізація функцій AWS Lambda для зниження вартості та підвищення продуктивності є критично важливою для ефективних безсерверних додатків. Обираючи конфігурації пам'яті та використовуючи інструменти, як AWS Lambda Power Tuning, ви можете досягти значної економії та покращення продуктивності. Завжди тестуйте різні конфігурації, щоб знайти оптимальне налаштування для вашого конкретного навантаження. Успіхів в оптимізації!

Якщо у вас є питання або відгуки, звертайтеся через мій вебсайт, або додавайте мене на LinkedIn: https://www.linkedin.com/in/penkow/ і не соромтеся звертатися :)!

Перекладено з: Optimizing AWS Lambda for Cost and Performance

Leave a Reply

Your email address will not be published. Required fields are marked *