Как AWS Lambda поддерживает приложения микросервисов

Опубликовано: 5 Марта, 2023
Как AWS Lambda поддерживает приложения микросервисов

Если вам кажется, что облако предназначено для виртуализации каждого уровня оборудования серверной комнаты, вы не ошибаетесь. И теперь, с AWS Lambda, похоже, что сами серверы находятся под угрозой замены. Многие люди уже слышали термин «бессерверный», и само собой разумеется, что этот термин может немного вводить в заблуждение. Что AWS Lambda эффективно делает, так это устраняет проблемы, связанные с запуском и обслуживанием серверов, до такой степени, что разработчики могут сосредоточиться на своем коде в «бессерверной» среде.
Изображение 650

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

Функции, запускаемые по событию

Многим может показаться, что это ничем не отличается от предложений «Платформа как услуга» (PaaS), и определенно нет причин называть это «бессерверным». Что ж, вот где мы на самом деле подходим к сути дела, а именно к тому, что AWS Lambda «управляется событиями». Это означает, что когда вы загружаете свое приложение в AWS Lambda, оно по существу не существует или «спит» до тех пор, пока для вызова функции не будет использован триггер события. Когда событие срабатывает, ваше приложение начинает действовать, делает то, что нужно, и снова исчезает. Некоторые люди могут до сих пор задаваться вопросом, в чем смысл всей этой операции. Дело в том, что вы не платите ни за что, пока ваше приложение спит, вы платите только за ресурсы, используемые при запуске событий. Вот где мы начинаем называть его «безсерверным», потому что, по сути, ваш сервер не существует, пока он не понадобится.

Итак, теперь мы определили AWS Lambda как сервис, который не только запускает ваш код в ответ на события, но и управляет вычислительными ресурсами для вас. По сравнению с предложением «инфраструктура как услуга» (IaaS), таким как AWS EC2, где вы должны платить за время безотказной работы сервера независимо от использования, AWS Lambda требует, чтобы вы платили только тогда, когда ваш код фактически работает, и самое приятное то, что плата не взимается. округляется до ближайших 100 миллисекунд.

Это огромный шаг вперед по сравнению с почасовым округлением, которое предлагают инстансы EC2. Более того, Lambda поставляется с бесплатным уровнем, который включает миллион бесплатных запросов и 400 000 ГБ секунд вычислительного времени в месяц. Есть отчеты о снижении счетов пользователей на AWS Lambda на 90 процентов, а на бессерверной конференции было две презентации, в которых указывалось, что приложения со значительным использованием фактически работают на бесплатном уровне. Очевидно, возникает один вопрос: почему AWS, так сказать, стреляет себе в ногу, урезая свои собственные предложения на 90 процентов? Очевидно, что AWS полагает, что они что-то нашли здесь, и, учитывая то, как другие технологические гиганты поспешили выйти на рынок со своими собственными бессерверными предложениями, они, вероятно, правы.

Микросервисы: разбивка

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

Изображение 651
Майкрософт

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

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

Некоторые популярные варианты использования

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

Аналогичным образом бессерверный инструмент IBM OpenWhisk продемонстрировал вариант использования дрона, который делает аэрофотоснимки, а затем использует когнитивные API для анализа данных на этих изображениях. На недавней конференции Тим Вагнер, генеральный менеджер AWS Serverless Compute, упомянул, что обработка изображений — одна из самых интересных областей применения бессерверных вычислений. AWS Lambda чрезвычайно полезен для выполнения задач, требующих высокой вычислительной мощности, таких как обработка изображений. Автоматическое масштабирование на основе спроса делает его еще более полезным, особенно для стартапов, которые не хотят тратить много денег на дорогое оборудование.

VidRoll, популярная видеотехнология и платформа монетизации для издателей контента, испытывала трудности с управлением кластерами инстансов EC2. Чтобы преодолеть эти трудности, VidRoll теперь использует AWS Lambda для поддержки бизнес-логики для назначения ставок на рекламу в реальном времени и перекодирования видеорекламы в реальном времени. После перехода на AWS Lambda компания VidRoll теперь утверждает, что может с помощью двух или трех инженеров делать то, что раньше требовало не менее восьми или десяти инженеров. Одним из больших преимуществ Lambda является повышение производительности за счет повторного использования кода.

Localytics — это компания, занимающаяся аналитикой веб-приложений и мобильных приложений, среди клиентов которой ESPN, The New York Times, eBay, Fox и Salesforce. Поскольку их программное обеспечение используется в более чем 30 000 приложений и 3 миллиардах устройств по всему миру, бостонская компания столкнулась с проблемой поддержки конвейеров с миллиардами точек данных, загружаемых каждый день. Теперь они используют сервисы AWS для ежемесячной отправки 100 миллиардов точек данных, и для каждой новой функции AWS Lambda создает новый микросервис для доступа к потоку данных Amazon Kinesis.

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