Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Qu'est-ce qu'une application "Cloud Native" ?

Par Jean-Sébastien AVRILA Publié le 15/08/2017 à 16:30:12 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Cloud-native est une approche pour construire et exécuter des applications qui exploitent pleinement les avantages du modèle de livraison du cloud computing. L'approche Cloud-native est la façon dont les applications sont créées et déployées, non pas où elles sont exécutées. Bien que le cloud public actuel nuise à la réflexion sur l'investissement dans les infrastructures pour pratiquement toutes les industries, un modèle de livraison sans cloud n'est pas exclusif pour les environnements publics. Il convient aux cloud publics et privés. Le plus important est la capacité d'offrir des ressources informatiques presque illimitées, à la demande, ainsi que des services modernes de données et d'applications pour les développeurs. Lorsque les entreprises créent et exploitent des applications de manière native sur le cloud, elles apportent de nouvelles idées au marché plus rapidement et répondent plus rapidement aux demandes des clients.

Les organisations ont besoin d'une plate-forme pour créer et exploiter des applications natives du cloud qui automatisent et intègrent les concepts de DevOps, de livraison en continue, de microservices et de conteneurs:

La culture DevOps est la collaboration entre les développeurs de logiciels et les administrateurs systèmes dans le but de fournir constamment des logiciels de haute qualité qui résolvent les défis des clients. Il crée une culture et un environnement où le développement, les tests et la mise en production se produisent rapidement, fréquemment et de manière plus cohérente.

Le déploiement en continue, activée par les pratiques de développement de produits agile, concerne l'envoi de release de logiciels à la production en permanence, par l'automatisation. La livraison en continue rend le déploiement ennuyeux et fiable, afin que les organisations puissent fournir fréquemment, avec moins de risques et obtenir des retours plus rapides des utilisateurs finaux.

Les microservices sont une approche architecturale pour développer une application en tant que collection de petits services; Chaque service met en œuvre les capacités commerciales, s'exécute dans son propre processus et communique via HTTP API ou messagerie. Chaque microservice peut être déployé, amélioré, mis à l'échelle et redémarré indépendamment d'autres services de l'application, généralement dans le cadre d'un système automatisé, permettant des mises à jour fréquentes des applications en direct sans impact sur les clients finaux.

Les conteneurs offrent à la fois l'efficacité et la vitesse par rapport aux machines virtuelles standard (VM). En utilisant la virtualisation au niveau du système d'exploitation (OS), une instance de système d'exploitation unique est répartie de façon dynamique parmi un ou plusieurs conteneurs isolés, chacun doté d'un système de fichiers et d'un quota de ressources. Les faibles coûts généraux de la création et de la destruction de conteneurs combinés à la densité de déploiement possible dans une VM unique font des conteneurs une unité de calcul idéal pour le déploiement de microservices individuels.

Pourquoi les applications Cloud-Native importent ?

Les applications cloud-native sont conçues pour le cloud. Ces applications, intégrées et déployées à une cadence rapide par de petites équipes de développement dédiées à une plate-forme qui offre une mise à l'échelle facile et un découplage matériel, fournissent aux organisations une plus grande agilité, résilience et portabilité sur les environnements cloud.

Le cloud en tant qu'avantage concurrentiel: Cloud-native signifie changer les objectifs d'économies de coûts informatiques en moteur de croissance de l'entreprise. À l'ère des applications, les entreprises qui peuvent rapidement créer et livrer des applications en réponse aux besoins des clients domineront leurs industries.

Permettre aux équipes de se concentrer sur la résilience: Les systèmes d'informations échouent et ne sont finalement que dans un état partiellement dégradé. Dans un environnement cloud-natif, les équipes s'adaptent à la réalité et conçoivent des architecture faite pour la résilience. Une approche cloud-native aide les développeurs et les architectes à concevoir des systèmes qui restent en ligne indépendamment quelque soit la plateforme sous-jacente.

Gains en flexibilité: Les fournisseurs de cloud publics continuent d'offrir des services impressionnants à des coûts raisonnables. Mais la plupart des entreprises ne sont pas prêtes à choisir qu'une seule infrastructure. Avec une plate-forme prenant en charge une approche native du cloud, les entreprises créent des applications qui s'exécutent sur n'importe quel cloud (public ou privé) sans modification. Les équipes conservent la possibilité d'exécuter des applications et des services là où elles ont le sens le plus commercial sans se bloquer dans le cloud d'un fournisseur.

Aligner les systèmes d'informations avec le business d’entreprise: En automatisant les opérations informatiques, les entreprises peuvent se transformer en une équipe recentré, ciblée et alignée sur le business d'entreprise. Ils éliminent le risque d'échec en raison d'une erreur humaine, car le personnel se concentre sur les améliorations automatisées pour remplacer les tâches d'administration courantes et banales. Avec des correctifs et des mises à niveau automatiques en direct à tous les niveaux de la pile, ils éliminent les temps d'arrêt et la nécessité de consulter des experts sur un domaine précis.

