Qu'est-ce que le cloud natif? La façon moderne de développer des logiciels

Le terme «cloud natif» est souvent utilisé, en particulier par les fournisseurs de cloud. Non seulement cela, mais il a même sa propre fondation: la Cloud Native Computing Foundation (CNCF), lancée en 2015 par la Linux Foundation.

Définition de "Cloud-native"

En général, «cloud-native» est une approche de création et d’exécution d’applications qui exploite les avantages du modèle de fourniture de cloud computing. «Cloud-native» concerne la façon dont les applications sont créées et déployées, pas où. Cela implique que les applications vivent dans le cloud public, par opposition à un centre de données sur site.

La CNCF définit «cloud-native» un peu plus étroitement, ce qui signifie utiliser une pile de logiciels open source à conteneuriser, où chaque partie de l'application est packagée dans son propre conteneur, orchestrée dynamiquement afin que chaque partie soit activement planifiée et gérée pour optimiser les ressources utilisation et orientée microservices pour augmenter l'agilité globale et la maintenabilité des applications.

«Une application cloud native est conçue spécifiquement pour fonctionner dans la nature élastique et distribuée requise par les plates-formes de cloud computing modernes», déclare Mike Kavis, directeur général du cabinet de conseil Deloitte. «Ces applications sont faiblement couplées, ce qui signifie que le code n'est câblé à aucun des composants de l'infrastructure, de sorte que l'application peut évoluer à la demande et adopter les concepts d'infrastructure immuable. En règle générale, ces architectures sont construites à l'aide de microservices, mais ce n'est pas une exigence obligatoire. »

Pour les applications cloud natives, la grande différence réside alors dans la manière dont l'application est construite, livrée et exploitée, déclare Andi Mann, principal défenseur de la technologie chez Splunk, un fournisseur de services cloud. «Tirer parti des services cloud signifie utiliser des composants agiles et évolutifs tels que des conteneurs pour fournir des fonctionnalités discrètes et réutilisables qui s'intègrent de manière bien décrite, même au-delà des frontières technologiques telles que le multicloud, ce qui permet aux équipes de livraison d'itérer rapidement en utilisant une automatisation et une orchestration répétables.»

Le développement d'applications cloud natives comprend généralement des devops, une méthodologie agile, des microservices, des plates-formes cloud, des conteneurs tels que Kubernetes et Docker, et une livraison continue - en bref, chaque méthode nouvelle et moderne de déploiement d'application.

Pour cette raison, vous voulez vraiment avoir un modèle de plate-forme en tant que service (PaaS). Un PaaS n'est pas nécessaire, mais cela facilite beaucoup les choses. La grande majorité des clients du cloud commencent avec une infrastructure en tant que service (IaaS), qui permet d'abstraire leurs applications du matériel sous-jacent. Mais PaaS ajoute une couche supplémentaire pour abstraire le système d'exploitation sous-jacent, afin que vous puissiez vous concentrer entièrement sur la logique métier de votre application et ne pas vous soucier de faire des appels au système d'exploitation.

Vidéo connexe: Qu'est-ce que l'approche cloud native?

Dans cette vidéo de 60 secondes, découvrez comment l'approche cloud native change la façon dont les entreprises structurent leurs technologies, de Craig McLuckie, fondateur et PDG de Heptio, et l'un des inventeurs de Kubernetes open source.

Différences entre les applications cloud natives et locales

Le développement d'applications cloud natives nécessite une architecture très différente de celle des applications d'entreprise traditionnelles.

Langues

Les applications locales écrites pour s'exécuter sur des serveurs d'entreprise ont tendance à être écrites dans des langages traditionnels, tels que C / C ++, C # ou un autre langage Visual Studio s'ils sont déployés sur une plate-forme Windows Server et Java d'entreprise. Et si c'est sur un mainframe, c'est probablement en Cobol.

Les applications cloud natives sont plus susceptibles d'être écrites dans un langage Web centré, ce qui signifie HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python et Ruby.

Actualisabilité

Les applications cloud natives sont toujours à jour et à jour. Les applications cloud natives sont toujours disponibles.

Les applications sur site nécessitent des mises à jour et sont généralement fournies sur la base d'un abonnement par le fournisseur et nécessitent des temps d'arrêt pendant l'installation de la mise à jour.

Élasticité

Les applications cloud natives tirent parti de l'élasticité du cloud en utilisant des ressources accrues lors d'un pic d'utilisation. Si votre application de commerce électronique basée sur le cloud connaît un pic d'utilisation, vous pouvez la configurer pour utiliser des ressources de calcul supplémentaires jusqu'à ce que le pic diminue, puis désactiver ces ressources. Une application cloud native peut s'adapter à l'augmentation des ressources et évoluer selon les besoins.

Une application sur site ne peut pas évoluer de manière dynamique.

Locations multiples

Une application cloud native n'a aucun problème à travailler dans un espace virtualisé et à partager des ressources avec d'autres applications.

