Что такое AWS Lambda? Бессерверные вычисления для инженеров-программистов

Бессерверные и облачные вычисления получили большое распространение в последние годы, превратившись в самостоятельные отрасли, причем AWS Lambda лидирует.

Компании переходят на бессерверную архитектуру, чтобы сократить время выхода на рынок и сократить операционные затрат, но для разработчиков преимущество заключается в возможности переложить бремя управления инфраструктурой на бессерверные платформы, чтобы вы могли сосредоточиться на создании еще более совершенных приложений.

В этой статье, мы рассмотрим:

  • Что такое AWS Lambda?
  • Концепции AWS Lambda
  • Когда использовать AWS Lambda
  • Когда следует избегать AWS Lambda
  • Основные части AWS
  • Как начать работу с AWS Lambda
  • Лучшие практики для AWS Lambda
  • Что узнать дальше

Разверните свой собственный приложения в облаке

Освойте новые инструменты Severless с помощью практических уроков по AWS Lambda.

Запуск бессерверных приложений с AWS Lambda

Что такое AWS Lambda

AWS Lambda — это сервис бессерверных вычислений или FaaS (функция как услуга), предоставляемый Amazon Web Services. Он поддерживает широкий спектр потенциальных триггеров, включая входящие HTTP-запросы, сообщения из очереди, электронные письма клиентов, изменения в записях базы данных, аутентификацию пользователей, сообщения, поступающие в веб-сокеты, синхронизацию клиентских устройств и многое другое. AWS Lambda также помогает сосредоточиться на основном продукте и бизнес-логике вместо управления контролем доступа операционной системы (ОС) и т. Д.

Поскольку разработчики приложений не упаковывают и не распространяют серверный код для управления сетевой сокет в AWS Lambda, их приложения бессерверны. Модное слово «бессерверный» немного вводит в заблуждение, поскольку в бессерверной среде все еще есть серверы.

Языки, поддерживаемые AWS Lambda

AWS Lambda поддерживает:

  • Java
  • Go
  • PowerShell
  • Node.js
  • C #
  • Python
  • Ruby

AWS также предоставляет API времени выполнения, который позволяет вы можете использовать любые дополнительные языки программирования для использования ваших функций.

Также рекомендуется проверить устаревшие среды выполнения, чтобы убедиться, что вы используете наиболее обновленную среду выполнения. Допустимые среды выполнения для некоторых из вышеперечисленных языков: Java 11, Python 3.8 и Node.js 12.x. Некоторые устаревшие среды выполнения включают: Node.js 8.10 и Python 2.7..

Что такое бессерверные приложения

Бессерверные приложения на самом базовом техническом уровне — это программное обеспечение, которое работает в среде, в которой хостинг-провайдер полностью отвечает за инфраструктурные и операционные задачи. К ним относятся получение сетевых запросов, масштабирование вычислительной инфраструктуры по запросу, мониторинг и восстановление.

Вместо контейнеров, связывающих бизнес-логику приложения с операционной системой, они объединяют сетевые серверы (например, веб-серверы или серверы сообщений). брокеры) и код бизнес-логики. S

Приложения без ошибок должны только предоставить код, который должен запускаться при возникновении события, и настроить триггеры в среде выполнения для вызова этого кода.

В Amazon Облако веб-сервисов, среда выполнения для бессерверного кода называется AWS Lambda.

События, запускающие AWS Lambda

  • HTTP-запросы через Amazon API Gateway
  • Изменения объектов в корзинах Amazon S3
  • Обновления таблицы DynamoDB
  • Переходы между состояниями в AWS Step Functions

Как работает AWS Lambda?

Клиенты отправляют данные в Lambda. Клиентами могут быть все, кто отправляет запросы в AWS Lambda. Это может быть приложение или другие сервисы Amazon.

Lambda принимает запросы и, в зависимости от размера, количества или объема данных, запускается в определенном количестве контейнеров. Затем запросы передаются в контейнер для обработки. Контейнер содержит код, предоставленный пользователем для удовлетворения запроса.

С увеличением количества запросов создается все большее количество контейнеров. Если количество запросов уменьшается, количество контейнеров также уменьшается.

Концепции AWS Lambda

Функция

Функция — это ресурс, который запускает ваш код в AWS Lambda. Функции содержат код, обрабатывающий события, и среду выполнения, которая передает запросы и ответы между Lambda и функцией. Вы предоставляете код и можете использовать предоставленные среды выполнения или создать свои собственные.

Среда выполнения

