Quelle gouvernance pour les applications en containers et les microservices
Dans la gouvernance des containers et des microservices , l'objectif est aussi de jongler avec les avantages du Cloud, de la virtualisation et des applications basées sur les services. Cet article explique comment s’y prendre.
Difficile de dire quel est le sujet IT plus chaud, des containers ou des microservices , quand on aborde la question de la conception des applications. Un constat qui à lui seul fait de la gouvernance de ces deux concepts un élément critique pour les architectes, les développeurs et les spécialistes de l'exploitation.
La bonne nouvelle, c'est que de nombreuses pratiques de gouvernance peuvent être appliquées aux deux concepts. La mauvaise nouvelle, c'est qu'il y a beaucoup d'imprécision dans la définition des containers et des microservices , en particulier dans leur utilisation. Et cela peut bien sûr compliquer la mise en place d'un modèle de gouvernance. Pour y arriver, il convient de définir précisément l'usage que vous faites des deux concepts; d’aligner vos pratiques de conception, de développement et de déploiement sur ces définition; et d’être sûr d'utiliser des outils d'orchestration pour faciliter les prises de décision.
Il est ici essentiel que ces définitions soient précises pour comprendre la complexité. Cette précision est particulièrement clé dans la gouvernance des applications. Gouvernance, containers et microservices ont tous un problème en matière de définition de leur usage.
D’une façon générale, la gouvernance est le processus qui consiste à s'assurer que les applications, les ressources IT et les déploiements correspondent aux objectifs de l'entreprise. Cette mission est tellement vaste que la plupart des entreprises n'utilisent pas le terme de cette façon. Elles se concentrent plutôt sur les dimensions sécurité et de conformité de la "gouvernance". C'est ce terme que nous allons définir ici.
En ce sens, la gouvernance IT définit les exigences de sécurité en matière d’informations et d’applications. Dans l'IT traditionnelle, ces exigences sont souvent satisfaites de manière statique en utilisant des plateformes spéciales et le partitionnement de réseau. Cela permet de contrôler les accès aux applications et à l’information selon des adresses de ressources fixes. Mais tous ces mécanismes peuvent s'effondrer lorsque les relations entre les applications et les ressources sont modifiées dynamiquement et, surtout, lorsque les éléments fonctionnels sont partagés entre applications dont les exigences de gouvernance sont différentes. Dans la gouvernance des containers et des microservices , l'objectif est de restaurer la gouvernance sans compromettre les avantages du Cloud, de la virtualisation et de la conception d'applications orientées services. Pour ce faire, il est nécessaire de déterminer comment l’entreprise doit aborder la conception d’applications dans des environnements de containers et de microservices.
Si vous êtes venus à la virtualisation et au Cloud à partir de la machine virtuelle, vous pouvez considérer les containers comme une forme allégée de VM.
Si vous êtes venus aux containers du point de vue de la conception logicielle, vous pouvez les voir comme des unités de fonctionnalité pouvant être déployées -- le composant et son runtime. Si vous avez une formation SOA (Service Oriented Architecture), les microservices peuvent être une version moderne des principes SOA. Ils sont même destinés à remplacer complètement la SOA avec le Web. En un sens, l'architecture SOA est une vision très « plateforme » de la gouvernance. Le Web apporte plutôt une vision centrée sur les applications.
D'un point de vue technique, la question clé de la gouvernance des containers et des microservices est de savoir comment celle-ci se traduit réellement en termes d’outillage. Certains pensent qu'il s'agit toujours d'un attribut d’une plate-forme sur laquelle les applications sont exécutées; la gouvernance est donc une contrainte de l’environnement. D'autres considèrent que la gouvernance découle des objectifs, des politiques et des exigences en matière de sécurité de l'application.
Avec ces divergences, la gouvernance des containers et des microservices peut en effet être compliquée. Le meilleur moyen d'y remédier est de se créer son propre périmètre et sa propre définition et de s'y tenir. Sinon, l’incohérence, et l’inefficacité rythmeront les projets.
S'agit-il d'une gouvernance axée sur les applications ou la plateforme ?
La gouvernance centrée sur la plateforme s'appuie d'abord sur le partitionnement pour protéger l’IT et ensuite sur la gestion de l'API. Les informations et les applications protégées sont partitionnées au niveau du réseau afin d'éviter tout accès croisé par du personnel ou des applications non autorisés. De leur côté, les éléments applicatifs partagés tels que les microservices sont accessibles via des outils de gestion API. Ceux-ci appliquent des règles d'accès à toutes les applications et tous les utilisateurs.
Beaucoup d'utilisateurs trouvent que cette approche par le partitionnement est la plus simple. Elle correspond à la façon dont la gouvernance est appliquée traditionnellement aux VPN et aux datacenters privés. Les containers et les microservices sont tous deux déployés sur des réseaux et des hôtes prêts pour la gouvernance, et les principes de type SOA contrôlent les ressources applicatives. Tant que ces mécanismes de gouvernance sont efficaces, tout fonctionne.
Les microservices comportent un risque important car ce phénomène de composants partagés (si bien supporté par la SOA) n’est pas une fonction commune. C'est pourquoi il est probablement judicieux d'adopter des gestionnaires d'API pour contrôler l'accès aux microservices - même compte tenu de leur impact potentiel sur les performances. La gouvernance des microservices, par la plateforme, devrait se concentrer sur la gestion des API. Il serait judicieux de penser ensuite à la gestion des composants et à la composition des applications en microservices – et d’utiliser donc les containers comme seuls cibles de déploiement.
En revanche, une vision de la gouvernance axée sur les applications ne peut pas se contenter d’un cadre de gouvernance unique. En fait, on présume que les exigences en matière de gouvernance varieront considérablement d'une application à l'autre, de sorte qu'il y a peu à gagner à appliquer une approche commune. Lorsque la gouvernance devient nécessaire, il incombe aux outils de déploiement d'applications (DevOps ou orchestration) de les mettre en œuvre.
L'avantage de cette approche est qu'elle fonctionne, quelle que soit la relation qui existe entre le conteneur et les microservices. Vous pouvez toujours connecter les microservices directement dans l’application, au lieu de demander qu'ils soient tous partagés. Mais vous pouvez également supporter des microservices partagés en les traitant comme des applications distinctes.
DevOps : quelle est sa place?
Le rôle de l'orchestration apporté par DevOps dans la gouvernance des microservices ou des containers est crucial. Ils constituent le pont entre les politiques de gouvernance et les pratiques de déploiement. Ces mêmes pratiques qui sont en charge d'assurer le respect de ces politiques. Le déploiement manuel, ou les phases de redéploiement, créeront toujours un risque, et il peut être très difficile de les repérer.
Les outils DevOps utilisés pour soutenir la gouvernance doivent aussi supporter des définitions modulaires qui peuvent être réutilisées facilement, en particulier lorsqu'un modèle de gouvernance centré sur les applications prend en charge des microservices par application. Sinon, les incohérences de déploiement menaceront non seulement la gouvernance, mais aussi la stabilité des applications.