Wat is cloud-native? De moderne manier om software te ontwikkelen

De term "cloud-native" wordt veel gebruikt, vooral door cloudproviders. Niet alleen dat, maar het heeft zelfs een eigen basis: de Cloud Native Computing Foundation (CNCF), in 2015 gelanceerd door de Linux Foundation.

'Cloud-native' gedefinieerd

In het algemeen is "cloud-native" een benadering voor het bouwen en uitvoeren van applicaties die gebruikmaakt van de voordelen van het cloud computing-leveringsmodel. "Cloud-native" gaat over hoe applicaties worden gemaakt en geïmplementeerd, niet waar. Het impliceert dat de apps in de openbare cloud leven, in tegenstelling tot een datacenter op locatie.

De CNCF definieert 'cloud-native' iets nauwer, wat betekent dat open source softwarestack wordt gebruikt om te worden gecontaineriseerd, waarbij elk deel van de app wordt verpakt in een eigen container, dynamisch georkestreerd zodat elk onderdeel actief wordt gepland en beheerd om de bronnen te optimaliseren gebruik en microservices gericht om de algehele flexibiliteit en onderhoudbaarheid van applicaties te vergroten.

"Een cloud-native app is specifiek ontworpen om te draaien in het elastische en gedistribueerde karakter dat vereist is voor moderne cloud computing-platforms", zegt Mike Kavis, een managing director bij adviesbureau Deloitte. “Deze apps zijn losjes gekoppeld, wat betekent dat de code niet hard-wired is met een van de infrastructuurcomponenten, zodat de app naar behoefte kan opschalen en de concepten van onveranderlijke infrastructuur kan omarmen. Meestal worden deze architecturen gebouwd met behulp van microservices, maar dat is niet verplicht. "

Voor cloud-native applicaties is het grote verschil dan echt hoe de applicatie wordt gebouwd, geleverd en beheerd, zegt Andi Mann, chief technology advocate bij Splunk, een cloudserviceprovider. "Profiteren van cloudservices betekent het gebruik van flexibele en schaalbare componenten zoals containers om discrete en herbruikbare functies te leveren die op goed beschreven manieren kunnen worden geïntegreerd, zelfs over technologiegrenzen heen, zoals multicloud, waardoor bezorgteams snel kunnen itereren met herhaalbare automatisering en orkestratie."

Cloud-native app-ontwikkeling omvat doorgaans devops, agile methodologie, microservices, cloudplatforms, containers zoals Kubernetes en Docker, en continue levering, kortom elke nieuwe en moderne methode voor applicatie-implementatie.

Daarom wil je echt een platform-as-a-service (PaaS) -model hebben. Een PaaS is niet vereist, maar het maakt de zaken een stuk eenvoudiger. De overgrote meerderheid van cloudklanten begint met Infrastructure-as-a-Service (IaaS), waarmee ze hun apps abstraheren van de onderliggende hardware. Maar PaaS voegt een extra laag toe om het onderliggende besturingssysteem te abstraheren, zodat u zich volledig kunt concentreren op de bedrijfslogica van uw app en u geen zorgen hoeft te maken over het maken van OS-oproepen.

Gerelateerde video: wat is de cloud-native benadering?

Ontdek in deze 60 seconden durende video hoe de cloud-native benadering de manier verandert waarop ondernemingen hun technologieën structureren, van Craig McLuckie, oprichter en CEO van Heptio, en een van de uitvinders van open source Kubernetes.

Verschillen tussen cloud-native en on-premise applicaties

Cloud-native applicatie-ontwikkeling vereist een heel andere architectuur dan de traditionele bedrijfsapplicaties.

Talen

On-premises apps die zijn geschreven om op bedrijfsservers te worden uitgevoerd, zijn meestal geschreven in traditionele talen, zoals C / C ++, C # of een andere Visual Studio-taal indien geïmplementeerd op een Windows Server-platform, en enterprise Java. En als het op een mainframe staat, is het waarschijnlijk in Cobol.

Cloud-native apps worden eerder geschreven in een webcentrische taal, wat betekent dat HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python en Ruby.

Bijwerkbaarheid

Cloud-native apps zijn altijd actueel en up-to-date. Cloud-native apps zijn altijd beschikbaar.

On-premises apps hebben updates nodig en worden meestal op abonnementsbasis geleverd door de leverancier, en vereisen downtime terwijl de update wordt geïnstalleerd.

Elasticiteit

Cloud-native apps profiteren van de elasticiteit van de cloud door tijdens een piek in het gebruik meer bronnen te gebruiken. Als uw cloudgebaseerde e-commerce-app een piek in gebruik ervaart, kunt u deze instellen om extra rekenbronnen te gebruiken totdat de piek afneemt en vervolgens die bronnen uitschakelen. Een cloud-native app kan zich aanpassen aan de toegenomen bronnen en indien nodig opschalen.

Een on-premises app kan niet dynamisch worden geschaald.

Multitenancy

Een cloud-native app heeft geen probleem om in een gevirtualiseerde ruimte te werken en bronnen te delen met andere apps.