Среды выполнения Lambda позволяют запускать функции на разных языках в той же базовой среде исполнения. Вы настраиваете свою функцию для использования среды выполнения, соответствующей вашему языку программирования.

Event

Событие — это документ в формате JSON, содержащий данные для функция для обработки. Среда выполнения Lambda преобразует событие в объект и передает его в код вашей функции. Когда вы вызываете функцию, вы определяете структуру и содержание события. Когда сервис AWS вызывает вашу функцию, он определяет событие..

Параллелизм

Параллелизм — это количество запросов, которые ваша функция обслуживает в любой момент времени. Когда ваша функция вызывается, Lambda подготавливает ее экземпляр для обработки события. Когда код функции завершает работу, он может обработать другой запрос. Если функция вызывается снова во время обработки запроса, создается другой экземпляр, что увеличивает параллелизм функции.

Триггер

Триггер — это ресурс или конфигурация, вызывающая лямбда-функцию. Сюда входят сервисы AWS, которые можно настроить для вызова функции, приложения, которые вы разрабатываете, и сопоставления источников событий.

Уровни Lambda

Уровни Lambda являются важным механизмом распространения для библиотек, пользовательских сред выполнения и других важных зависимостей функций. Этот компонент AWS также помогает управлять кодом функции разработки отдельно от неизменного кода и ресурсов, которые он использует.

Продолжайте обучение.

Изучите AWS Lambda, не просматривая видео или документацию. Текстовые курсы Educative легко просматривать и содержат среду программирования в реальном времени, что делает обучение быстрым и эффективным.

Запуск бессерверных приложений с AWS Lambda

Когда использовать AWS Lambda

Увеличение пропускной способности

Lambda отлично подходит для случаев, когда пропускная способность критична, а задачи хорошо распараллеливаются.

Типичные веб-запросы для динамического контента, включая доступ к серверной базе данных или некоторые манипуляции с данными пользователя, обычно не выполняются. в эту категорию. Автоматические ответы по электронной почте или чат-боты также являются хорошим примером.

Любой отдельный запрос, занимающий на несколько сотен миллисекунд больше среднего, не будет заметен обычным пользователям, и Lambda гарантирует, что все будут обслужены относительно быстро, независимо от того. пиков трафика.

Разделенные, более длительные задачи

Более длительные вычислительные задачи по требованию, которые могут выполняться менее чем за 15 минут или могут разделение на независимые сегменты, которые занимают менее 15 минут, также являются хорошим вариантом использования Lambda.

В этих случаях несколько сотен миллисекунд, необходимых для запуска Lambda-функций, не будут иметь большого значения. разница во времени обработки. Хорошими примерами задач, попадающих в эту категорию, являются преобразование формата файлов, создание превью или миниатюр и создание периодических отчетов.

Задачи высокой доступности

Задачи, требующие высокой доступности и хорошей операционной инфраструктуры, но не требующие гарантии задержки, также являются отличным вариантом использования AWS Lambda. Сюда входят уведомления о платежах от внешних систем, например PayPal или Stripe.

Эти уведомления должны обрабатываться надежно и относительно быстро, они могут иметь непредсказуемые шаблоны трафика, и все же не критично, если они закончил за одну-две секунды.

Когда следует избегать использования AWS Lambda

Есть четыре важных технических ограничения, которые необходимо учитывать при оценке должно ли что-то работать в Lambda:

  • Нет привязки к сеансу
  • Недетерминированная задержка
  • Выполнение с ограничением по времени до 15 минут
  • Нет прямого контроля над вычислительной мощностью

Задачи с гарантированной задержкой

Лямбда — это в настоящее время не подходит для задач, требующих гарантированной задержки, например, в системах высокочастотной торговли или системах управления почти в реальном времени.

Если задача должна быть обработана менее чем за 10 или 20 мс, она Намного лучше создать зарезервированный кластер и иметь службы, напрямую подключенные к брокеру сообщений.

Долгосрочные задачи

Еще одна категория, в которой Lambda не работает. Сейчас подходят задачи, которые потенциально могут выполняться дольше 15 минут. Одним из ярких примеров является перекодирование видео для больших файлов.

Подключение к сокету и использование непрерывного потока данных также не является хорошим вариантом использования Lambda из-за ограничений по времени.

Задачи, требующие высокой вычислительной мощности

Третья категория, в которой вам не следует использовать Lambda прямо сейчас, — это задачи, требующие огромной вычислительной мощности и координации.

Например, рендеринг видео. Подобные задачи лучше подходят для зарезервированной инфраструктуры с большим количеством процессоров (или даже графических процессоров).

