Contact

Cloud Native

Qu’est-ce que le Cloud Native ?

Comment adopter une approche Cloud Native ? Quelles sont les bonnes pratiques de développement ? Quelles sont les technologies associées ? 

Illustration - Nos expertises-5-min

Définition du cloud native

Avant d'appréhender ces questions, il faut d’abord bien comprendre le Cloud Native. Trop souvent l’adoption du cloud s'arrête au Lift & Shift et ne tire pas parti de l’ensemble des avantages du Cloud. L’enjeu n’est pas de se concentrer sur des projets isolés, ni de se limiter à un aspect technologique, mais d’adopter une pratique Cloud Native à l’échelle.

Selon la Cloud Native Computing Foundation (CNCF) : Les technologies Cloud Natives permettent aux organisations de créer et d'exécuter des applications évolutives dans des environnements dynamiques et modernes, tels que des clouds publics, privés ou hybrides.

Les applications sont développées sur des cycles courts. Les équipes se basent sur les données et les feedbacks utilisateurs pour les améliorer.

Definition Image

Quels sont les avantages du Cloud Native ?

Les applications Cloud Native sont résilientes. Elles sont tolérantes aux pannes, car conçues pour s'exécuter dans des environnements éphémères qui sont considérés comme jetables. C’est par exemple le cas dans le Cloud public qui met en avant le modèle Cattle.

L’usine logicielle intègre également des contraintes de sécurité :

  • Analyse du code
  • Scan de vulnérabilité
  • Chiffrement
  • Rotation des secrets
  • icon_SCALE

    Scalabilité

    Les architectures Cloud Native garantissent la scalabilité horizontale et non verticale. Elles sont donc adaptées aux environnements Cloud. 

  • icon_FLEX

    Flexibilité

    Le cycle de développement court permet de concrétiser la démarche test and learn rapidement. Les applications Cloud Native sont faites pour évoluer vite. Elles peuvent être abandonnées à moindre coût quand le succès n’est pas au rendez-vous.

  • icon_SPEEDsvg

    Rapidité

    Le Cloud Native automatise toute la chaîne de production logicielle. Il s'appuie sur l’Intégration Continue (CI) et le Déploiement Continu (CD). L’adoption du modèle GitOps en est un bon exemple.

  • icon_SECOPS_1_V2

    Sécurité

    La sécurité est intégrée dès la conception dans le paradigme Cloud Native. Les API construites sont fortement authentifiées. Elles prennent en compte la gestion des autorisations.

Comment développer une application Cloud Native ?

Une application Cloud Native doit respecter les “Twelve Factors”. Ces patterns d’architecture sont une base indispensable. Ils donnent un guide clair des pratiques de développement à appliquer.

Ces douze règles définies par Heroku, sont reprises par la communauté pour développer des applications adaptées à ce célèbre PaaS. Au fil du temps, ces règles se sont érigées en standard de-facto pour tout développement Cloud Native.

Il faut aussi avoir en tête que pour réussir une approche Cloud Native, la technologie ne fera pas tout.

  1. Traitez les services externes comme des dépendances.

    L’application cloud native consomme indifféremment ses services tiers (un bus de message, une base de données, ou un service). Quelle que soit leur implémentation (MySQL local, base RDS, Cloud SQL, …) et sans impact sur la base de code.

    Tout comme pour la configuration, les services doivent être découverts à l'exécution et reposent sur le principe d’un couplage lâche.

  2. Faites du stateless (sans états) la norme.

    L’application doit être exécutée comme un processus sans état. Elle ne doit pas maintenir d’état (étape de workflow, état du panier, …) en mémoire à l’intérieur du processus.

    Il est possible de stocker des données de contexte dans un ou des services externes en cas de besoin. Ainsi l’application peut réellement supporter la scalabilité horizontale.

  3. Développez du jetable.

    Vos applications doivent démarrer rapidement et supporter une extinction propre et rapide. C’est dans ces conditions qu’elles supporteront les arrêts/relances liés à la scalabilité.

    Pensez à la fin de consommation des services externes par exemple. L'application doit refléter la nature éphémère du cloud.

  4. Pensez API (API First).

    Les services sont construits et pensés initialement comme des APIs. Toute tâche de développement commence donc par la définition des contrats d’interface et leur implémentation. Cela favorise la réutilisation des services ainsi que leur évolution. Les microservices, et les fonctions serverless en sont de bons exemples.

  5. Observez, mesurez, surveillez.

    Toute application est observable. Elle doit communiquer son état de santé à travers des Health checks. Elle fournit des données à une plateforme d’observabilité. Ces métriques permettent par exemple : de gérer les dégradations, d’assurer la reprise sur erreur, de collecter les comportements utilisateurs

  6. Prenez l’authentification et les autorisations en compte dès le départ.

    Les applications embarquent toujours la logique d’authentification et d’autorisation (via RBAC). Cela garantit la sécurité du système en évitant les accès non autorisés et l’escalade de privilège. Elles peuvent par exemple faire appel à : un Single Sign On (SSO), OAuth2 pour l’authentification.

  7. Oubliez les serveurs.

    Pour guider vos choix d’infrastructure, et de middleware, appliquez la règle du NoServer. Le Cloud Native repose sur des plateformes d’exécution qui font abstraction de l’infrastructure.

    Cela permet de se concentrer uniquement sur le code métier. Les architectures Cloud Native peuvent par exemple reposer sur le ServerLess.

Comprendre, Construire et grandir

Le guide complet pour comprendre le contexte et les enjeux du Cloud Native.

Quels leviers pour adopter le Cloud Native à grande échelle ?

Les 12 factors s’intéressent uniquement au cadre du développement d’une application. Ils parlent principalement de critères et de méthodologies technologiques. Pour réussir à plus grande échelle, il faut activer d’autres leviers.

1. Être centré sur la donnée

Vous devez pouvoir valoriser et faire parler les données collectées. Elles permettent d’adapter en permanence vos solutions aux utilisateurs. Les équipes doivent être capables de les exploiter pour orienter les développements. Elles ajoutent des fonctionnalités adaptées aux besoins des utilisateurs.

2. Concrétiser la culture DevOps

La culture DevOps est un atout majeur pour le cloud native. Beaucoup d’entreprises travaillent à l’ancrage de cette culture sans réel succès. Leur vision est limitée à l'adoption d’outils d’automatisation et d’observabilité.

La collaboration forte entre les équipes est rarement traitée comme une sujet de fond. Pourtant, les technologies cloud native sont complexes et concernent autant les développeurs que les ops. Elles nécessitent un vrai partage des rôles et des responsabilités, bref une prise de conscience commune.

3. Adopter le product management

L’approche Cloud Native est tournée vers la création de valeur et l’amélioration continue des services. Les applications et services doivent donc être pensés comme des produits, qu’ils soient à usage interne ou externe. L’adoption du product management est donc nécessaire.

Les outils cloud native

  • Contactez un expert

FAQ - Cloud Native