Veel on-premise apps werken ofwel niet goed in een virtuele omgeving, of werken helemaal niet en vereisen een niet-gevirtualiseerde ruimte.

Verbonden bronnen

Een on-premise app is redelijk rigide in de verbindingen met de netwerkbronnen, zoals netwerken, beveiliging, machtigingen en opslag. Veel van deze bronnen moeten hard worden gecodeerd en ze breken als er iets wordt verplaatst of gewijzigd.

“Netwerk en opslag zijn totaal verschillend in de cloud. Als je de term 're-platforming' hoort, is dat typisch het werk om de veranderingen in netwerk-, opslag- en zelfs databasetechnologieën op te vangen om de app in de cloud te laten draaien, ”zegt Kavis van Deloitte.

Stilstand

Er is meer redundantie in de cloud dan op locatie, dus als een cloudprovider een storing ondervindt, kan een andere regio de speling opvangen.

On-premises apps hebben mogelijk een failover-gereed, maar de kans is groot dat als de server uitvalt, de app ermee uitvalt.

Automatisering

Een groot deel van de cloud is geautomatiseerd, inclusief app-beheer. "De voordelen van cloud-native levering, met name snelheid en behendigheid, zijn in belangrijke mate afhankelijk van een substraat van betrouwbare, bewezen en gecontroleerde processen waarvan bekend is dat ze goed zijn en die herhaaldelijk worden uitgevoerd als dat nodig is door automatisering en orkestratietools in plaats van door handmatige tussenkomst", zegt Splunk. Mann. Ingenieurs moeten vrijwel alles wat ze meer dan eens doen, automatiseren om herhaalbaarheid, zelfbediening, wendbaarheid, schaalbaarheid en audit en controle mogelijk te maken.

Apps op locatie moeten handmatig worden beheerd.

Modulair ontwerp

Apps op locatie hebben de neiging om een ​​monolithisch ontwerp te hebben. Ze schuiven weliswaar wat werk over naar bibliotheken, maar uiteindelijk is het één grote app met heel veel subroutines. Cloud-native apps zijn veel modulair, met veel functies onderverdeeld in microservices. Hierdoor kunnen ze worden uitgeschakeld wanneer ze niet nodig zijn en kunnen updates worden uitgerold naar die ene module in plaats van naar de hele app.

Staatloosheid

Het losjes gekoppelde karakter van de cloud betekent dat apps niet gebonden zijn aan infrastructuur, wat betekent dat ze staatloos zijn. Een cloud-native app slaat zijn status op in een database of een andere externe entiteit, zodat instanties kunnen komen en gaan en de app nog steeds kan volgen waar in de werkeenheid de applicatie zich bevindt. “Dit is de essentie van losjes gekoppeld. Door niet aan de infrastructuur te zijn gebonden, kan een app op een sterk gedistribueerde manier worden uitgevoerd en toch zijn status behouden, onafhankelijk van de elastische aard van de onderliggende infrastructuur, ”zegt Kavis.

De meeste on-premises apps zijn stateful, wat betekent dat ze de status van de app opslaan op de infrastructuur waarop de code draait. Hierdoor kan de app worden verbroken bij het toevoegen van serverbronnen.

De uitdagingen van cloud-native computing

Een van de grote fouten die klanten maken, is proberen hun oude on-premise apps naar de cloud te verplaatsen, zegt Mann. "Als je probeert om bestaande applicaties - met name monolithische legacy-applicaties - over te zetten naar een cloudinfrastructuur, profiteer je niet van essentiële cloud-native functies."

In plaats daarvan moet u nieuwe dingen op nieuwe manieren proberen te doen, hetzij door nieuwe cloud-native applicaties in een nieuwe cloudinfrastructuur te plaatsen, of door bestaande monolieten op te splitsen om ze vanaf de grond af te hervormen met behulp van cloud-native principes.

U moet ook afzien van uw oude ontwikkelaarsmethoden. Het watervalmodel zal zeker niet werken, en zelfs agile ontwikkeling is misschien niet genoeg. U moet dus nieuwe cloud-native benaderingen toepassen, zoals de ontwikkeling van minimaal levensvatbare producten (MVP), multivariate testen, snelle iteratie en nauw samenwerken over de grenzen van de organisatie heen in een devops-model.

Cloud-native zijn heeft vele aspecten, waaronder infrastructuurservices, automatisering / orkestratie, virtualisatie en containerisatie, microservices-architectuur en observeerbaarheid. Dit alles betekent een nieuwe manier om dingen te doen, wat betekent dat je met oude gewoonten moet breken terwijl je de nieuwe manieren leert. Doe het dus in een afgemeten tempo.

Lees meer over gerelateerde cloud-native technologieën

  • Platform-as-a-service (PaaS) uitgelegd
  • Multicloud uitgelegd
  • Agile methodologie uitgelegd
  • Best practices voor Agile-ontwikkeling
  • Devops legde uit
  • Devops best practices
  • Microservices uitgelegd
  • Microservices-zelfstudie
  • Docker- en Linux-containers uitgelegd
  • Kubernetes-zelfstudie
  • CI / CD (continue integratie en continue levering) uitgelegd
  • CI / CD best practices