Programmering

Hvad er cloud-native? Den moderne måde at udvikle software på

Udtrykket "cloud-native" bliver kastet meget rundt, især af cloud-udbydere. Ikke kun det, men det har endda sit eget fundament: Cloud Native Computing Foundation (CNCF), der blev lanceret i 2015 af Linux Foundation.

'Cloud-native' defineret

Generelt er "cloud-native" en tilgang til at opbygge og køre applikationer, der udnytter fordelene ved cloud computing-leveringsmodellen. "Cloud-native" handler om hvordanapplikationer oprettes og implementeres, ikke hvor. Det indebærer, at apps lever i den offentlige sky i modsætning til et lokalt datacenter.

CNCF definerer "cloud-native" lidt snævrere, hvilket betyder at bruge open source softwarestak, der skal containeriseres, hvor hver del af appen pakkes i sin egen container, dynamisk orkestreret, så hver del er aktivt planlagt og formået at optimere ressourcen udnyttelse og mikroservicesorienteret for at øge applikationernes samlede smidighed og vedligeholdelse.

"En cloud native app er arkitekteret specifikt for at køre i den elastiske og distribuerede natur, der kræves af moderne cloud computing platforme," siger Mike Kavis, en administrerende direktør hos konsulentfirmaet Deloitte. ”Disse apps er løst koblet, hvilket betyder, at koden ikke er forbundet til nogen af ​​infrastrukturkomponenterne, så appen kan skaleres op og ned efter behov og omfavne begreberne med uforanderlig infrastruktur. Typisk er disse arkitekturer bygget ved hjælp af mikrotjenester, men det er ikke et obligatorisk krav. ”

For cloud-native applikationer er den store forskel så virkelig, hvordan applikationen er bygget, leveret og drevet, siger Andi Mann, chefteknologeadvokat hos Splunk, en cloud-tjenesteudbyder. "At udnytte skytjenester betyder at bruge agile og skalerbare komponenter som containere til at levere diskrete og genanvendelige funktioner, der integreres på velbeskrevne måder, selv på tværs af teknologigrænser som multicloud, hvilket giver leveringsteams mulighed for hurtigt at gentage ved hjælp af gentagelig automatisering og orkestrering."

Cloud-native app-udvikling inkluderer typisk devops, agil metode, mikrotjenester, cloudplatforme, containere som Kubernetes og Docker og kontinuerlig levering - kort sagt alle nye og moderne metoder til implementering af applikationer.

På grund af dette vil du virkelig have en PaaS-model (platform-as-a-service). En PaaS er ikke påkrævet, men det gør tingene meget lettere. Langt størstedelen af ​​cloud-kunder starter med infrastruktur-as-a-service (IaaS), som hjælper med at abstrahere deres apps fra den underliggende hardware. Men PaaS tilføjer et ekstra lag for at abstrakte det underliggende OS, så du kan fokusere helt på din apps forretningslogik og ikke bekymre dig om at foretage OS-opkald.

Relateret video: Hvad er den cloud-native tilgang?

I denne 60-sekunders video kan du lære, hvordan den cloud-native tilgang ændrer den måde, hvorpå virksomheder strukturerer deres teknologier, fra Craig McLuckie, grundlægger og administrerende direktør for Heptio, og en af ​​opfinderne af open source Kubernetes.

Forskelle mellem cloud-native og lokale applikationer

Cloud-native applikationsudvikling kræver en meget anden arkitektur end de traditionelle virksomhedsapplikationer.

Sprog

Lokale apps, der er skrevet til at køre på virksomhedsservere, er ofte skrevet på traditionelle sprog som C / C ++, C # eller et andet Visual Studio-sprog, hvis de er implementeret på en Windows Server-platform og enterprise Java. Og hvis det er på en mainframe, er det sandsynligvis i Cobol.

Cloud-native apps er mere tilbøjelige til at blive skrevet på et web-centreret sprog, hvilket betyder HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python og Ruby.

Opdatering

Cloud-native apps er altid aktuelle og opdaterede. Cloud-native apps er altid tilgængelige.

Lokale apps har brug for opdateringer og leveres normalt på abonnementsbasis af leverandøren og kræver nedetid, mens opdateringen er installeret.

Elasticitet

Cloud-native apps drager fordel af skyens elasticitet ved at bruge øgede ressourcer under en brugspike. Hvis din skybaserede e-handelsapp oplever en stigning i brug, kan du indstille den til at bruge ekstra beregningsressourcer, indtil spidsen aftager og derefter slukke for disse ressourcer. En cloud-native app kan tilpasse sig de øgede ressourcer og skala efter behov.

En lokal app kan ikke skaleres dynamisk.

Multi lejemål

En cloud-native app har ikke noget problem at arbejde i et virtualiseret rum og dele ressourcer med andre apps.

