Google esitas Knative 1.0 stabiilse väljalaske, mis on mõeldud serverivaba arvutusteenuse infrastruktuuri loomiseks, mis põhineb konteinerite isolatsioonisüsteemil, mille aluseks on Kubernetes. Lisaks Google'ile osalevad Knative arendamises ka sellised ettevõtted nagu IBM, Red Hat, SAP ja VMware. Knative 1.0 väljaandmine tähistas API stabiliseerumist rakenduste arendamiseks, mis ei muutu edaspidi ja hoiab tagasipööratavat ühilduvust. Projekti kood on kirjutatud Go keeles ja seda jagatakse Apache 2.0 litsentsi all.
Knative pakub serverivaba rakenduste arendamise mudelit, mis annab pilvesüsteemidele lisatasandi abstraktsiooni, võimaldades funktsioone teenusena (FaaS, Functions as a Service) täita. Serverivaba mudeli olemus seisneb selles, et arendaja rakendab loogikat üksikute funktsioonide tasandil, mitte ei pea muretsema rakenduste käitamiseks vajaliku infrastruktuuri loomise ja haldamise üle ning ei ole seotud konkreetsete serverirakenduste ning nende tööks vajalikku pilvekeskkonnaga.
Arendustööd tehakse ilma monoliitsete rakenduste loomise vajaduseta, valmistades ette väikeste eraldiseisvate funktsioonide kogumit, millest igaüks tagab konkreetse sündmuse töötlemise ja on kavandatud iseseisvaks tööks ilma keskkonna sõltuvuseta (stateless, tulemus ei sõltu eelmisest olekust ega failisüsteemi sisust). Funktsioonid käivitatakse ainult vajadusel ja sündmuse töötlemise järel saavad need kohe lõpetada oma töö, st erinevalt mikroteenustest ei ole vaja pidevalt käivitada keskkondi, mis tarbivad ressursse tühikäigul.
Knative platvorm käivitab konteinerid vajadusel ise, paigutab neisse ettevalmistatud funktsioonid, korraldab haldamise ja tagab keskkondade skaleeritavuse, mis on vajalik nende funktsioonide täitmiseks. Platvormi saab kasutada oma süsteemides ilma sidekata väliste pilveteenustega. Käivitamiseks on vajalik ainult Kubernetes. Pakutakse vahendeid erinevate tüüpiliste raamistikute toetuseks, sealhulgas Django, Ruby on Rails ja Spring. Platvormi töö haldamiseks võib kasutada käsureainterfeissi.
Platvorm pakub kahte põhikomponenti:
- Serverit Kubernetes'is serveriteta konteinerite käitamiseks, automaatse võrgu seadistamise, marsruutimise, muudatuste jälgimise (paigutatud koodi ja seadete salvestamine) ja vajaliku mõõtkava taseme säilitamisega (kuni pod-ide arvu vähendamiseni nulli, kui tegevust pole). Arendaja keskendub ainult loogikale, kõik täitmisega seotud ülesanded on platvormi tasemel. Võrguside ja päringute marsruutimise korraldamiseks võivad kasutada võrgu süsteeme nagu Ambassador, Contour, Kourier, Gloo ja Istio. Toetatakse HTTP/2, gRPC ja WebSocketse.
- Eventing — universaalne tellimissüsteem (käsitlejate kinnitamine), sündmuste edastamine ja haldamine. See võimaldab luua asünkroonselt toimivaid rakendusi, kinnitades arvutusressursid andmevoogudega objektimudeli ja sündmuste töötlemise mehhanismi kaudu.
Allikas: opennet.ru
