Предлагаемая в 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 — универсальная система подписки (прикрепления обработчиков), доставки и управления событиями. Позволяет создавать асинхронно работающие приложения, прикрепляя вычислительные ресурсы к потокам данных при помощи объектной модели и механизма обработки событий.
Источник: http://www.opennet.ru/opennews/art.shtml?num=56102
