Programování

Co je cloud-native? Moderní způsob vývoje softwaru

Výraz „cloud-native“ se hodně hodí, zejména u poskytovatelů cloudu. Nejen to, ale má dokonce svůj vlastní základ: Cloud Native Computing Foundation (CNCF), který v roce 2015 zahájila Linux Foundation.

Definováno jako „cloud-native“

Obecně je „cloud-native“ přístup k vytváření a spouštění aplikací, který využívá výhod modelu poskytování cloudových výpočtů. „Cloud-native“ je o jakaplikace jsou vytvářeny a nasazovány, nikoli kde. To znamená, že aplikace žijí ve veřejném cloudu, na rozdíl od místního datového centra.

CNCF definuje „cloud-native“ trochu užší, což znamená použití open source softwarového zásobníku ke kontejnerizaci, kde je každá část aplikace zabalena do vlastního kontejneru, dynamicky uspořádána, takže každá část je aktivně naplánována a spravována pro optimalizaci zdroje využití a orientované na mikroslužby ke zvýšení celkové agility a udržovatelnosti aplikací.

„Nativní cloudová aplikace je navržena speciálně pro provoz v elastické a distribuované povaze, kterou vyžadují moderní cloudové výpočetní platformy,“ říká Mike Kavis, výkonný ředitel poradenské společnosti Deloitte. "Tyto aplikace jsou volně spojené, což znamená, že kód není pevně propojen s žádnou ze složek infrastruktury, takže aplikace může na požádání škálovat nahoru a dolů a přijímat koncepty neměnné infrastruktury." Obvykle jsou tyto architektury vytvářeny pomocí mikroslužeb, ale to není povinný požadavek. “

U cloudových nativních aplikací je velkým rozdílem to, jak je aplikace postavena, doručena a provozována, říká Andi Mann, hlavní technologický obhájce společnosti Splunk, poskytovatele cloudových služeb. „Využívání výhod cloudových služeb znamená použití agilních a škálovatelných komponent, jako jsou kontejnery, k poskytování diskrétních a opakovaně použitelných funkcí, které se integrují dobře popsanými způsoby, dokonce i přes technologické hranice, jako je multicloud, což umožňuje doručovacím týmům rychle iterovat pomocí opakovatelné automatizace a orchestrace.“

Vývoj nativních cloudových aplikací obvykle zahrnuje vývoj, agilní metodiku, mikroslužby, cloudové platformy, kontejnery jako Kubernetes a Docker a nepřetržité doručování - zkrátka každou novou a moderní metodu nasazení aplikace.

Z tohoto důvodu opravdu chcete mít model platformy jako služby (PaaS). PaaS není vyžadován, ale díky tomu je vše mnohem jednodušší. Drtivá většina cloudových zákazníků začíná s infrastrukturou jako službou (IaaS), která pomáhá abstrahovat jejich aplikace od základního hardwaru. Ale PaaS přidává další vrstvu k abstrahování základního OS, takže se můžete plně soustředit na obchodní logiku vaší aplikace a nemusíte se starat o volání OS.

Související video: Co je to cloudový nativní přístup?

V tomto 60sekundovém videu se dozvíte, jak cloudový přístup mění způsob, jakým podniky strukturují své technologie, od Craiga McLuckieho, zakladatele a generálního ředitele společnosti Heptio, a jednoho z vynálezců otevřeného zdroje Kubernetes.

Rozdíly mezi nativními cloudovými a místními aplikacemi

Vývoj nativních cloudových aplikací vyžaduje velmi odlišnou architekturu než tradiční podnikové aplikace.

Jazyky

Místní aplikace napsané pro provoz na firemních serverech mají tendenci být psány v tradičních jazycích, jako je C / C ++, C # nebo jiný jazyk Visual Studio, pokud jsou nasazeny na platformě Windows Server, a podniková Java. A pokud je na sálovém počítači, je pravděpodobné, že je v Cobolu.

Cloudové nativní aplikace se pravděpodobně budou psát v jazyce zaměřeném na web, což znamená HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python a Ruby.

Aktualizovatelnost

Cloudové nativní aplikace jsou vždy aktuální a aktuální. Cloudové nativní aplikace jsou vždy k dispozici.

Místní aplikace potřebují aktualizace a obvykle jsou dodávány na základě předplatného dodavatelem a vyžadují prostoje, když je aktualizace nainstalována.

Pružnost

Cloudové nativní aplikace využívají výhody pružnosti cloudu tím, že během špičky používání využívají zvýšené zdroje. Pokud vaše cloudová aplikace pro elektronický obchod zažije špičku, můžete ji nastavit tak, aby používala další výpočetní prostředky, dokud se špička nezmění, a poté tyto prostředky vypnout. Cloudová nativní aplikace se může podle potřeby přizpůsobit zvýšeným zdrojům a škálovat.

Místní aplikace se nemůže dynamicky škálovat.

Mnohonásobnost

Cloudová nativní aplikace nemá problém pracovat ve virtualizovaném prostoru a sdílet prostředky s jinými aplikacemi.

