Vad är moln-native? Det moderna sättet att utveckla programvara

Termen "moln-native" kastas mycket, särskilt av molnleverantörer. Inte bara det, men det har till och med sin egen grund: Cloud Native Computing Foundation (CNCF), som lanserades 2015 av Linux Foundation.

'Cloud-native' definierad

I allmänhet är "moln-native" ett tillvägagångssätt för att bygga och köra applikationer som utnyttjar fördelarna med leveransmodellen för cloud computing. ”Cloud-native” handlar om hur applikationer skapas och distribueras, inte var. Det innebär att apparna lever i det offentliga molnet, i motsats till ett lokalt datacenter.

CNCF definierar "moln-native" lite snävare, vilket betyder att man använder container med öppen källkod för att containeriseras, där varje del av appen är förpackad i sin egen behållare, dynamiskt orkestrerad så att varje del aktivt planeras och lyckas optimera resursen användning och mikroserviceinriktade för att öka applikationernas övergripande smidighet och underhåll.

"En molninbyggd app är arkiverad speciellt för att köra i den elastiska och distribuerade naturen som krävs av moderna molndatorplattformar", säger Mike Kavis, en vd för konsultföretaget Deloitte. ”Dessa appar är löst kopplade, vilket innebär att koden inte är trådbunden till någon av infrastrukturkomponenterna, så att appen kan skala upp och ner efter behov och omfamna begreppen oföränderlig infrastruktur. Normalt är dessa arkitekturer byggda med mikrotjänster, men det är inte ett obligatoriskt krav. ”

För moln-native applikationer är den stora skillnaden då hur applikationen byggs, levereras och drivs, säger Andi Mann, chefsteknologförespråkare på Splunk, en leverantör av molntjänster. "Att dra nytta av molntjänster innebär att använda smidiga och skalbara komponenter som containrar för att leverera diskreta och återanvändbara funktioner som integreras på väl beskrivna sätt, även över teknologigränser som multicloud, vilket gör att leveransgrupper snabbt kan iterera med repeterbar automatisering och orkestrering.

Cloud-native apputveckling inkluderar vanligtvis devops, smidig metodik, mikrotjänster, molnplattformar, containrar som Kubernetes och Docker och kontinuerlig leverans - kort sagt, varje ny och modern metod för applikationsdistribution.

På grund av detta vill du verkligen ha en PaaS-modell (platform-as-a-service). En PaaS krävs inte, men det gör saker mycket enklare. De allra flesta molnkunder börjar med infrastruktur-som-tjänst (IaaS), vilket hjälper till att ta bort sina appar från den underliggande hårdvaran. Men PaaS lägger till ett extra lager för att abstraktera det underliggande operativsystemet, så att du helt kan fokusera på din affärs logik och inte oroa dig för att ringa OS-samtal.

Relaterad video: Vad är moln-native-metoden?

I den här 60 sekunders videon kan du lära dig hur det molnintegrerade tillvägagångssättet förändrar hur företagen strukturerar sin teknik, från Craig McLuckie, grundare och VD för Heptio, och en av uppfinnarna av Kubernetes med öppen källkod.

Skillnader mellan moln-native och lokala applikationer

Cloud-native applikationsutveckling kräver en helt annan arkitektur än de traditionella företagsapplikationerna.

språk

Lokala appar som är skrivna för att köras på företagsservrar brukar skrivas på traditionella språk, som C / C ++, C # eller ett annat Visual Studio-språk om de distribueras på en Windows Server-plattform och Java-företag. Och om det är på en mainframe, är det troligtvis i Cobol.

Moln-native-appar är mer benägna att skrivas på ett webbcentrerat språk, vilket betyder HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python och Ruby.

Uppdaterbarhet

Cloud-native-appar är alltid aktuella och uppdaterade. Cloud-native-appar är alltid tillgängliga.

Lokala appar behöver uppdateringar och levereras vanligtvis på prenumerationsbasis av leverantören och kräver stillestånd medan uppdateringen är installerad.

Elasticitet

Moln-native-appar utnyttjar molnets elasticitet genom att använda ökade resurser under en användningspike. Om din molnbaserade e-handelsapp upplever en spik i användning kan du ställa in den för att använda extra beräkningsresurser tills spiken avtar och sedan stänga av dessa resurser. En moln-app kan anpassa sig till de ökade resurserna och skalan efter behov.

En lokal app kan inte skala dynamiskt.

Multitenancy

En moln-native app har inga problem att arbeta i ett virtualiserat utrymme och dela resurser med andra appar.

Många lokala appar fungerar antingen inte bra i en virtuell miljö eller fungerar inte alls och kräver ett icke-virtuellt utrymme.

Anslutna resurser

En lokal app är ganska stel i sina anslutningar till nätverksresurserna, såsom nätverk, säkerhet, behörigheter och lagring. Många av dessa resurser måste vara hårdkodade och de går sönder om något flyttas eller ändras.

”Nätverk och lagring är helt olika i molnet. När du hör termen ”re-platforming” är det vanligtvis arbetet för att anpassa sig till förändringar i nätverk, lagring och till och med databassteknik för att appen ska kunna köras i molnet, säger Deloittes Kavis.

Stopptid

Det finns större redundans i molnet än lokalt, så om en molnleverantör drabbas av ett avbrott kan en annan region hämta slacket.

Lokala appar kan ha redundans redo, men det finns en god chans att om servern går ner går appen ner med den.

Automatisering

Så mycket av molnet är automatiserat, och det inkluderar apphantering. "Fördelarna med molnbaserad leverans, särskilt hastighet och smidighet, beror väsentligt på ett substrat av tillförlitliga, beprövade och granskade kända bra processer som körs upprepade gånger efter behov av automatiserings- och orkestreringsverktyg snarare än genom manuellt ingripande", säger Splunk's Mann. Ingenjörer bör se till att automatisera praktiskt taget allt de gör mer än en gång för att möjliggöra repeterbarhet, självbetjäning, smidighet, skalbarhet och granskning och kontroll.

Lokala appar måste hanteras manuellt.

Modulär design

Lokala appar tenderar att ha monolitisk design. De laddar lite arbete till bibliotek, för att vara säker, men i slutändan är det en stor app med en hel del underrutiner. Cloud-native-appar är mycket mer modulära, med många funktioner uppdelade i mikrotjänster. Detta gör att de kan stängas av när de inte behövs och uppdateringar kan rullas ut till den ena modulen, snarare än hela appen.

Statslöshet

Molnets löst kopplade natur betyder att appar inte är knutna till infrastruktur, vilket innebär att de är statslösa. En molninbyggd app lagrar sitt tillstånd i en databas eller någon annan extern enhet så att instanser kan komma och gå och appen kan fortfarande spåra var i arbetsenheten applikationen är. ”Detta är kärnan i löst kopplat. Att inte vara bunden till infrastruktur gör att appen kan köras på ett mycket distribuerat sätt och ändå behålla sitt tillstånd oberoende av den underliggande infrastrukturens elastiska natur, säger Kavis.

De flesta lokala appar är statliga, vilket innebär att de lagrar appens tillstånd på den infrastruktur som koden körs på. Appen kan brytas när du lägger till serverresurser på grund av detta.

Utmaningarna med molnbaserad datoranvändning

Ett av de stora misstagen kunder gör är att försöka lyfta och flytta sina gamla lokala appar till molnet, säger Mann. "Att försöka ta befintliga applikationer - särskilt monolitiska äldre applikationer - och flytta dem till en molninfrastruktur kommer inte att dra nytta av viktiga molnfunktioner."

Istället bör du se till att göra nya saker på nya sätt, antingen genom att sätta in nya molninbyggda applikationer i ny molninfrastruktur eller genom att bryta upp befintliga monoliter för att omforma dem med molnintegrerade principer från grunden.

Du måste också avstå från dina gamla utvecklarmetoder. Vattenfallsmodellen kommer verkligen inte att göra det, och till och med smidig utveckling kanske inte räcker. Så du måste anta nya molnintegrerade tillvägagångssätt som minimivarbar produktutveckling (MVP), multivariat testning, snabb iteration och att arbeta nära organisatoriska gränser i en devops-modell.

Det finns många aspekter av att vara moln-native, inklusive infrastrukturtjänster, automatisering / orkestrering, virtualisering och containerisering, mikrotjänsterarkitektur och observerbarhet. Alla dessa betyder ett nytt sätt att göra saker, vilket innebär att bryta gamla vanor när du lär dig de nya sätten. Så gör det i uppmätt takt.

Läs mer om relaterade molnbaserade tekniker

  • Platform-as-a-service (PaaS) förklaras
  • Multicloud förklarade
  • Agil metodik förklarad
  • Bästa metoder för smidig utveckling
  • Devops förklarade
  • Avvecklar bästa praxis
  • Microservices förklarade
  • Microservices handledning
  • Docker- och Linux-behållare förklarade
  • Kubernetes handledning
  • CI / CD (kontinuerlig integration och kontinuerlig leverans) förklaras
  • Bästa praxis för CI / CD