В 2021 году предприятиям является обычная практика для использования модели ценообразования с оплатой как-вы-выухой/Использование. Это ничем не отличается с Amazon. Это также главная причина, по которой эта статья является таким важным чтением для всех тех, кто хочет сократить свои затраты на Lambda AWS.
В этой статье мы рассмотрим некоторые действенные стратегии для оптимизации стоимости, связанных с нашим использованием AWS Lambda.
Один из Основные причины Для выбора переезда в облако способность снизить затраты. Важно оптимизировать, сколько вы тратите, поэтому вы платите только за то, что вам нужно, и только тогда, когда вам это нужно. Оптимизация затрат поможет вашей организации получить максимальную отдачу от ваших инвестиций, помогая удовлетворить спрос и потенциал, используя самые экономически полезные варианты, которые может предложить AWS.
Оптимизация затрат позволяет вам решить, сколько, когда и в каких случаях вы оплатите предоставленный вам услугу. AWS позволит вам легко выбрать правильный размер для вашего сервиса и использовать размер памяти в зависимости от того, сколько вам нужно.
AWS Lambda использует платежную платежную модель, где вам выставляются счета только за время, когда ваши функции выполняют. Чем больше работает ваша функция, тем больше вы платите. Эта модель навсегда меняет взаимосвязь между кодом приложения и затратами на инфраструктуру. Аппаратное обеспечение автоматически обеспечивается, когда это необходимо, и выставлено соответствующим образом. Нет необходимости переутомления серверов, чтобы справиться с пиковой нагрузкой.
В результате традиционные инструменты, предназначенные для мониторинга использования ресурсов, не имеют практического использования. Вместо этого необходимо отслеживать метрики на уровне приложений, такие как время отклика, использование памяти и размер партии для контроля затрат на инфраструктуру. Чтобы выразить это несколькими словами, затраты на инфраструктуру и производительность приложений тесно связаны.
Это может выглядеть просто, но здесь есть большой риск. Поскольку AWS Lambda очень дешево для начала, он заманивает разработчиков, чтобы забыть о затратах на инфраструктуру на этапе разработки. В конце месяца вы в конечном итоге получите неприятный сюрприз в виде значительного счета.
Для каждой функции Lambda вы можете установить максимальный размер памяти и максимальное время выполнения функции. На данный момент имейте в виду, что максимальный размер памяти влияет на выделенную мощность обработки (ЦП). Чем больше памяти вы предоставляете, тем больше процессора получает ваша функция.
Функции Lambda работают только при запуска, и Amazon использует несколько индикаторов для расчета стоимости выполнения вашей функции Lambda:
- Количество казней
- Продолжительность в миллисекундах
- Размер памяти — Значение, установленное в конфигурации функции.
Для каждого вызова продолжительность и размер памяти умножаются для создания блока, называемого GB-SEC. Хотя это может показаться простым, практика показала, что GB-SEC не является очень интуитивной концепцией. Чтобы помочь вам получить представление о затратах на вашу функцию, попробуйте этот калькулятор затрат Lambda AWS.
Чтобы подобрать ваш аппетит, Amazon предоставляет ежемесячный бесплатный уровень 400 000 ГБ-секунды, но вы скоро узнаете, что ваша AWS Lambda будет стоить вам много денег, если вы не оптимизируете свои затраты в начале процесса разработки.
Для лучшего обзора вы можете использовать такие инструменты, как Dashbird Инструмент отслеживания стоимости функции AWS Lambda Это позволит вам контролировать стоимость ваших лямбдов в режиме реального времени с подробной информацией. Таким образом, вы всегда будете на вершине того, сколько вы тратите на эту услугу.
Чтобы начать оптимизацию ваших затрат на Lambda AWS, вам нужно в первую очередь настроить систему мониторинга. Amazon автоматически отправляет журналы в Cloudwatch , где вы можете просмотреть основные показатели. Но CloudWatch не хорош в предоставлении ключевых данных о выполнении ваших функций. Здесь приходит Dashbird, чтобы помочь, предоставляя показатели временных рядов для подсчета вызовов, продолжительности, использования памяти и затрат. Для более глубокого сравнения между CloudWatch и Dashbird Server Server Monitoring см. Здесь Анкет
Проекты программного обеспечения постоянно меняются, что делает оптимизацию затрат движущейся целью. По этой причине важно иметь надлежащий мониторинг и предупреждение, когда наша финансовая политика не будет выполнена, чтобы мы могли действовать на эти инциденты и исправить их, прежде чем они станут финансовым кошмаром.
AWS предлагает предупреждения о расходах и информацию о расходах, но не на гранулярном уровне функции Lambda.
С такими услугами, как Решетка , вы можете установить пользовательские политики для одной или нескольких функций с очень детальными деталями. Пример ниже будет отправлять сообщение по электронной почте и слабым, когда выбранные функции стоят более 10 долларов за последний час.
Не используйте функции Lambda для простых преобразований. Если вы строите API с Appsync или API -шлюзом, это часто бывает. Вы внедрили аутентификацию Cognito и пользовательские авторизаторы в своем шлюзе API и теперь просто хотите подтолкнуть данные непосредственно в восходящие услуги, такие как DynamoDB или SQS.
API Gateway поддерживает язык шаблона скорости, простой язык программирования, который может преобразовать объекты JSON API -шлюза. Они не могут делать все, но они тоже не имеют Холодные начальники и не несут дополнительных затрат, как это делают лямбда.
Имейте в виду, что оптимизация с VTL не слишком проста, но это может стоить вашего времени, если вы часто называете конечными точками, которые не требуют всей силы Lambda. Ричард Бойд, инженер по связям с разработчиками в AWS, написал немного по этой теме Анкет
Кэширование идет рука об руку с минимизацией использования функций Lambda. Когда вам нужно использовать один, постарайтесь убедиться, что он называется только тогда, когда это действительно необходимо.
Для некоторых функций Lambda, как те, которые называются из API Gateway , Appsync, или Lambda@Edge Functs, вызванные CloudFront, вы можете кэшировать ответы. Функция, которая не вызвана, не стоит вам денег, поэтому убедитесь, что вы не забиваете свою функцию лямбды, если ее ответы не часто меняются.
Функции Lambda@Edge дороже, чем обычные функции Lambda. Тем не менее, если вы звоните им только один раз в несколько минут и доставляете кэшированный ответ на тысячи пользователей в секунду, вы можете значительно сократить свой счет.
Одним из преимуществ кэширования являются более дешевые ответы, потому что вы не платите за лямбду. Другое преимущество заключается в том, что вы увидите более быстрые ответы, потому что вы удалите дополнительный способ, которым запрос должен будет путешествовать, если бы Lambda был задействован.
В деловом смысле это также может повысить доход, предоставив лучший опыт для конечного пользователя. Оптимизация затрат Lambda означает, что вы не только снижаете затраты, но и реализации могут в конечном итоге привести к увеличению дохода.
Чтобы включить кэширование для API Gateway, развернутого с помощью AWS SAM, вы можете использовать атрибут MethodSettings.
Вы можете использовать *
подстановочный знак в Httpmethod
и Ресурспепет
Чтобы настроить кэширование для нескольких маршрутов в вашем API.
Для копируемых фрагментов кода, Смотрите оригинальную статью, опубликованную здесь Анкет
Пакетные данные — хорошая идея для функций Lambda, которые работают в фоновом режиме и не связаны напрямую с взаимодействиями с пользователями.
Одним из самых упускаемых из виду аспектов является то, что для каждого одновременного исполнения случаются холодные отрядки AWS. Следовательно, в качестве первого шага в оптимизации ваших затрат убедитесь, что функции выполняются с наилучшей частотой, чтобы избежать максимально возможных запуска.
Это может быть достигнуто с помощью одной из многих услуг AWS, таких как SQS или кинезис. Не звоните своей функции напрямую, но отправляйте данные в очередь, чтобы соответствующим образом отстранить ее.
Цель всей вашей функции AWS Lambda-быть маленьким и специально построенным. Если функция Lambda делает только одну вещь, вам нужно только оптимизировать этот конкретный вариант использования. Когда вы получаете несколько случаев использования для одной функции, вы можете в конечном итоге поставить компромиссы, чтобы удовлетворить их все.
Размер функции также является частью затрат. Время выполнения Lambda должно получить код вашей функции от S3 или реестра изображений Docker в каждом холодном старте. Скачание одного гигабайта занимает Lambda гораздо больше времени, чем загрузка одного мегабайта. Это время ожидания, за которое вы оплачиваете.
Поскольку функции Lambda в 2021 году выставляются с выставлением с выставлением счетов на один миллисекунд, теперь вы можете сэкономить деньги на каждую миллисекунду, которую ваша функция работает быстрее. Таким образом, подведение кода лямбда до абсолютных оснований может увеличить ваши сбережения для функций, которые работают очень часто.
После того, как вы позаботились о том, чтобы вы называли функции только при необходимости, и сохранили их все маленькие и специально построенные, вы можете контролировать свои стоимость AWS, выполнив несколько простых шагов.
Во -первых, мы упомянули выбор подходящего размера, что означает, что с AWS вы можете установить память и, в свою очередь, ЦП, ваших функций AWS Lambda, чтобы соответствовать именно необходимым возможностям, которые вам нужны.
Там нет необходимости переоценивать или идти на компромиссы. Адаптируйте свои услуги для удовлетворения фактических потребностей бизнеса в любой момент времени, без каких -либо штрафов или скрытых сборов. AWS позволяет вам выбирать между услугами, которые соответствуют вашим критериям, и, хотя ваши требования меняются, довольно легко переключиться на опцию обслуживания, который будет охватывать ваши новые требования. AWS также позволяет выполнять несколько вариантов обслуживания одновременно, помогая вам снизить затраты при одновременном поддержании оптимальной производительности.
Другим способом будет использование пошаговых функций, чтобы найти оптимальную емкость памяти для ваших функций. Вот модуль с открытым исходным кодом Построен старшим. Технический Евангелист Алекс Касалбони из AWS.
AWS не позволяет нам настраивать процессор для функций Lambda, но чем больше памяти мы выделяем, тем больше вычислительной мощности мы получаем … и чем быстрее наши функции выполнят наш код! Это может фактически снизить общую стоимость выполнения.
Однако в этой стратегии есть несколько предостережений. Например: более 2 ГБ оперативной памяти Lambda выделяет второй VCPU на функцию. В этом случае однопоточные программы не увидят каких-либо усилий скорости от увеличения памяти. Взгляните на эту статью, если вы хотите узнать больше о том, как работают память и распределение памяти Lambda под капюшоном.
Ниже приводится иллюстрация стратегии: когда мы увеличиваем память примерно с 1,8 ГБ до 2 ГБ, она уменьшила общую продолжительность счетов с 600 до 500 миллисекунд. Несмотря на то, что стоимость памяти выше, более низкая продолжительность компенсирует дополнительную стоимость памяти, что делает эффективное снижение затрат на 5%. И у нас даже есть дополнительная выгода от более низкой задержки.
Мы опубликовали образец ориентира на этот репозиторий GitHub , что вы можете подключить к любой из ваших функций Lambda, чтобы эмулировать запросы и найти сладкое место памяти.
Внутренняя память Lambda может использоваться в качестве дешевого и быстрого механизма кэширования. Все, что загружено вне функции обработчика, остается в памяти для следующих вызовов.
Мы можем сохранить копию информации, полученной из базы данных внутри глобальной переменной, чтобы данные могли быть получены из внутренней памяти Lambda в будущих запросах.
Эта статья Мы опубликовали, иллюстрируют это с несколькими основными примерами и охватывают несколько пунктов, на которые обращает внимание при реализации этой стратегии.
Опять же, это наиболее важно для синхронных звонков Lambda, которые случаются с API Gateway.
Если вы называете функцию лямбды непосредственно из функции Lambda, вы платите за них обоих. Первый будет ждать, пока второй закончится, и вы будете платить за время ожидания.
Если вам нужно вызовать несколько функций Lambda, завершите синхронную функцию API Gateway Lambda рано и начните запускать другие функции с некоторой дополнительной службой.
У AWS есть несколько услуг в очереди, чтобы предложить. SQS, SNS, Kinesis и Шаг функций некоторые из них. Когда выполняется тяжелая задача, вы можете уведомить клиентов с помощью веб -питания или электронной почты.
Lambda отправит все данные регистрации в журналы CloudWatch. Эта услуга полезна, но не бесплатна. Если вы входите в силу, затраты на облачные часы могут в конечном итоге съесть ваши сбережения Lambda.
Используйте настраиваемые уровни журнала для ваших функций Lambda, чтобы вы могли отлаживать их, когда это необходимо, но не входите в систему нерасково -разница данных постоянно. Фреймворки ведения журнала позволяют динамически настраивать уровни журнала.
Вы можете включить журналы доступа для AWS API-Gateway и Appsync, которые затем будут отправлены в журналы CloudWatch. Убедитесь, что вы отфильтровали поля запроса, которые вам не нужны.
Журналы CloudWatch сохраняют ваши журналы Lambda навсегда по умолчанию, но вы можете настроить его для отправки архивов журнала в Glacier S3, а затем удалить его из CloudWatch, чтобы сэкономить деньги.
И последнее, но не менее важное, вы можете настроить фильтрованные подписки, которые отправят ваши журналы в сторонние службы мониторинга, такие как Dashbird.
С правильным Система наблюдения без сервера На месте, ваша компания наверняка будет минимизировать риски, которые по своей сути поставляются с без серверных архитектур. У вас также будет способ управлять бюджетом, предсказуемо, чтобы соответствовать политике, которая требует обязательств на долгосрочной основе.
Просмотр единой функции Dashbird
Это будет включать в себя мониторинг, отслеживание, анализ и предупреждение использования вашего услуги. С помощью доверенного консультанта вы можете предоставить свои ресурсы, не отставая от наилучшей практики для повышения производительности и надежности системы.
Это также увеличит безопасность и даст вам возможности сэкономить деньги. CloudWatch-это вариант, который (в случае, если вы решите отключить непроизводственные функции) позволит вам соответствовать увеличению или сокращению спроса. Он будет собирать и отслеживать метрики, контролировать файлы журнала и автоматически реагировать на любые изменения, внесенные в ваши ресурсы AWS.
Но это не дает вам полного понимания вашей системы или мгновенных предупреждений, когда все сломается. Для этого вам нужен инструмент, который будет предупредить вас мгновенно, когда ваша система плохо ведет себя. Dashbird — это такой инструмент, который дает вам Понимание ваших функций Lambda , все в одном месте.
Есть и другие способы снизить стоимость и оптимизировать ее для ваших собственных потребностей. Решетка Исследователь затрат может помочь вам в анализе использования и стоимости. Это великолепный инструмент, который позволяет использовать набор отчетов по умолчанию для определения драйверов затрат и тенденций использования. Собственная система отслеживания затрат Dashbird, которую вы можете увидеть в масштабе по масштабе или для для функции, также дает вам в режиме реального времени презентацию того, сколько стоят ваши услуги.
Существуют различные варианты, и стратегии для снижения затрат и оптимизации их для ваших собственных потребностей. Важная вещь, которую вам нужно понять, — это выяснить, какой из данных подходов наилучшим образом соответствует вашим личным потребностям. Узнав, что вам нужно, будет легче выбрать более индивидуальный способ снизить затраты.
Дальнейшее чтение:
Метрики AWS Lambda, которые вы должны контролировать
4 совета по настройке AWS Lambda для производства
Быстрые способы сократить стоимость вашего AWS Lambda
Оригинал: «https://dev.to/dashbird/reducing-aws-lambda-cost-tried-and-tested-strategies-4146»