Les différences entre les applications traditionnelles et les applications cloud-natives

Applications traditionelles

Imprévisible. Les applications traditionnelles ne permettent pas de bénéficier de tous les avantages de l'exécution sur une plate-forme native du cloud en raison de la façon unique dont chacune est conçue ou développée. Ce type d'application prend souvent plus de temps à développer, avec des mises à jour importantes, ne peut qu’être mis à l’échelle progressivement et suppose une grande disponibilité de services dépendants.

Dépendance au système d'exploitation. L'architecture d'application traditionnelle permet aux développeurs de créer des dépendances étroites entre l'application et les systèmes sous-jacents d'OS, de matériel, de stockage et de support. Ces dépendances rendent la migration et la mise à l'échelle de l'application à travers les nouvelles infrastructures complexes et risquées, ce qui est en opposition du modèle de cloud.

Capacité surdimensionnée. L'informatique traditionnelle propose une solution d'infrastructure personnalisée pour une application, retardant le déploiement de l'application. La solution est souvent surdimensionnée en fonction des estimations de la capacité au pire des cas, avec peu de capacité à dépasser pour répondre à la demande.

Isolée. L'informatique traditionnelle exploite un code d'application finalisé des développeurs vers les administrateurs, qui ensuite passe en production. Les priorités organisationnelles prennent le pas sur la valeur du client, ce qui entraîne des conflits internes, une livraison lente et compromise et un moral médiocre du personnel.

Baisse de rendement. Les équipes informatiques publient périodiquement des logiciels, généralement des semaines ou des mois, lorsque le code a été intégré à une version malgré le fait que beaucoup des composants de la version sont prêts plus tôt et n'ont aucune dépendance autre que le processus de release. Les fonctionnalités que les clients veulent ou ont besoin sont retardées et l'entreprise manque d'opportunités pour concurrencer, gagner des clients et accroître les revenus.

Dépendante. Les architectures monolithiques regroupent de nombreux services disparates dans un seul package de déploiement, ce qui entraîne des dépendances inutiles entre les services et entraîne une perte d'agilité lors du développement et du déploiement.

Mise à l'échelle manuelle. L'infrastructure manuelle comprend des opérateurs humains qui manient et gèrent manuellement les configurations de serveurs, de réseaux et de stockage. À grande échelle, les ingénieurs tardent à diagnostiquer correctement les problèmes et échouent facilement à l'implémentation correcte en raison du niveau de complexité. Les recettes automatisées artisanales ont le potentiel d'augmenter les erreurs humaines dans l'infrastructure.

Restauration lente. L'infrastructure basée sur VM est une base lente et inefficace pour les applications basées sur les microservices, car les machines virtuelles individuelles sont lentes pour démarrer/arrêter et intègrent des composants inutiles, même avant de leur intégrer le code d’application.

Applications cloud-natives

Prévisible. Les applications cloud-natives sont conformes à un cadre ou à un «contrat» conçu pour maximiser la résilience grâce à des comportements prévisibles. L'infrastructure hautement automatisée et axée sur les conteneurs utilisée sur les plates-formes cloud permet de définir la manière dont les logiciels sont écrits. Un bon exemple d'un tel «contrat» est illustré par les 12 principes préalablement documentés comme application à 12 facteurs.

Abstraction du système d'exploitation. Une architecture d'application native en nuage permet aux développeurs d'utiliser une plate-forme comme un moyen d'abstraire des dépendances d'infrastructure sous-jacentes. Au lieu de configurer, de corriger et de maintenir les systèmes d'exploitation, les équipes se concentrent sur leur logiciel. Le moyen d'abstraction le plus efficace est une plate-forme formelle, comme Kubernetes, idéal pour fonctionner sur une infrastructure basée sur les plateformes cloud, comme Google Cloud Platform (GCP), Microsoft Azure ou Amazon Web Services (AWS).

Bon dimensionnement. Une plate-forme d'application cloud-native automatise l'approvisionnement et la configuration d'infrastructure, allouant et réaffectant dynamiquement les ressources au moment du déploiement en fonction des besoins continus de l'application. S'appuyer sur un runtime en cloud optimise la gestion du cycle de vie de l'application, y compris la mise à l'échelle pour répondre à la demande, l'utilisation des ressources, l'orchestration sur les ressources disponibles et la récupération des pannes pour minimiser les temps d’indisponibilité.

Collaboration. Le cloud facilite la culture DevOps, une combinaison de personnes, de processus et d'outils, ce qui se traduit par une collaboration étroite entre les fonctions de développement et d'exploitation pour accélérer et transformer le transfert de code d'application fini en production.