De nombreuses applications sur site ne fonctionnent pas bien dans un environnement virtuel ou ne fonctionnent pas du tout et nécessitent un espace non virtualisé.

Ressources connectées

Une application sur site est assez rigide dans ses connexions aux ressources réseau, telles que les réseaux, la sécurité, les autorisations et le stockage. Beaucoup de ces ressources doivent être codées en dur et elles se cassent si quelque chose est déplacé ou changé.

«Le réseau et le stockage sont complètement différents dans le cloud. Lorsque vous entendez le terme «re-plateforme», c'est généralement le travail pour s'adapter aux changements dans les technologies de mise en réseau, de stockage et même de base de données pour permettre à l'application de s'exécuter dans le cloud », déclare Kavis de Deloitte.

Temps d'arrêt

Il y a une plus grande redondance dans le cloud que sur site, donc si un fournisseur de cloud subit une panne, une autre région peut prendre le relais.

Le basculement est peut-être prêt pour les applications locales, mais il y a de fortes chances que si le serveur tombe en panne, l'application tombe avec lui.

Automatisation

Une grande partie du cloud est automatisée, et cela inclut la gestion des applications. «Les avantages de la livraison native dans le cloud, en particulier la vitesse et l'agilité, reposent largement sur un substrat de processus fiables, éprouvés et audités qui sont exécutés à plusieurs reprises selon les besoins par des outils d'automatisation et d'orchestration plutôt que par une intervention manuelle», déclare Splunk's Mann. Les ingénieurs doivent chercher à automatiser pratiquement tout ce qu'ils font plus d'une fois pour permettre la répétabilité, le libre-service, l'agilité, l'évolutivité, l'audit et le contrôle.

Les applications sur site doivent être gérées manuellement.

Conception modulaire

Les applications sur site ont tendance à être monolithiques dans leur conception. Ils délèguent du travail vers les bibliothèques, bien sûr, mais en fin de compte, c'est une grosse application avec beaucoup de sous-programmes. Les applications cloud natives sont beaucoup plus modulaires, avec de nombreuses fonctions décomposées en microservices. Cela leur permet d'être éteints lorsqu'ils ne sont pas nécessaires et de déployer des mises à jour sur ce module, plutôt que sur l'ensemble de l'application.

Apatridie

La nature faiblement couplée du cloud signifie que les applications ne sont pas liées à l'infrastructure, ce qui signifie qu'elles sont sans état. Une application cloud native stocke son état dans une base de données ou une autre entité externe afin que les instances puissent aller et venir et que l'application puisse toujours suivre où se trouve l'application dans l'unité de travail. «C'est l'essence du couplage lâche. Le fait de ne pas être lié à l'infrastructure permet à l'application de fonctionner de manière hautement distribuée tout en conservant son état indépendamment de la nature élastique de l'infrastructure sous-jacente », explique Kavis.

La plupart des applications locales sont avec état, ce qui signifie qu'elles stockent l'état de l'application sur l'infrastructure sur laquelle le code s'exécute. L'application peut être interrompue lors de l'ajout de ressources serveur à cause de cela.

Les défis de l'informatique cloud native

L'une des grandes erreurs commises par les clients est d'essayer de soulever et de déplacer leurs anciennes applications sur site vers le cloud, explique Mann. «Tenter de prendre des applications existantes - en particulier des applications monolithiques héritées - et de les déplacer vers une infrastructure cloud ne profitera pas des fonctionnalités essentielles natives du cloud.»

Au lieu de cela, vous devriez chercher à faire de nouvelles choses de manière nouvelle, soit en intégrant de nouvelles applications cloud natives dans une nouvelle infrastructure cloud, soit en décomposant les monolithes existants pour les refactoriser en utilisant les principes cloud natifs à partir de zéro.

Vous devez également vous passer de vos anciennes méthodes de développement. Le modèle en cascade ne fera certainement pas l'affaire, et même le développement agile pourrait ne pas suffire. Vous devez donc adopter de nouvelles approches cloud natives telles que le développement de produit minimum viable (MVP), les tests multivariés, l'itération rapide et le travail en étroite collaboration au-delà des frontières organisationnelles dans un modèle devops.

Le cloud natif comporte de nombreux aspects, notamment les services d'infrastructure, l'automatisation / l'orchestration, la virtualisation et la conteneurisation, l'architecture des microservices et l'observabilité. Tout cela signifie une nouvelle façon de faire les choses, ce qui signifie briser les vieilles habitudes en apprenant les nouvelles façons. Alors faites-le à un rythme mesuré.

En savoir plus sur les technologies cloud natives associées

  • Platform-as-a-service (PaaS) expliqué
  • Explication du multicloud
  • Explication de la méthodologie agile
  • Bonnes pratiques de développement agile
  • Devops expliqué
  • Bonnes pratiques Devops
  • Explication des microservices
  • Tutoriel sur les microservices
  • Explication des conteneurs Docker et Linux
  • Tutoriel Kubernetes
  • CI / CD (intégration continue et livraison continue) expliqué
  • Meilleures pratiques CI / CD