Задачи, не требующие вычислений по запросу

Наконец, задачи, не требующие вычислений по требованию, такие как обслуживание статических веб-файлов, являются плохим вариантом использования Lambda. Теоретически можно использовать Lambda в качестве веб-сервера и отправлять изображения и файлы CSS клиентам, но это пустая трата денег.

Гораздо дешевле и быстрее использовать специализированный продукт для это, например, сеть доставки контента.

Основные части AWS

EC2

Amazon EC2 (Elastic Compute Cloud) — это IaaS (инфраструктура как услуга), которая предоставляет виртуализированные вычислительные ресурсы. Использование Amazon EC2 избавляет от необходимости инвестировать в оборудование заранее, поэтому вы можете быстрее разрабатывать и развертывать приложения.

S3

Amazon S3 (Simple Storage Service) — это облачный сервис хранения данных AWS. Он позволяет хранить и извлекать любой объем данных в любое время из любого места в Интернете.

CloudFront

CloudFront — это контент сетевой сервис доставки, который ускоряет распространение вашего статического и динамического веб-контента, такого как .html, .css, .js, и файлы изображений, среди ваших пользователей..

Amazon API Gateway

Amazon API Gateway — это сервис AWS для создания, публикации, обслуживания, мониторинга и защиты REST, HTTP и WebSocket. API любого масштаба.

SAM (модель бессерверного приложения)

Фреймворк с открытым исходным кодом для создания бессерверных приложений. Это набор продуктов, упрощающих разработку, тестирование и развертывание приложений с помощью AWS Lambda.

Одна часть SAM работает на машинах разработчиков и серверах сборки, помогая подготовиться к развертыванию. Другой аспект SAM выполняется в центрах обработки данных AWS в процессе развертывания.

AWS предлагает более 170 сервисов, но трудно сказать, какие из них лучше всего использовать .

Вот наше Краткое руководство по AWS по лучшим сервисам, выбранным настоящими разработчиками.

Как начать работу с AWS Lambda

  • Шаг 1

    Перейдите на их страницу входа. Если у вас нет учетной записи AWS, создайте ее. Затем найдите «Lambda» в разделе «Compute» и щелкните, чтобы открыть консоль AWS Lambda.

  • Шаг 2

    Выберите схему Lambda. В консоли AWS Lambda выберите «Создать функцию».

  • Шаг 3

    Настройте и создайте свою лямбда-функцию. Здесь вы вводите основную информацию о своей лямбда-функции (то есть такие вещи, как имя, роль и имя роли). Затем нажмите «создать функцию».

  • Шаг 4

    Вызвать функцию лямбда и проверить полученные результаты. Нажмите «Настроить тестовое событие» в верхнем правом раскрывающемся меню.

Рекомендации для AWS Лямбда

  • Когда VPC-включить лямбда-функцию

    Следует только включить ваши функции для доступа к VPC, когда вам нужно взаимодействовать с частным ресурсом, расположенным в частной подсети. Экземпляр RDS — хороший пример.

  • Развертывание общего кода на уровне Lambda (т. Е. AWS SDK)

    Если вы намереваетесь повторно использовать код более чем в одной функции, подумайте о создании уровня и его развертывании там. Отличным кандидатом будет пакет журналов, который ваша команда должна стандартизировать.

  • Следите за размером вашего пакета и зависимостями

    Удалите все ненужные элементы, такие как документация и неиспользуемые библиотеки.

Чему научиться дальше

Это был ваш первый шаг к захватывающей карьере в области облачных вычислений. Следующие темы, на которые стоит обратить внимание:

  • Реализации HTTP-запросов
  • Управление внешним хранилищем
  • Использование лямбда-слоев
  • Управление рабочими процессами и сеансами

Чтобы помочь вам в этом путешествии, Educative создал курс Запуск бессерверных приложений с AWS Lambda .

Этот курс от отмеченного наградами автора бессерверных вычислений Гойко Адзича дает вам практический опыт работы с расширенными темами AWS. К концу курса вы станете экспертом в управлении рабочими процессами пользователей, обработке HTTP-событий и разработке собственных надежных приложений.

Удачного обучения!

Продолжить изучение облачных вычислений

  • Краткое руководство по AWS: сервисы, которые вы обязательно должны использовать
  • Что такое облако? Руководство для начинающих по концепциям облачных вычислений
  • Дорожная карта облачных рабочих мест: как и почему стать инженером по облачным вычислениям
Оцените статью
nanomode.ru
Добавить комментарий