Компанията 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. За управление на работата на платформата може да се използва интерфейс за команден ред.
Платформата предоставя два основни компонента:
- Служба за стартиране на безсерверни контейнери в Kubernetes с автоматична настройка на мрежовата свързаност, маршрутизиране, проследяване на промени (създаване на снимки на разположения код и настройки) и поддържане на необходимото ниво на мащабируемост (до намаляване на броя на pod-овете до нула при липса на активност). Разработчикът се фокусира само върху логиката, всичко, свързано с изпълнението, се поема от платформата. За организиране на мрежовата свързаност и маршрутизиране на запитванията могат да се използват мрежови подсистеми като Ambassador, Contour, Kourier, Gloo и Istio. Има поддръжка за HTTP/2, gRPC и WebSockets.
- Eventing — универсална система за абонатстване (прикрепяне на обработчици), доставка и управление на събития. Позволява създаването на асинхронно работещи приложения, прикрепяйки изчислителни ресурси към потоци данни чрез обектен модел и механизъм за обработка на събития.
Източник: opennet.ru
