Programmering

Hva er cloud-native? Den moderne måten å utvikle programvare på

Begrepet "sky-native" blir kastet mye rundt, spesielt av skyleverandører. Ikke bare det, men det har til og med sitt eget fundament: Cloud Native Computing Foundation (CNCF), lansert i 2015 av Linux Foundation.

‘Cloud-native’ definert

Generelt er "cloud-native" en tilnærming til å bygge og kjøre applikasjoner som utnytter fordelene med cloud computing-leveringsmodellen. "Cloud-native" handler om hvordanapplikasjoner blir opprettet og distribuert, ikke hvor. Det innebærer at appene lever i den offentlige skyen, i motsetning til et lokalt datasenter.

CNCF definerer "cloud-native" litt snevrere, for å bety at programvarestakken med åpen kildekode skal containeriseres, der hver del av appen er pakket i sin egen container, dynamisk orkestrert slik at hver del er aktivt planlagt og klarer å optimalisere ressursen utnyttelse, og mikroservicesorientert for å øke den generelle smidigheten og vedlikeholdsevnen til applikasjoner.

"En cloud native app er arkitisert spesielt for å kjøre i den elastiske og distribuerte naturen som kreves av moderne cloud computing-plattformer," sier Mike Kavis, administrerende direktør i konsulentselskapet Deloitte. “Disse appene er løst koblet, noe som betyr at koden ikke er kablet til noen av infrastrukturkomponentene, slik at appen kan skaleres opp og ned etter behov og omfavne begrepene uforanderlig infrastruktur. Vanligvis er disse arkitekturene bygget med mikrotjenester, men det er ikke et obligatorisk krav. ”

For skyinnfødte applikasjoner er den store forskjellen da hvordan applikasjonen blir bygget, levert og drevet, sier Andi Mann, teknologidirektør i Splunk, en skytjenesteleverandør. "Å dra nytte av skytjenester betyr å bruke smidige og skalerbare komponenter som containere for å levere diskrete og gjenbrukbare funksjoner som integreres på godt beskrevne måter, til og med på tvers av teknologigrenser som multicloud, som gjør at leveringsteam raskt kan gjentas ved hjelp av repeterbar automatisering og orkestrering."

Apputvikling i skyen inkluderer vanligvis devops, smidig metodikk, mikrotjenester, skyplattformer, containere som Kubernetes og Docker, og kontinuerlig levering - kort sagt, hver nye og moderne metode for applikasjonsdistribusjon.

På grunn av dette vil du virkelig ha en PaaS-modell (platform-as-a-service). En PaaS er ikke nødvendig, men det gjør ting mye lettere. De aller fleste skykunder starter med infrastruktur-som-en-tjeneste (IaaS), som hjelper med å trekke appene sine fra den underliggende maskinvaren. Men PaaS legger til et ekstra lag for å abstrakte det underliggende operativsystemet, slik at du kan fokusere helt på forretningslogikken til appen din og ikke bekymre deg for å ringe OS-samtaler.

Relatert video: Hva er den skyinnfødte tilnærmingen?

I denne 60 sekunders videoen kan du lære hvordan den skyinnfødte tilnærmingen endrer måten bedrifter strukturerer teknologiene sine på, fra Craig McLuckie, grunnlegger og administrerende direktør i Heptio, og en av oppfinnerne av åpen kildekode Kubernetes.

Forskjeller mellom cloud-native og lokale applikasjoner

Cloud-native applikasjonsutvikling krever en helt annen arkitektur enn de tradisjonelle bedriftsapplikasjonene.

Språk

Lokale apper som er skrevet for å kjøre på selskapets servere, blir ofte skrevet på tradisjonelle språk, som C / C ++, C # eller et annet Visual Studio-språk hvis de er distribuert på en Windows Server-plattform og Java-virksomhet. Og hvis det er på en hovedramme, er det sannsynlig i Cobol.

Cloud-native apps er mer sannsynlig å bli skrevet på et websentrisk språk, noe som betyr HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python og Ruby.

Oppdaterbarhet

Cloud-native apps er alltid oppdaterte og oppdaterte. Cloud-native apps er alltid tilgjengelige.

Lokale apper trenger oppdateringer og blir vanligvis levert på abonnementsbasis av leverandøren, og krever nedetid mens oppdateringen er installert.

Elastisitet

Cloud-native apps utnytter elastisiteten i skyen ved å bruke økte ressurser under en brukspike. Hvis den skybaserte e-handelsappen opplever en økning i bruk, kan du stille den til å bruke ekstra beregningsressurser til spissen avtar og deretter slå av disse ressursene. En cloud-native app kan tilpasse seg de økte ressursene og skalaen etter behov.

En lokal app kan ikke skaleres dynamisk.

Multitenancy

En cloud-native app har ikke noe problem med å jobbe i et virtualisert rom og dele ressurser med andre apper.