Mnoho místních aplikací ve virtuálním prostředí nefunguje dobře, nebo nefunguje vůbec a vyžaduje nevirtuální prostor.

Připojené zdroje

Místní aplikace je v připojení k síťovým prostředkům, jako jsou sítě, zabezpečení, oprávnění a úložiště, poměrně rigidní. Mnoho z těchto zdrojů musí být napevno zakódováno, a pokud se něco pohne nebo změní, rozbije se.

"Síť a úložiště se v cloudu úplně liší." Když uslyšíte výraz „opětovné platformování“, obvykle se jedná o přizpůsobení se změnám v síťových, úložných a dokonce i databázových technologiích, které umožní běh aplikace v cloudu, “říká Kavis společnosti Deloitte.

Dolů

V cloudu je větší redundance než v místním, takže pokud poskytovatel cloudu utrpí výpadek, může uvolnění uvolnit jiná oblast.

Místní aplikace mohou mít připravené převzetí služeb při selhání, ale existuje velká šance, že pokud dojde k výpadku serveru, dojde k pádu aplikace s ním.

Automatizace

Velká část cloudu je automatizovaná a zahrnuje správu aplikací. „Výhody cloudového nativního doručování, zejména rychlost a hbitost, se podstatně spoléhají na substrát spolehlivých, ověřených a auditovaných známých a dobrých procesů, které jsou prováděny opakovaně podle potřeby automatizačními a orchestračními nástroji, nikoli manuálním zásahem,“ říká Splunk's Mann. Inženýři by se měli snažit automatizovat prakticky cokoli, co dělají více než jednou, aby umožnili opakovatelnost, samoobslužnost, agilitu, škálovatelnost a audit a kontrolu.

Místní aplikace je třeba spravovat ručně.

Modulární design

Místní aplikace mají zpravidla monolitický design. Určitě odložili nějakou práci do knihoven, ale nakonec je to jedna velká aplikace se spoustou podprogramů. Cloudové nativní aplikace jsou mnohem více modulární s mnoha funkcemi rozdělenými do mikroslužeb. To jim umožňuje vypnout, když to není potřeba, a zavádět aktualizace k tomuto jednomu modulu, nikoli k celé aplikaci.

Bezdomovectví

Volně spojená povaha cloudu znamená, že aplikace nejsou vázány na infrastrukturu, což znamená, že jsou bez státní příslušnosti. Cloudová nativní aplikace ukládá svůj stav do databáze nebo jiné externí entity, takže instance mohou přicházet a odcházet a aplikace může stále sledovat, kde v pracovní jednotce je aplikace. "To je podstata volně vázaného." Není-li vázáno na infrastrukturu, umožňuje to a aplikacím běžet vysoce distribuovaným způsobem a stále si udržovat svůj stav nezávisle na pružné povaze podkladové infrastruktury, “říká Kavis.

Většina místních aplikací je stavových, což znamená, že ukládají stav aplikace na infrastruktuře, na které je spuštěn kód. Z tohoto důvodu lze aplikaci při přidávání prostředků serveru rozbít.

Výzvy cloudových nativních počítačů

Jednou z velkých chyb, které zákazníci dělají, je snaha zvednout a přesunout své staré místní aplikace do cloudu, říká Mann. "Pokus o převzetí existujících aplikací - zejména monolitických starších aplikací - a jejich přesun do cloudové infrastruktury nevyužije výhody základních cloudových funkcí."

Místo toho byste měli hledat nové věci novými způsoby, a to buď zavedením nových cloudových aplikací do nové cloudové infrastruktury, nebo rozbitím stávajících monolitů, které je od základu refaktorují pomocí cloudových nativních principů.

Také se musíte vzdát svých starých vývojářských metod. Model vodopádu určitě nebude, a ani agilní vývoj nemusí stačit. Musíte tedy přijmout nové cloudové nativní přístupy, jako je vývoj minimálního životaschopného produktu (MVP), testování více proměnných, rychlá iterace a úzká spolupráce napříč organizačními hranicemi v modelu devops.

Existuje mnoho aspektů nativního cloudu, včetně infrastrukturních služeb, automatizace / orchestrace, virtualizace a kontejnerizace, architektury mikroslužeb a pozorovatelnosti. To vše znamená nový způsob, jak dělat věci, což znamená prolomit staré zvyky, když se naučíte nové způsoby. Udělejte to měřeným tempem.

Další informace o souvisejících cloudových nativních technologiích

  • Vysvětlení platformy jako služby (PaaS)
  • Vysvětlil Multicloud
  • Agilní metodika vysvětlena
  • Osvědčené postupy pro agilní vývoj
  • Devops vysvětlil
  • Osvědčené postupy Devops
  • Vysvětlení mikroslužeb
  • Výukový program pro mikroslužby
  • Vysvětlení kontejnerů Docker a Linux
  • Výukový program Kubernetes
  • Vysvětleno CI / CD (nepřetržitá integrace a nepřetržité doručování)
  • Osvědčené postupy CI / CD