Что такое бессерверные вычисления?

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

Чем важны бессерверные вычисления?

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

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

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

Внедрение бессерверных технологий дает целый ряд преимуществ, о которых мы расскажем ниже.

Повышение производительности разработчика

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

Эффективная масштабируемость

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

Снижение затрат

Вы платите только за те ресурсы (процессорное время, память и др.), которые необходимы для выполнения кода. Вы не платите за ресурсы, которые не используете. Такая модель оплаты за реальную ценность обеспечивает оптимальное использование ресурсов и отсутствие потерь из-за избыточного выделения ресурсов.

Какие существуют варианты использования бессерверных вычислений?

Существует множество приложений и систем, в которых могут быть полезны бессерверные вычисления.

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

Бессерверная архитектура идеально подходит для асинхронных приложений без фиксации состояния, в которых данные клиентов не сохраняются между сеансами. Например, так работают чат-боты, планировщики заданий и приложения Интернета вещей (IoT). Например, компания Coca-Cola на основе AWS всего за 100 дней разработала мобильное приложение для разлива напитков через бесконтактный диспенсер. Для этого Coca-Cola использовала такие бессерверные компоненты, как AWS Lambda.

Пакетная обработка

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

Например, компания Liberty Mutual применила AWS для консолидации разрозненных глобальных подразделений в централизованную систему FCS (Financial Central Services). Эта компания использовала AWS Step Functions для создания бессерверного приложения, которое может за один запуск обрабатывать 100 миллионов транзакций в конце каждого месяца.

Аналитика данных в реальном времени

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

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

Автоматизация бизнес-процессов

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

Например, компания Taco Bell применила AWS для создания бессерверных приложений, которые выполняют бизнес-логику и преобразование данных. Эти приложения предоставляли партнерам Taco Bell по доставке сведения о меню и загрузке ресторанов в режиме реального времени. Инвестиции в бессерверные технологии помогли бренду быстро отреагировать на рост потребительского спроса на доставку, связанный с пандемией COVID-19.

Как работает бессерверная архитектура?

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

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

Схема традиционной платформы для веб-приложений

В бессерверной архитектуре разработчики развертывают код внутренней части в облачной инфраструктуре, которая предоставляется поставщиками облачных услуг. Основа всех бессерверных приложений – архитектура, управляемая событием (EDA). Это шаблон современной архитектуры, которая состоит из небольших несвязанных сервисов, которые публикуют, потребляют или маршрутизируют события. События – это сообщения, отправляемые между сервисами.

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

Схема бессерверного микросервиса, управляемого событиями

Далее мы приводим описание работы бессерверной архитектуры.

Функции

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

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

Масштабирование запросов

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

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

Какие существуют типы бессерверной архитектуры?

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

Далее мы познакомим вас с обоими типами бессерверных архитектур.

Функция как услуга

Функция как услуга (FaaS) – это бессерверная архитектура, на основе которой разработчики могут писать собственные серверные функции и развертывать их код напрямую в облачной инфраструктуре. При вызове функции поставщик облачных услуг запускает ее на уже работающем сервере или добавляет новый сервер, если потребуется. Такие функции называются бессерверными, поскольку процесс их выполнения отделен от разработчиков. Разработчики могут писать и развертывать код, не беспокоясь о том, как и где он выполняется.

Внутренняя часть как услуга

Внутренняя часть как услуга (BaaS) предоставляет разработчикам доступ к серверным функциям через интерфейсы API. API – это механизмы, которые позволяют двум программным компонентам взаимодействовать друг с другом, используя набор определений и протоколов.

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

В чем заключается стратегия с приоритетом бессерверных технологий?

Бессерверной называют архитектуру, которая основана на следующих принципах:

  • Отсутствие необходимости управлять серверами
  • Сервисы с оплатой на основе ценности
  • Непрерывное масштабирование
  • Встроенная отказоустойчивость

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

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

Безопасна ли бессерверная архитектура?

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

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

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

Как AWS может удовлетворить ваши требования к бессерверным вычислениям?

Amazon Web Services (AWS) предоставляет множество решений для бессерверных вычислений.

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

Использование бессерверных приложений начинается с вычислительного сервиса на основе событий AWS Lambda, который по умолчанию интегрирован с более чем 200 сервисами AWS. Мы предлагаем также большое количество вспомогательных сервисов, например:

Создайте аккаунт уже сегодня и начните работу с бессерверными технологиями AWS.

AWS: дальнейшие шаги

Зарегистрируйте бесплатный аккаунт

Получите мгновенный доступ к уровню бесплатного пользования AWS.

Регистрация 
Начать разработку в консоли

Начните разработку в Консоли управления AWS.

Вход