Google представил платформу бессерверных вычислений Knative 1.0

Компания Google представила стабильный релиз платформы Knative 1.0, предназначенной для создания инфраструктуры бессерверных вычислений, развёртываемой поверх системы контейнерной изоляции на базе платформы Kubernetes. Кроме Google в разработке Knative также принимают участие такие компании, как IBM, Red Hat, SAP и VMware. Выпуск Knative 1.0 ознаменовал стабилизацию API для разработки приложений, который отныне не будет меняться и сохранит обратную совместимость. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0.

Предлагаемая в Knative бессерверная модель разработки приложений (serverless) предоставляет дополнительный уровень абстракции для облачных систем, позволяющий выполнять функции как сервисы (FaaS, Functions as a service). Суть бессерверной модели в том, что разработчик реализует логику на уровне отдельных функций, не заботясь о создании и управлении инфраструктурой для запуска приложений, и не привязываясь к конкретным серверным приложениям и необходимым для их работы облачным окружениям.

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

Платформа Knative сама запускает контейнеры по мере необходимости, размещает в них подготовленные функции, организует управление и обеспечивает масштабирование окружений, необходимых для выполнения этих функций. Платформа может быть развёрнута на своих мощностях без привязки к внешним облачным сервисам. Для запуска необходим только Kubernetes. Предоставляются средства для поддержки различных типовых фреймворков, включая Django, Ruby on Rails и Spring. Для управления работой платформы может использоваться интерфейс командной стоки.

Платформа предоставляет два основных компонента:

  • Serving для запуска бессерверных контейнеров в Kubernetes с автоматической настройкой сетевого взаимодействия, маршрутизацией, отслеживанием изменений (создание снапшотов размещаемого кода и настроек) и поддержанием требуемого уровня масштабирования (вплоть до уменьшение числа pod-ов до нуля при отсутствии активности). Разработчик сосредотачивает внимание только на логке, всем, что связано с выполнением занимается платформа. Для организации сетевого взаимодействия и маршрутизации запросов могут использоваться сетевые подсистемы Ambassador, Contour, Kourier, Gloo и Istio. Имеется поддержка HTTP/2, gRPC и WebSockets.
  • Eventing – универсальная система подписки (прикрепления обработчиков), доставки и управления событиями. Позволяет создавать асинхронно работающие приложения, прикрепляя вычислительные ресурсы к потокам данных при помощи объектной модели и механизма обработки событий.

Release. Ссылка here.