Okviri bez servera su privukli veliku pažnju u poslednjih nekoliko godina, beležeći sve veću primenu među programerima.
Ipak, aplikacije koje koriste kontejnere su već prilično rasprostranjene, a Kubernetes je popularan izbor među preduzećima.
Kubernetes je bez sumnje izuzetan alat sa velikim potencijalom. Njegov ekosistem se neprestano širi, nudeći razne nove alate i najnovije tehnologije, kao što je Knative, koji može dodatno unaprediti Kubernetes.
Knative je osmišljen da prevaziđe izazove koji mogu dovesti do neuspeha i da uspostavi osnovni standard za cloud platforme i orkestraciju koja je „cloud-native“.
Drugim rečima, Knative okvir bez servera može biti pogodniji za potrebe kompanije u poređenju sa drugim implementacijama bez servera koje su bazirane na oblaku.
U ovom vodiču, govoriću o Knative-u, njegovim prednostima, primerima upotrebe, proceduri instalacije, načinu rada i drugim bitnim detaljima.
Počnimo!
Šta je Knative?
Knative je okvir bez servera zasnovan na Kubernetesu, koji je prvobitno razvio Google. On učitava i pokreće funkcije bez servera na zahtev kompanije, čime se smanjuje rasipanje resursa. To je projekat otvorenog koda koji dodaje komponente za postavljanje, pokretanje i upravljanje aplikacijama bez servera na Kubernetesu.
Primarni cilj Knative okvira bez servera je upravljanje standardima za međupatformsku orkestraciju. Ovo se postiže integracijom funkcija za kreiranje kontejnera, automatsko skaliranje, modela zasnovanog na događajima i upravljanja radnim opterećenjima.
Ranije su postojala različita rešenja otvorenog koda, pored Knative-a. Svako rešenje je imalo svoj pristup implementaciji, što je moglo dovesti do fragmentacije tržišta zbog nedostatka standardizovanih praksi. To je značilo da je izbor određenog provajdera bio neophodan ukoliko se želi specifična sistemska funkcionalnost.
Međutim, problemi sa migracijom su počeli da se pojavljuju. Da bi se izbegli takvi problemi, uveden je Knative okvir bez servera. Dakle, ukoliko se borite da integrišete neki zadatak, Knative to može efikasno uraditi unutar okvira koji je zasnovan na Kubernetesu.
Knative se sastoji od tri glavna dela:
- Knative Build: Izrađuje slike kontejnera i omogućava njihovu dostupnost iz izvornog koda.
- Knative Serving: Koristi Istio i Kubernetes za povezivanje i primenu ovih slika kontejnera preko dodeljenih infrastrukturnih resursa.
- Knative Eventing: Omogućava korisnicima da definišu okidače događaja i da povežu okidače događaja sa kontejnerskim funkcijama.
Kada Knative prepozna događaj, on definiše povezani proces za njegovo pokretanje na zahtev. Sa Knative-om, nema potrebe za alociranjem čvorova kontejnera, klastera i podova za rad, jer Knative angažuje resurse za hosting samo kada se dati proces pokrene. Na ovaj način, Knative balansira prednosti serverless i kontejnerskih tehnologija.
Osnovni koncepti Knative-a
Hajde da razmotrimo ključne koncepte Knative Serverless Framework-a i kako se oni odnose na Knative primitive.
Build
Knative-build omogućava korišćenje i proširivanje postojećih Kubernetes primitiva, čime se omogućava pokretanje kontejnerskih build-ova iz originalnog izvora. Podržava preuzimanje izvornog koda iz zavisnosti i repozitorijuma, pravljenje slika kontejnera i njihovu registraciju.
Događaji
Događaji pomažu u stvaranju bolje komunikacije između slabo povezanih potrošača i proizvođača događaja, što je osnova za izgradnju arhitekture vođene događajima. Knative stavlja ove događaje u red koji bi trebalo da se automatski izvršava bez programerskog kodiranja.
Ovi događaji se zatim isporučuju kontejnerima. Zatim se povratne informacije šalju proizvođačima događaja kako bi se izvršili zadaci. Ovo smanjuje opterećenje programera prilikom kreiranja koda za uspostavljanje veze.
Funkcije
Funkcija je nezavisna jedinica za primenu, slična mikroservisu, unutar Knative servisne usluge. Njen kod je napisan da izvrši jedan zadatak, kao što su:
- Obrada datoteke u bazi podataka
- Čuvanje korisnika u bazi podataka
- Izvršavanje zakazanog posla
Knative serverless okvir je dizajniran da vam omogući da efikasno razvijate, primenjujete i upravljate funkcijama.
Dodaci
Lako proširite ili prepišite funkcionalnost Knative okvira bez servera uz pomoć dodataka. Svaka datoteka `serverless.yml` sadrži svojstvo dodataka koje sadrži različite dodatke.
Resursi
Resursi su komponente infrastrukture Knative bez servera koje vaša funkcija koristi, uključujući:
- Izvor AWS SQS događaja
- Zakazani zadatak (pokreće se svakih 5, 10 minuta, itd.)
- Izvor Kafka događaja
I još mnogo toga.
Usluge
Usluge su poput projekta. Dakle, usluga je organizaciona jedinica Knative okvira bez servera. Iako možete imati više usluga za jednu aplikaciju, možete zamisliti uslugu kao datoteku projekta.
To je mesto gde možete definisati funkcije, događaje i resurse, sve u jednoj datoteci nazvanoj `serverless.yml`, `serverless.json` ili `serverless.js`. Kada primenite usluge pomoću okvira bez servera, sve u datoteci se postavlja odjednom.
Serving
Knative-serving je integrisan sa Istio i Kubernetesom i pruža podršku za primenu aplikacija. Omogućava brz razvoj kontejnera bez servera, mrežne funkcije i automatsko skaliranje za Istio komponente. Knative-serving tretira kontejnere kao skalabilnu uslugu koja može da se kreće od jedne do više instanci kontejnera.
Karakteristike Knative-a
Razmotrimo neke od karakteristika Knative okvira bez servera:
- Knative je okvir bez servera baziran na Kubernetesu koji vam omogućava da primenite usluge na Kubernetesu.
- Lako integriše Knative sa podržanim okruženjima
- Programeri mogu direktno da koriste Kubernetes API uz pomoć Knative-a za primenu usluga bez servera
- Omogućava korisnicima da aktiviraju usluge bez servera uz pomoć Knative sistema događaja
Kako Knative funkcioniše?
Knative serverless okvir funkcioniše kao segment za upravljanje događajima i povezuje Istio i Kubernetes. Kubernetes služi kao orkestrator za mikroservise i kontejnere. Istio je, s druge strane, mreža otvorenog koda koja povezuje različite komponente koje komuniciraju sa korisnikom i međusobno.
Knative pruža korisnicima više komponenti namenjenih za obavljanje osnovnih svakodnevnih zadataka. Ove komponente se ponovo koriste u različitim implementacijama. Programer može da koristi bilo koji programski jezik. Dakle, nije potrebno specifično znanje jezika, jer Knative prepoznaje samo slike kontejnera.
Postoje tri ključne komponente Knative okvira bez servera koje su ključne za njegovo funkcionisanje.
Izgradnja novih kontejnera
Komponenta za izgradnju je zadužena za izgradnju novih kontejnera. Ona može da konvertuje izvorni kod u kontejner. Knative se može konfigurisati da zadovolji poslovne potrebe.
Prvo, Knative preuzima izvorni kod iz biblioteke kao što je GitHub. Zatim se dodaju osnovne zavisnosti kako bi kod efikasno funkcionisao. Slike kontejnera se zatim konstruišu i smeštaju u datoteke kojima Kubernetes platforma može da pristupi.
Kontejner je dostupan programerima koji koriste Kubernetes i Knative. Dakle, kontejneri se grade sve dok je poreklo koda poznato.
Serviranje ili pokretanje platforme
Servisna komponenta je odgovorna za rad platforme. Ona obuhvata:
- Konfiguracija: Konfiguracija obezbeđuje upravljanje različitim verzijama usluge. Svaki put kada se primeni nova verzija kontejnera, Knative čuva postojeću verziju i kreira novu sa najnovijim promenama i funkcionalnostima. Pored toga, Knative definiše stanje usluge.
- Automatsko skaliranje: Da bi kontejneri bez servera bolje funkcionisali, oni moraju da budu sposobni da se automatski skaliraju naviše ili naniže. Knative može automatski da skalira usluge prema potrebi.
- Inteligentno rutiranje usluga: Ovo je važan deo Knative mehanizma rada. Omogućava programerima da usmeravaju tok i količinu saobraćaja na različite postojeće verzije mikroservisa. Inteligentno rutiranje usluga može da se koristi prilikom uvođenja novih funkcionalnosti i plavo-zelenih strategija primene.
Ovo vam omogućava da izložite deo korisnika nedavnoj testnoj verziji i postepeno preusmeravate veliki saobraćaj na novu verziju.
Događanje za definisanje funkcija
Knative komponenta za događaje je zadužena za opisivanje funkcije Knative. Ona omogućava definisanje pokretanja kontejnera na osnovu događaja. Različiti događaji pokreću specifične funkcije kontejnera.
Programeri mogu da definišu okidače događaja i povezane kontejnere kako bi omogućili Knative-u da radi svoj posao. Knative upravlja listom događaja i isporukom događaja.
Prednosti Knative-a
Knative pruža usluge kao što su upravljanje rutama, fazno izdavanje i servisno povezivanje. On takođe ima veliku zajednicu. Hajde da razmotrimo kako Knative utiče na kompanije da usvoje ovu tehnologiju.
- Za razliku od drugih rešenja, Knative ima standardne događaje i kompatibilan je sa FaaS rešenjima. Nudi CloudEvent standardni okvir koji pomaže u dizajniranju arhitekture bez servera.
- Iako Knative nije PaaS, on vam omogućava da kreirate PaaS bez servera sa platformom za orkestraciju bez servera.
- Knative ima razvijen i dobro osmišljen dizajn bez servera.
- Podržava više platformi i daje vam univerzalni standard među provajderima oblaka, čime se eliminiše mogućnost da se vežete za određenog provajdera.
- Knative pruža fleksibilan okvir.
- Podržava proporcionalna fazna izdanja.
- Možete iskusiti ekosistem bez servera u kontejnerskom okruženju.
- Knative uklanja potrebu za upravljanjem i alatima.
- Možete brzo da pređete na druge provajdere oblaka koji su integrisani sa Knative implementacijom Kubernetes-a.
- Nudi model računarstva vođen zahtevima.
- Omogućava vam da upravljate radnim tokovima kao uslugom.
- Uz Knative, možete da obrađujete IoT podatke, pokrećete provere pristupačnosti i potvrđujete konfiguracije vaših bezbednosnih grupa.
- Omogućava programerima da se fokusiraju na kodiranje i omogućava im da brzo kreiraju iterativni kod.
- Obezbeđuje da će programeri integrisati nove verzije.
- Knative model zasnovan na događajima pomaže u implementaciji dizajna, uključujući pretplatu, vezu sa spoljnim sistemima i registraciju.
Izazovi Knative-a (i neka rešenja)
Izazovi efikasnosti
Knative Framework koji podržava odgovarajuće aplikacije obezbeđuje bolje performanse uz minimalne troškove. Međutim, nepravilna kombinacija aplikacija može dovesti do većih troškova i nedovoljno iskorišćenih resursa kontejnera. Ovo može rezultirati lošim performansama aplikacije, što je najveći izazov primene Knative bez servera.
Stoga, loše određena veličina resursa ili pogrešna kombinacija aplikacija mogu da umanje mnoge prednosti Knative-a.
Možete prevazići ovaj izazov izvođenjem testova da biste proverili količine resursa i kombinaciju aplikacija na Knative-u. Izmerite opterećenje događaja određivanjem prosečnog i maksimalnog opterećenja za svaki događaj i procenite ukupnu potrošnju resursa. Ponovite ovo za nekoliko aplikacija da biste kreirali i pokrenuli probnu konfiguraciju da biste potvrdili procene.
Funkcionalni izazovi
Funkcionalni izazovi Knative-a mogu biti:
- Knative zavisi od funkcija koje odgovaraju modelu bez stanja. To znači da se nikakvi podaci ne čuvaju u samoj komponenti. Razvoj funkcija nije teška faza, ali zahteva mali promenu u pristupu, što znači da jedna greška može da umanji performanse softvera.
- Poslovni podaci se sastoje od transakcija u više koraka, a funkcije bez stanja održavaju kontekst u svim koracima. Knative nema tu mogućnost kao što to mogu da urade javni cloud alati bez servera.
Redovno praćenje i rešavanje problema mogu vam pomoći da održite prihvatljive rezultate.
Operativni izazovi
U poređenju sa ponudama bez servera u javnom oblaku, Knative ima operativni izazov. Administratori nemaju kontrolu nad osnovnim serverima sa javnim oblakom. Međutim, oni će morati da upravljaju serverima zajedno sa Kubernetesom, kontejnerima, Knative-om i samim Istio-om.
Knative minimalno proširuje operacije i složenost razvoja za kompanije koje su se već obavezale na Kubernetes i kontejnere. Oni koji su posvećeni servisiranju mreža i mikroservisa će Knative smatrati prirodnim proširenjem.
Slučajevi upotrebe Knative
Za aplikacije koje dovode do promenljivog broja događaja koji ostaju u okviru ili izvan vremenskih ograničenja, Knative je idealan. Specifični slučajevi upotrebe Knative okvira bez servera uključuju:
Orijentacija ka događajima je od suštinskog značaja. Ako IT timovi ne mogu da zamisle aplikaciju kao niz događaja umesto transakcija, Knative možda nije dobar izbor iz funkcionalnih i efikasnih razloga.
Preduslovi i instalacija Knative-a
Kao što vidimo u gornjim odeljcima, Knative je skup komponenti kao što su događaji i serviranje, koje rade na servisnoj mreži i klasteru za orkestraciju radnog opterećenja. Postoje uslužni programi komandne linije koje moramo da instaliramo za jednostavan rad. Dakle, potrebno nam je nekoliko zavisnosti da bismo bili sigurni da možemo da nastavimo sa instalacijom.
Preduslovi
Postoji nekoliko opcija za instaliranje Kubernetesa. Docker Desktop omogućava jednostavan Kubernetes klaster koji služi različitim namernama. Jednostavan pristup je korišćenje Kubernetes-a u Docker-u za pokretanje Kubernetes klastera zajedno sa Docker kontejnerskim čvorovima. Pogodan način za rad sa klasterom je korišćenje alata komandne linije Knative.
Knative CLI nudi jednostavan i brz interfejs za kreiranje resursa. Pomaže kod složenih zadataka kao što su raspodela saobraćaja i automatsko skaliranje. Najbolje je da preuzmete kompatibilnu binarnu datoteku sa GitHub stranice.
Instalacija
Kada imamo sve preduslove, možemo da nastavimo sa instaliranjem komponenti. Za razvojno okruženje postoji dodatak za brzo pokretanje. Dodatak pomaže u instaliranju lokalnog Knative klastera korišćenjem Knative klijenta. Dodatak za brzo pokretanje možete da preuzmete sa zvanične stranice izdanja.
Zaključak: Budućnost Knative-a
Knative je transformisao računarstvo bez servera omogućavajući automatsko skaliranje aplikacija. On ima značajan uticaj na interoperabilni i modularni sistem.
Očekuje se da će Knative u budućnosti pokriti trenutne nedostatke i postati jedna od najefikasnijih tehnologija za pokretanje arhitekture bez servera.
Knative tehnologija je mnogo korisnija za programere, imajući u vidu njene prednosti u odnosu na alternative bez servera. Knative će vam uštedeti vreme eliminisanjem potrebe za izgradnjom i održavanjem Kubernetes ekstenzija. Programeri su prilično zadovoljni Knative tehnologijom jer je jednostavna za korišćenje i odlična alternativa rešenjima bez servera.
Dakle, ako želite da maksimalno iskoristite potencijal Kubernetes okruženja u vašim radnim tokovima u oblaku, usvojite Knative tehnologiju i sami se uverite u njene prednosti.