Que signifie réellement Cloud Native ?
Les applications Cloud Native utilisent les avantages des composants d’infrastructure cloud modernes pour faciliter des déploiements évolutifs rapides. Un système « cloud natif » est créé à partir de la combinaison de plusieurs attributs indépendants. Il aura des niveaux élevés d’automatisation et de découplage des dépendances, ce qui se traduira par une résilience supérieure au changement en raison des versions de code et des mises à niveau de l’environnement.
Plus que de simples qualités techniques, la plupart des commentateurs associent également le cloud native aux pratiques de travail et à l’état d’esprit de l’organisation chargée de la mise en œuvre. Les organisations natives du cloud adopteront activement le cloud pour l’ensemble de leur pile, le considérant comme une caractéristique distinctive de leur offre. Cela contraste avec les fournisseurs qui voient le cloud simplement comme un centre de données qui gère leurs services.
Sommaire
Définitions variables
Comme pour de nombreux mots à la mode sur le cloud, vous obtiendrez des réponses différentes sur ce qui constitue le cloud natif en fonction de la personne à qui vous posez la question.
Microsoft dit que le terme décrit des systèmes qui « embrassent le changement rapide, à grande échelle et la résilience ». Pour VMWare, il s’agit « d’une approche de création et d’exécution d’applications qui exploite les avantages du modèle de prestation de cloud computing ». Oracle souligne comment le cloud natif est fondé sur « l’informatique distribuée ».
RedHat est plus spécifique, déclarant que les applications natives du cloud sont « un ensemble de petits services indépendants et faiblement couplés » qui offrent « une valeur commerciale bien reconnue ». La dernière partie reconnaît que le cloud natif est bien plus qu’un logiciel. Un système cloud natif réussi doit fournir des résultats tangibles pour votre entreprise, qu’il s’agisse d’une satisfaction client accrue ou d’un délai de lancement réduit.
La charte de la Cloud Native Computing Foundation définit le concept comme un paradigme de « systèmes à couplage lâche qui sont résilients, gérables et observables ». Ils facilitent les « changements à fort impact [made] fréquemment et de manière prévisible avec un minimum de travail.
Traits natifs du cloud
Il n’y a pas de chemin unique pour devenir cloud natif. La terminologie est flexible et basée sur des caractéristiques qualitatives. Les systèmes natifs du cloud seront généralement fondés sur des microservices déployés avec un orchestrateur de conteneurs, utilisant des flux de déploiement automatisés pour déplacer le code dans le pipeline. La mise en œuvre effective appartient à chaque organisation.
Ce modèle permet de lancer rapidement de nouveaux changements sans perte de contrôle. Les développeurs valident les modifications, les poussent vers un référentiel et laissent leur pipeline CI déployer une nouvelle version en production. L’automatisation réduit le risque d’erreurs et donne aux développeurs plus de possibilités de se concentrer sur l’écriture de nouveau code.
L’accélération du cycle de développement qui en résulte augmente la productivité globale, offrant plus de fonctionnalités aux utilisateurs dans un délai plus court. Cela contribue à la satisfaction et à l’engagement des clients, en projetant une image d’une base de code en constante évolution où les bogues sont corrigés peu de temps après leur découverte.
Cependant, le cloud natif n’est pas tout à fait « laissez la machine faire le travail ». Un autre principe fondamental est l’observabilité, la notion selon laquelle les systèmes doivent faire apparaître leur état interne d’une manière facilement accessible aux équipes d’exploitation.
Une surveillance, un traçage et une journalisation efficaces vous donnent une visibilité lorsque des problèmes surviennent. Un système observable fait apparaître les informations dont vous avez besoin pour résoudre les problèmes. Vous utilisez les capacités d’introspection de votre infrastructure pour découvrir le cycle de vie des demandes, de votre maillage aux services individuels et vice-versa.
Séparation des préoccupations
Une caractéristique essentielle des systèmes cloud natifs est un découplage fort. Cela va de pair avec le modèle de microservice. Les services doivent pouvoir être autonomes sans dépendances dures les uns par rapport aux autres. Cela augmente la résilience et facilite l’échange de parties de votre pile à l’avenir.
Chaque unité fonctionnelle devient son propre microservice qui communique avec les autres via des API clairement définies. Il vous permet de séparer les différentes parties de votre système, aidant les développeurs à se concentrer sur leur domaine spécifique et vous permettant de placer des garanties plus solides autour des services critiques en production. Votre service d’authentification peut bénéficier d’un degré d’isolement supérieur à celui de vos conteneurs Web à usage général.
Le découplage des services les rend plus évolutifs afin que votre système soit mieux équipé pour répondre aux changements de la demande des utilisateurs. Si la couverture médiatique provoque une augmentation du nombre d’inscriptions d’utilisateurs, vous pouvez rapidement ajouter d’autres instances de votre backend de service d’inscription pour gérer le trafic supplémentaire. Une approche conventionnelle avec une application monolithique sur une VM ou un serveur bare-metal ne pouvait pas s’adapter de cette manière.
Les avantages commerciaux
Devenir cloud natif a souvent des impacts significatifs sur l’organisation dans son ensemble. Une évolutivité améliorée peut réduire les coûts, augmenter la disponibilité des services et garder l’infrastructure en avance sur les utilisateurs. Tout cela conduit à une plate-forme plus compétitive et suffisamment agile pour répondre aux changements du marché.
Les systèmes hérités peuvent ne pas avoir de procédures de déploiement établies, s’appuyant plutôt sur un cumul périodique des changements récents dans la production. Cela rend impossible une réponse rapide aux préoccupations des clients. Dans un système cloud natif, vous pouvez réagir aux tickets au fur et à mesure qu’ils arrivent. Le code est généralement expédié juste après une fusion, ce qui vous permet d’apporter des améliorations en quelques minutes au lieu de plusieurs jours.
Les systèmes natifs du cloud peuvent également être plus attrayants pour les développeurs, ce qui facilite l’embauche des meilleurs talents. L’utilisation de technologies telles que Docker et Kubernetes en production démontre un engagement envers des flux de travail modernes qui rendent le développement quotidien moins exigeant. La possibilité d’accéder à des ingénieurs hautement qualifiés se traduit généralement par de meilleurs produits construits en moins de temps, créant un cycle autonome qui amorce une reprise de la croissance de l’organisation.
Cloud Native et DevOps
Les systèmes natifs du cloud sont souvent le résultat de bonnes pratiques DevOps. Alors que DevOps décrit l’interaction entre les équipes de développement et d’exploitation, le cloud natif se concentre sur le résultat de cette interaction et son impact sur l’entreprise au sens large.
Le cycle DevOps maintient une boucle étroite entre la planification, la création, les tests, la publication et la surveillance. Il augmente la vitesse de développement en définissant clairement la séquence des événements dans le cycle de vie d’une nouvelle fonctionnalité. Le respect des principes DevOps augmente la probabilité qu’un système soit un citoyen efficace du cloud.
Les deux ont tendance à surgir l’un de l’autre. Si vous pratiquez sciemment l’un des termes, vous profitez probablement déjà des avantages de l’autre. Les systèmes natifs du cloud sont déployés automatiquement à une cadence régulière ; l’utilisation efficace des outils DevOps tels que les pipelines CI/CD est le moyen logique de mettre en œuvre des flux de développement rapides.
Qu’en est-il de « Cloud activé ? »
Vous pouvez rencontrer des systèmes décrits comme « compatibles avec le cloud » au lieu de natifs du cloud. Ce terme fait généralement référence aux applications qui passent des modèles de développement et de déploiement traditionnels aux alternatives au cloud.
Un système compatible cloud fonctionnera à l’aide d’une infrastructure cloud mais peut ne pas être entièrement découplé et modularisé. Si vous avez un ancien monolithe, il est généralement relativement simple de le conditionner en tant que conteneur Docker et de le lancer dans le cloud. Cela offre des avantages immédiats, notamment la perspective de déploiements automatisés et un certain degré d’évolutivité.
La couche d’application est toujours un monolithe cependant. Une période de refactoring sera nécessaire pour diviser la pile en microservices découplés capables de s’adapter individuellement les uns aux autres. Un monolithe conteneurisé ne peut pas offrir le même degré de résilience qu’un système conçu et construit pour le cloud.
L’activation d’un système dans le cloud est la première étape pour en faire un citoyen natif du cloud. Elle peut être suivie d’une approche « basée sur le cloud », où l’application s’exécute principalement dans le cloud avec un degré élevé de séparation des services. Il peut toujours y avoir des liens obligatoires entre les composants ou des liens vers l’infrastructure existante. L’architecture peut être qualifiée de « cloud native » une fois que ceux-ci ont été éliminés.
Résumé
Un système cloud natif est un système qui utilise tout ce que le cloud peut offrir pour accélérer le développement, automatiser les déploiements et augmenter la résilience et l’observabilité. C’est le résultat d’un investissement organisationnel dans des outils et des pratiques modernes, permettant aux équipes d’expédier le code plus rapidement et d’apporter une valeur ajoutée à l’entreprise.
Devenir cloud natif ne se fait pas du jour au lendemain. Selon la taille de votre système, il peut être acceptable de viser d’abord une approche « compatible avec le cloud » ou « basée sur le cloud ». L’évolution progressive de votre architecture vous permet de choisir des fruits à portée de main et de surveiller l’impact des changements individuels, vous donnant ainsi un aperçu de la rentabilité de vos efforts.