Mange lokale apps fungerer enten ikke godt i et virtuelt miljø eller fungerer slet ikke og kræver et ikke-virtuelt rum.

Forbundne ressourcer

En lokal app er ret stiv i sine forbindelser til netværksressourcerne, såsom netværk, sikkerhed, tilladelser og opbevaring. Mange af disse ressourcer skal være hårdkodede, og de går i stykker, hvis noget flyttes eller ændres.

”Netværk og opbevaring er helt forskellige i skyen. Når du hører udtrykket 're-platforming', er det typisk arbejdet med at imødekomme ændringerne i netværk, lagring og endda databaseteknologier, så appen kan køre i skyen, "siger Deloittes Kavis.

Nedetid

Der er større redundans i skyen, end der er lokalt, så hvis en skyudbyder lider af en strømafbrydelse, kan en anden region afhente slapheden.

Lokale apps har muligvis failover klar, men der er en god chance for, at hvis serveren går ned, går appen ned med den.

Automatisering

Så meget af skyen er automatiseret, og det inkluderer appadministration. "Fordelene ved cloud-native levering, især hastighed og smidighed, afhænger væsentligt af et substrat af pålidelige, gennemprøvede og reviderede kendte processer, der udføres gentagne gange efter behov af automatiserings- og orkestreringsværktøjer snarere end gennem manuel indgriben," siger Splunk's Mann. Ingeniører bør se på at automatisere stort set alt, hvad de gør mere end en gang for at muliggøre repeterbarhed, selvbetjening, smidighed, skalerbarhed og revision og kontrol.

Lokale apps skal administreres manuelt.

Modulært design

Lokale apps har tendens til at være monolitiske i design. De aflader noget arbejde til bibliotekerne, for at være sikker, men i sidste ende er det en stor app med en masse subrutiner. Cloud-native apps er meget mere modulære, med mange funktioner opdelt i mikrotjenester. Dette giver dem mulighed for at blive lukket, når det ikke er nødvendigt, og for opdateringer, der skal rulles ud til det ene modul, snarere end hele appen.

Statsløshed

Den løst koblede karakter af skyen betyder, at apps ikke er bundet til infrastruktur, hvilket betyder, at de er statsløse. En cloud-native app gemmer sin tilstand i en database eller en anden ekstern enhed, så forekomster kan komme og gå, og appen kan stadig spore, hvor i arbejdsenheden applikationen er. ”Dette er essensen af ​​løst koblet. Ikke at være bundet til infrastruktur gør det muligt for app at køre på en meget distribueret måde og stadig bevare sin tilstand uafhængig af den elastiske karakter af den underliggende infrastruktur, ”siger Kavis.

De fleste lokale apps er statefulde, hvilket betyder at de gemmer appens tilstand på den infrastruktur, koden kører på. Appen kan brydes, når der tilføjes serverressourcer på grund af dette.

Udfordringerne ved cloud-native computing

En af de store fejl, som kunder laver, er at forsøge at løfte og flytte deres gamle lokale apps til skyen, siger Mann. "Forsøg på at tage eksisterende applikationer - især monolitiske ældre applikationer - og flytte dem til en skyinfrastruktur drager ikke fordel af vigtige cloud-native funktioner."

I stedet skal du se på at gøre nye ting på nye måder, enten ved at sætte nye cloud-native applikationer i ny skyinfrastruktur eller ved at opbryde eksisterende monolit for at omlægge dem ved hjælp af cloud-native-principper fra bunden.

Du skal også undlade at bruge dine gamle udviklermetoder. Vandfaldsmodellen vil bestemt ikke gøre det, og selv en smidig udvikling er muligvis ikke nok. Så du skal vedtage nye cloud-native tilgange som minimum levedygtig produkt (MVP) udvikling, multivariat test, hurtig iteration og arbejde tæt på tværs af organisatoriske grænser i en devops-model.

Der er mange aspekter ved at være cloud-native, herunder infrastrukturtjenester, automatisering / orkestrering, virtualisering og containerisering, mikroservicearkitektur og observerbarhed. Alle disse betyder en ny måde at gøre ting på, hvilket betyder at bryde gamle vaner, når du lærer de nye måder. Så gør det i et målt tempo.

Lær mere om relaterede cloud-native teknologier

  • Platform-as-a-service (PaaS) forklaret
  • Multicloud forklaret
  • Agil metode forklaret
  • Agile udvikling bedste praksis
  • Devops forklarede
  • Afvikler bedste praksis
  • Microservices forklaret
  • Vejledning til mikroservices
  • Docker- og Linux-containere forklaret
  • Kubernetes vejledning
  • CI / CD (kontinuerlig integration og kontinuerlig levering) forklaret
  • Bedste praksis for CI / CD