Mange lokale apper fungerer enten ikke bra i et virtuelt miljø eller fungerer ikke i det hele tatt og krever et ikke-virtuelt område.

Tilknyttede ressurser

En lokalapp er ganske stiv i sine forbindelser til nettverksressursene, for eksempel nettverk, sikkerhet, tillatelser og lagring. Mange av disse ressursene må være hardkodede, og de går i stykker hvis noe flyttes eller endres.

“Nettverk og lagring er helt forskjellige i skyen. Når du hører begrepet "re-platforming", er det vanligvis arbeidet med å imøtekomme endringene i nettverk, lagring og til og med databaseteknologier for å la appen kjøre i skyen, "sier Deloittes Kavis.

Nedetid

Det er større redundans i skyen enn det er på stedet, så hvis en skyleverandør lider av strømbrudd, kan en annen region hente slakk.

Lokale apper kan ha failover klar, men det er en god sjanse for at hvis serveren går ned, går appen ned med den.

Automasjon

Så mye av skyen er automatisert, og det inkluderer appadministrasjon. "Fordelene med sky-native levering, spesielt hastighet og smidighet, er avhengig av et substrat av pålitelige, påviste og reviderte velkjente prosesser som utføres gjentatte ganger etter behov av automatiserings- og orkestreringsverktøy snarere enn gjennom manuell inngrep," sier Splunk's. Mann. Ingeniører bør se på å automatisere praktisk talt alt de gjør mer enn en gang for å muliggjøre repeterbarhet, selvbetjening, smidighet, skalerbarhet og revisjon og kontroll.

Lokale apper må administreres manuelt.

Modulær design

Lokale apper har en tendens til å være monolitisk i design. De laster litt arbeid til biblioteker, for å være sikker, men til slutt er det en stor app med mange underrutiner. Cloud-native apps er mye mer modulære, med mange funksjoner fordelt på mikrotjenester. Dette gjør at de kan stenges av når det ikke trengs, og for oppdateringer som skal rulles ut til den ene modulen, i stedet for hele appen.

Statsløshet

Den løst koblede naturen til skyen betyr at apper ikke er knyttet til infrastruktur, noe som betyr at de er statsløse. En sky-innfødt app lagrer tilstanden i en database eller en annen ekstern enhet, slik at forekomster kan komme og gå, og appen kan fortsatt spore hvor i arbeidsenheten applikasjonen er. “Dette er essensen av løst koblet. Å ikke være bundet til infrastruktur tillater og app å kjøre på en høyt distribuert måte og fortsatt opprettholde tilstanden uavhengig av den elastiske naturen til den underliggende infrastrukturen, sier Kavis.

De fleste lokale apper er stateful, noe som betyr at de lagrer appens tilstand på infrastrukturen koden kjører på. Appen kan brytes når du legger til serverressurser på grunn av dette.

Utfordringene med cloud-native databehandling

En av de store feilene kundene gjør er å prøve å løfte og flytte sine gamle lokale apper til skyen, sier Mann. "Forsøk på å ta eksisterende applikasjoner - spesielt monolitiske eldre applikasjoner - og flytte dem til en skyinfrastruktur, vil ikke dra nytte av viktige skyinnfødte funksjoner."

I stedet bør du se etter å gjøre nye ting på nye måter, enten ved å sette nye skyinnfødte applikasjoner inn i ny skyinfrastruktur eller ved å bryte opp eksisterende monolitter for å omformere dem ved hjelp av skyinnfødte prinsipper fra grunnen av.

Du må også dispensere med de gamle utviklermetodene dine. Fossemodellen vil absolutt ikke gjøre det, og til og med smidig utvikling er kanskje ikke nok. Så du må ta i bruk nye cloud-native tilnærminger som minimum levedyktig produktutvikling (MVP), multivariat testing, rask iterasjon og samarbeide tett på tvers av organisasjonsgrenser i en devops-modell.

Det er mange aspekter ved å være cloud-native, inkludert infrastrukturtjenester, automatisering / orkestrering, virtualisering og containerisering, mikrotjenestearkitektur og observerbarhet. Alle disse betyr en ny måte å gjøre ting på, noe som betyr å bryte gamle vaner når du lærer deg de nye måtene. Så gjør det i et målt tempo.

Lær mer om relaterte cloud-native teknologier

  • Platform-as-a-service (PaaS) forklart
  • Multicloud forklart
  • Agil metodikk forklart
  • Beste praksis for smidig utvikling
  • Devops forklarte
  • Avvikler beste praksis
  • Microservices forklart
  • Veiledning for mikrotjenester
  • Docker- og Linux-containere forklart
  • Kubernetes opplæring
  • CI / CD (kontinuerlig integrasjon og kontinuerlig levering) forklart
  • Beste praksis for CI / CD