Le Cloud Native
S’engager dans une démarche 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.
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
-
Scalabilité
-
Flexibilité
-
Rapidité
-
Sécurité
7 conseils pour adopter le Cloud Native
-
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. -
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. -
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. -
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.
-
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
-
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.
-
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.
DÉLIVRER PLUS ET PLUS VITE SANS SACRIFIER LE COÛT ET LA SÉCURITÉ
Ce guide vous permet d'identifier votre maturité Cloud Native et de découvrir comment accélérer votre transformation technologique.
LES LEVIERS POUR ADOPTER LE CLOUD NATIVE À GRANDE ÉCHELLe
Les critères et les méthodologies technologiques seront déterminants mais pour réussir à plus grande échelle d’autres leviers sont à activer.
1. Être centré sur la DATA
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
-
Kubernetes
-
Argo
-
Prometheus
-
Falco
-
Serverless Framework
-
Kafka
- Contactez un expert