Déploiement en continue. Les équipes informatiques rendent disponibles les mises à jour logicielles dès qu'elles sont prêtes. Les organisations qui publient des logiciels obtiennent rapidement une boucle de rétroaction plus étroite et peuvent répondre plus efficacement aux besoins des clients. Le déploiement en continue fonctionne mieux avec d'autres approches connexes, y compris le développement axé sur les tests et l'intégration continue.

Indépendante. L'architecture de Microservices décompose les applications en petits services indépendants. Ces services correspondent à des équipes de développement indépendantes plus petites et permettent des mises à jour fréquentes et indépendantes, une mise à l'échelle et un basculement/redémarrage sans affecter d'autres services.

Mise à l’échelle automatisé (Auto-Scaling). L'automatisation de l'infrastructure à l'échelle élimine les temps d'arrêt en raison d'une erreur humaine. L'automatisation de l'ordinateur n'est pas confrontée à un tel défi, en appliquant systématiquement le même ensemble de règles sur toute taille de déploiement. Le développement cloud-natif va également au-delà de l'automatisation ad hoc intégrée à l'orchestration traditionnelle orientée vers la virtualisation. Une architecture totalement native du cloud consiste à automatiser les systèmes et non les serveurs.

Restauration rapide. Les conteneurs et l'orchestrateur de conteneur (Scheduler) fournissent une virtualisation à haute densité via l’utilisation d’isolation des ressources natives au noyau linux s’exécutant sur une machine virtuelle, idéalement adaptée aux microservices et conteneurs. L'orchestration gère dynamiquement le placement de conteneurs dans un cluster de machines virtuelles pour fournir une élasticité et une restauration/redémarrage en cas d'échec d'une application ou d'une infrastructure.

Ce qu’il faut retenir avant de s’y lancer

Les processus seront transformés dans un monde cloud-natif. Votre équipe opérationnelle sera promue de « gardiens de serveurs » vers l'amélioration des processus et de l'automatisation, offrant une valeur directe à l'entreprise. Une plate-forme native en nuage prend en charge les opérations de la release à la production, surveillant et corrigeant automatiquement les problèmes qui nécessitaient préalablement une intervention manuelle.

Toutes les charges de travail n’ont pas à être converties en applications coud-natives. Les business et les professionnels de l'informatique doivent travailler ensemble pour hiérarchiser les charges de travail éligibles, l'importance stratégique et, par conséquent, le ROI sur une migration cloud-native dans chaque cas. En plus du développement « from scratch » , une variété de modèles de « refactoring » sont disponibles pour aider à cette évaluation.

Les développeurs devront respecter des règles. Pour tirer parti des avantages d'une plate-forme cloud-native, les développeurs auront probablement besoin de plus de discipline pour suivre les principes de 12 facteurs et normaliser leur plate-forme et leurs services. Avec tant de choix disponibles aujourd'hui, il est tentant d'adopter de nouvelles technologies et modèles pour chaque application. Les équipes intelligentes adoptent un ensemble de contraintes déterminées afin qu'elles soient libres de se concentrer sur des logiciels innovants, sans réinventer la roue pour les capacités de base.

Besoin d'une plate-forme; Construire ou acheter ? De nombreuses équipes explorent la construction de leur propre plate-forme à partir d'une combinaison d'automatismes open-source et de technologies de conteneurs. Cependant, ils découvrent bientôt qu'ils ont besoin de plus de composants qu'ils ne pensaient, tous non conçus pour fonctionner ensemble et que leur effort retarderait le démarrage du véritable travail de développement d'applications. Ajoutez à cela le fait qu'une fois que les équipes ont une plate-forme de travail, elles doivent la maintenir. Comparez cette expérience avec l'utilisation d'une plate-forme approuvée et intégrée. À partir du 1er jour, les équipes peuvent se concentrer sur la construction d'applications qui conduisent l'entreprise, faisant confiance en la capacité de la plate-forme à prendre en charge les opérations et l’infrastructure.

Ne pas à y aller seul. Apprendre par immersion, par exemple, en utilisant des Labs, peut soigner complètement une équipe dans des pratiques de développement de produits Agile telles que le déploiement en continue et renforcer les nouvelles habitudes de développement. Il existe une foule d'informations sur ce modèle: consommez-les et essayez-les. C'est une chance pour les équipes d'essayer quelque chose de nouveau si elles sont dans ces 75% qui ont l'impression que leurs organisations ne sont pas suffisamment agiles.

Glossaire

Scheduler: ici nous faisant références à des clusters managers open-source tels que Kubernetes, Nomad ou Mesos.

From scratch: Développer en partant de rien.

Refactoring: Redéfinir les bases d’une application ou d'un système afin d’en améliorer les performances et la flexibilité.

Applications 12 facteurs: Il s'agit d'un ensemble de bonnes pratiques à respecter, voir à cette adresse.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels