Бессерверные вычисления реализуют идеи, которые связывают с Docker или с контейнерами вообще: пишите приложения и предоставьте другим позаботиться об инфраструктуре, исправлениях, безопасности и масштабировании. Адам Левенталь, соучредитель и генеральный директор компании Transposit, обрисовывает на портале eWeek современное состояние бессерверных вычислений. Прежде он работал главным технологом компании Delphix, специализировавшейся на виртуализации СУБД.

Бессерверные вычисления, именуемые также «функция как сервис» (function as a service, FaaS), не означают отсутствие сервера, выполняющего тяжелую работу. Просто пользователь не видит сервер, не обслуживает его и не интересуется, в какой точке мира он размещен. Работа своевременно выполняется, а где — неважно.

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

Ниже описывается современное состояние бессерверных вычислений.

1. Создай и забудь

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

В истории ПО эта идея уже встречалась в различных вариантах, начиная с серверов приложений и cgi-bin и заканчивая реляционными СУБД. Платформы позволяют снизить уровень сложности разработки приложений.

2. Возможность использования в различных сценариях

Наиболее очевидными сценариями бессерверных вычислений являются реактивные краткосрочные взаимодействия: простые веб-API, чатботы, связующий код DevOps. Amazon настоятельно призывает к повсеместному использованию своего бессерверного продукта Lambda для упрощенной адаптации. Это универсальная платформа для контроля других сервисов или данных. Интеграции с такими платформами, как Slack, Github или Twilio, легко вписываются в ограничения бессерверных вычислений, а разработчики избавляются от отвлекающих их забот об инфраструктуре.

3. Работа над бессерверными вычислениями не завершена

На всех наиболее популярных бессерверных платформах (AWS Lambda, Google Cloud Functions, Azure Functions) возникают трудности, как только начинается работа с данными. Обращаться к локальным сервисам AWS невероятно просто. Но использование аутентифицированных API способно вызвать головную боль. Где хранятся токены? Как обрабатываются перенаправления OAuth? Как осуществляется управление пользователями? Ограниченное ныне использование бессерверных вычислений может быстро распространиться на множество сервисов публичных облаков, и окажется, что вы заменили известную программистам сложность на множество новых вещей, которые необходимо изучить.

4. Бессерверные вычисления экономически выгодны и эластичны

Главное достоинство бессерверных продуктов — их очень эластичная цена. Чтобы приступить к их использованию, затрат почти не требуется. Вместо того, чтобы читать документацию AWS, просто выберите вариант самостоятельно. Такие технологии, как Serverless.com, Zeit и Pulumi, предоставляют разработчикам различные способы курирования различных вариантов. Многие бессерверные платформы имеют большие библиотеки приложений, которые можно применять, изучать, адаптировать, создавать их ветки. Начните с примера, который ближе всего к тому, что вам нужно.

5. Новые рабочие лошадки

Бессерверные вычисления — сравнительно новый термин, но вполне применимый к таким давно известным платформам, как Google App Engine, Heroku или даже Parse, которую купила Facebook. Не следует ожидать появления какой-то бессерверной платформы, которая будет управлять всеми остальными. Но бессерверные вычисления станут доминирующей парадигмой программирования. Они позволяют организовать стек технологий таким образом, чтобы он был максимально ориентирован на разработчиков и широко применим, если ваш сервис не требует глубокой дифференциации на уровне инфраструктуры.