Čo je cloud-native?
Moderný spôsob vývoja softvéru Cloud-native computing využíva mnoho moderných techník vývoja softvéru vrátane mikroslužieb, kontajnerov, CI/CD, agilných metodológií a devops.
Pojem „cloud-native computing“ sa objavil ako všeobecný pojem pre rôzne nástroje a techniky, ktoré vývojári softvéru potrebujú na vytváranie, nasadzovanie a údržbu moderných softvérových aplikácií v cloudovej infraštruktúre.
Tu definujeme pojem, skúmame prostrediedefinované pojmom cloudu-native a identifikujeme niektoré výhody a úskalia prechodu na cloudu-native.
Definícia cloud-native
Cloud-native je moderný prístup k budovaniu a prevádzke softvérových aplikácií, ktorý využíva flexibilitu, škálovateľnosť a odolnosť cloud computingu. Cloud-native zahŕňa rôzne nástroje a techniky, ktoré dnes vývojári softvéru používajú na vytváranie aplikácií pre verejný cloud, na rozdiel od tradičných architektúr vhodných pre lokálne dátové centrum.
Prístup k budovaniu a prevádzke softvéru založený na cloude bol priekopníkom skupiny spoločností bežne označovaných ako „narodené v cloude“ – ako sú streamingoví giganti Netflix a Spotify, spoločnosť Uber a platforma na rezerváciu ubytovania Airbnb. Natívny cloudový prístup odvtedy prijali aj iné spoločnosti, ktoré hľadajú podobnú digitálnu agilitu a rušivú konkurenčnú výhodu.
Cloud Native Computing Foundation (CNCF) definuje cloud-native trochu užšie a zameriava sa na kontajnerizáciu aplikácií – kde sú aplikácie rozdelené do mikroslužieb a zabalené do ľahkých kontajnerov, ktoré sa majú nasadiť a organizovať na rôznych serveroch.
Vlastnými slovami CNCF: „Cloudov-natívne technológie umožňujú organizáciám vytvárať a prevádzkovať škálovateľné aplikácie v moderných, dynamických prostrediach, ako sú verejné, súkromné a hybridné cloudy.“
Vývoj cloudových natívnych aplikácií zvyčajne zahŕňa mikroslužby, cloudové platformy, kontajnery, Kubernetes, nemennú infraštruktúru, deklaratívne API a technológiu nepretržitého doručovania(delivery) s technikami ako devops a agilná metodológia.
Cloud-native prostredie
Tento posun v populárnych technikách vývoja softvéru bol svedkom nového prostredia prevažne open source nástrojov. CNCF udržiava interaktívnu grafiku tohto ekosystému.
Cloud-native computing má štyri vrstvy, ktorým je dôležité porozumieť:
- Definícia aplikácie a vývojová vrstva. Vrchná vrstva cloudového natívneho zásobníka sa zameriava na nástroje, ktoré používajú vývojári na vytváranie aplikácií, ako sú databázy, systémy na odosielanie správ, obrázky kontajnerov a kanály nepretržitej integrácie a nepretržitého doručovania (CI/CD).
- Vrstva provisioningu. Vrstva provisioningu cloudového natívneho zásobníka zahŕňa všetko potrebné na vytvorenie a zabezpečenie prostredia, v ktorom bude aplikácia bežať, ideálne opakovateľným spôsobom.
Vo svete natívnom cloude to zvyčajne zahŕňa zaobchádzanie s infraštruktúrou ako s kódom, ukladanie obrazov do úložiska, automatizáciu zostavovania a riešenie potrieb zabezpečenia aplikácií pomocou skenovania zraniteľností, správy kľúčov a politík a autentifikačných nástrojov. - Runtime vrstva. Vrstva runtime sa týka všetkého, čo súvisí s prevádzkou natívnej cloudovej aplikácie, ako je napríklad runtime kontajnera, ktorý má stále tendenciu byť Docker, ako aj úložisko a siete.
- Vrstva orchestrácie a riadenia. Vrstva orchestrácie a správy spája nástroje potrebné na nasadenie, správu a škálovanie kontajnerových aplikácií vrátane orchestrácie a plánovania.
Vo väčšine prípadov to znamená Kubernetes – ako aj zisťovanie služieb, proxy služby, bránu API a sieť služieb.
Mimo týchto vrstiev je tiež dôležité implementovať praktiky monitorovania-sledovania, aby boli všetky tieto služby efektívne monitorované. Niektoré organizácie sa tiež rozhodnú spojiť svoj balík do samoobslužnej internej vývojárskej platformy alebo si kúpiť platformu ako službu (PaaS) od dodávateľa, aby sa uľahčilo osvojenie pre vývojárov.
Výhody cloud-native vs. lokálnej architektúry(on premisse)
Vývoj cloudových natívnych aplikácií vyžaduje veľmi odlišnú architektúru ako tradičné podnikové aplikácie, ktoré by zvyčajne bežali v lokálnom dátovom centre. Tu sú niektoré kľúčové rozdiely a výhody, ktoré prinášajú cloudové natívne aplikácie v porovnaní s tradičnými modelmi vývoja aplikácií.
- Miestne aplikácie napísané na spustenie na firemných serveroch majú tendenciu byť napísané v tradičných jazykoch, ako sú C/C++, C# a podniková Java. Cloudové natívne aplikácie sú s väčšou pravdepodobnosťou napísané v jazyku zameranom na web, ako sú HTML, CSS, Java, JavaScript, .NET, Go, Node.js, PHP, Python a Ruby. Práca s modernými jazykmi a platformami vám môže pomôcť, pokiaľ ide o prilákanie najlepších inžinierov, aby pracovali vo vašej organizácii.
- Aktualizovateľnosť. Cloudové natívne aplikácie sú vytvorené tak, aby boli vysoko dostupné, odolné a pravidelne aktualizované, zatiaľ čo lokálne aplikácie sa zvyčajne aktualizujú raz alebo dvakrát ročne pomocou vodopádovej metodológie. Aktualizovateľnosť cloud-native computingu poskytuje vývojovým tímom zvýšenie produktivity, aby sa zamerali na svoju konkurenčnú výhodu a poskytovali nové funkcie zákazníkom častejšie ako predtým.
- Elasticita. Natívne cloudové aplikácie zvyčajne využívajú elasticitu cloudu ohýbaním spotreby v závislosti od dopytu, zatiaľ čo lokálna aplikácia by si na efektívne škálovanie vyžadovala fyzické poskytovanie dodatočnej infraštruktúry. To má tiež vplyv na náklady, pretože cloud vám umožňuje platiť za to, čo používate, a vyhnúť sa nákladnému nadmernému poskytovaniu vlastnej infraštruktúry – aspoň teoreticky.
- Multitenancy. Cloudová natívna aplikácia nemá problém pracovať vo virtualizovanom priestore a zdieľať zdroje s inými aplikáciami pomocou modelu viacerých nájomníkov. Vývojovým tímom to prináša jasné zvýšenie efektivity.
- Downtime-Prestoje. Cloud ponúka väčšiu redundanciu vďaka rozsahu a geografickému rozšíreniu dátových centier spravovaných dodávateľmi hyperškálového cloudu, takže výpadky možno lepšie riadiť rýchlym presmerovaním prevádzky do iného regiónu a vyhnúť sa nákladným prestojom.
- Automatizácia. Techniky natívnej cloudu otvárajú množstvo automatizačných príležitostí pre inžinierov, ktoré môžu raz postaviť a prejsť k ďalším naliehavejším výzvam.
- Stateless-Bezstavovosť. Cloudové natívne aplikácie majú tendenciu byť bez stavu, pretože neprenášajú uložené údaje z jednej relácie do druhej. Tento model otvára príležitosť na jednoduché škálovanie na viacerých serveroch, jednoduchšiu vyrovnávaciu pamäť pre zvýšenie výkonu, spotrebuje menej úložného priestoru a vyhýba sa tomuto obávanému zablokovaniu dodávateľa tým, že nie je pripojený ku konkrétnemu serveru.
Výzvy Cloud-natívnosti
Snaha pozdvihnúť a posunúť existujúcu lokálnu aplikáciu tak, aby bola natívna pre cloud bez toho, aby ste museli robiť architektonické výzvy, je bežnou chybou, ale prepracovanie niečoho pre cloud je tiež samo osebe významnou inžinierskou výzvou.
Kľúčovými výzvami pre organizácie, ktoré chcú prejsť na cloudové prostredie, je nájsť správnu kombináciu zručností, prispôsobiť sa modelu zabezpečenia zameranému na cloud a spravovať meniaci sa nákladový profil cloudového prostredia.
Napriek tomu by sa vývojári mali snažiť prijať cloud-native ako organizačný princíp, a to buď vybudovaním nových aplikácií pre cloud, alebo rozdelením existujúcich monolitických aplikácií na mikroslužby, aby boli lepšie prispôsobené cloudovému prostrediu.
To si bude vyžadovať výrazný posun myslenia od tradičných vodopádových nasadení k agilnejším princípom vývoja, ako je vývoj minimálneho životaschopného produktu (MVP), automatizácia, testovanie s viacerými premennými, rýchla iterácia, pozorovateľnosť a úzka spolupráca s operačným tímom v modeli devops.
Pre získanie viac informácií o súvisiacich cloudových natívnych technológiách je potrebné pozrieť:
- Vysvetlenie platformy ako služby (PaaS).
- Vysvetlenie Multicloud
- Vysvetlenie agilnej metodika
- Osvedčené postupy agilného vývoja
- Vysvetlenie Devops
- Osvedčené postupy DevOps
- Vysvetlenie čo súmikroslužby
- Kurz mikroslužieb
- Vysvetlenie kontajnerov Docker a Linux
- Tutoriál ku Kubernetes
- Vysvetlenie CI/CD (kontinuálna integrácia a nepretržité podávanie)
CI/CD (continuous integration and continuous delivery) - Osvedčené postupy CI/CD