jeu, 18/04/2019 - 16:02
Avec un manque croissant de développeurs possédant des compétences mainframe telle que COBOL, et avec la migration généralisée vers le cloud, de plus en plus d’entreprises reconnaissent aujourd’hui devoir commencer à sortir du mainframe et à réhéberger les applications historiques. Mais comment réhéberger correctement les applications mainframe sur x86 ou sur le cloud ? Le réhébergement d’applications exige des tests fréquents et rigoureux, réalisés habituellement le plus tôt possible au cours du cycle de développement du logiciel (ce que l’on appelle « shift-left testing ») afin de minimiser le coût des bugs résiduels. Les équipes opérationnelles ou de développement peuvent mettre en œuvre le pratique du shift-left testing en exploitant la conteneurisation.
Lors du réhébergement d’applications historiques, les équipes DevOps ont besoin d’un environnement de test capable de répliquer l’environnement de production de la manière la plus fidèle possible pour ne rien laisser au hasard. La conteneurisation permet aux équipes de tirer profit d’un environnement de test complet et de travailler à grande échelle de manière très rapide et efficace. Les développeurs peuvent ainsi réaliser des tests parallèles et isoler les phases de test et les différentes charges de travail.
L’optimisation de l’infrastructure à l’aide des conteneurs
Les conteneurs permettent le déploiement et l’exécution parallèles de plusieurs charges de travail d’applications, de configurations hétérogènes, et de plusieurs versions de logiciels, sous forme de petites parties de logiciels, déployées simultanément sur une instance Linux unique. Les conteneurs optimisent l’infrastructure informatique afin d’offrir une utilisation plus intensive du matériel existant via une version légère de la machine virtuelle traditionnelle et standard : le conteneur n’est pas un hyperviseur mais un système d’isolation similaire pour les besoins en question. L’exploitation de multiples conteneurs, chacun d’entre eux fournissant de différentes charges de travail d’applications sur une plateforme multicœur unique, permet des niveaux d’utilisation plus élevés, réduisant ainsi les capacités de calcul globales nécessaires.
L’agilité grâce aux conteneurs
L’architecture des conteneurs offre des avantages intrinsèques du point de vue du développement de logiciels : les petites parties de logiciel sont plus simples à comprendre et plus faciles à tester de manière détaillée et complète. Chacune de ces parties peut être mise à niveau de manière indépendante, plus rapidement et de manière plus fiable, grâce au périmètre limité et bien défini constitué par l’isolement étanche entre les différents conteneurs. De cette manière, les tests sont beaucoup plus rapides et simples à réaliser.
La conteneurisation facilite les procédures de test lors du réhébergement des applications mainframe : 5 avantages
Les avantages du logiciel Docker sont bien connus. Lors du réhébergement d’applications mainframe en x86 ou sur le cloud, les équipes DevOps ont la possibilité d’exploiter les aspects suivants dans le cadre des procédures de test :
1. Isolement
Lorsqu’elle est configurée pour être totalement autonome vis-à-vis de la machine hôte, l’image Docker est entièrement isolée de la configuration logicielle de l’instance Linux sur laquelle elle est utilisée, le noyau constituant le seul composant partagé. Elle est également entièrement isolée des autres conteneurs fonctionnant simultanément sur la même instance. Les équipes DevOps sont ainsi en mesure de s’ajuster très rapidement pour procéder à des groupes de test similaires ou différents, mais avec des composants logiciels de versions différentes. En utilisant des machines virtuelles (Virtual Machines, VM), chaque série de tests exigerait une VM différente, ce qui constituerait une solution beaucoup moins agile, beaucoup plus pénible à prendre en charge et bien plus chère à provisionner, à mettre en œuvre et à gérer.
2. Efficacité
Il est bien connu que les conteneurs sont beaucoup plus efficaces que les VM. Grâce à eux, inutile de payer la fameuse « taxe d’hypervision / de virtualisation ». Les équipes DevOps sont ainsi en mesure de réaliser du shift-left testing de manière récurrente et à grande échelle à partir de machines moins nombreuses, ce qui implique une réduction des coûts en termes de matériel physique et d’effort de gestion de celui-ci (d’où l’efficacité de l’approche), ou d’effectuer beaucoup plus de tests pour un coût égal (d’où l’efficience de cette même approche).
3. Reproductibilité/immuabilité
Lorsqu’un test échoue, le développeur peut facilement reproduire et diagnostiquer le problème, sans avoir à effectuer des corrections d’erreurs compliquées à distance sur une machine qu’il connaît peu ou mal dans sa configuration et donc son fonctionnement. Et cela améliore du même coup la sécurité. Le développeur extrait simplement l’image erronée depuis le registre Docker vers son ordinateur portable, la ré-exécute sur son poste de travail, à partir de son moteur Docker personnel, et recrée ainsi le même échec grâce aux facultés d’invariance / d’immutabilité des résultats de la technologie des conteneurs. Le développeur se trouvant dans son environnement local, la correction se révèle dès lors beaucoup plus facile, car il dispose alors de l’intégralité de ses outils favoris pour travailler.
4. Scalabilité/orchestration
Les nouvelles images de conteneurs Docker à exécuter peuvent être générées en grandes quantités via des approches de shift-left testing lors de l’exécution d’une batterie de tests approfondis sur chaque commit / fusion de branches au sein d’une grande équipe de développeurs. La planification parallèle de cette grande série d’images Docker devient beaucoup plus facile lorsque la tâche est déléguée à une plateforme d’orchestration de conteneurs spécialisée telle que Kubernetes. C’est ce que proposent désormais les principales plateformes de CaaS on-premise (Docker EE, OpenShift) ou sur le cloud (Azure AKS, Amazon ECS, etc.).
5. Élasticité/portabilité
L’un des principaux avantages des conteneurs, et l’une des raisons de base pour lesquelles ils ont été créés par les équipes de Google à partir de 2006, est la portabilité. Une même image de conteneur peut être exécutée – sans aucune modification – sur un serveur « bare-metal », sur des instances de développement/de support virtualisées, ou sur un cloud public. Cela signifie que les séries de tests automatisés peuvent être facilement déléguées vers des services cloud proposés par des fournisseurs publics. Avantage supplémentaire : les séries de tests automatisés sont non seulement exécutés là où elles sont les plus efficaces, mais également dans des environnements de tests techniques hétérogènes, les validant ainsi dans des contextes techniques additionnels sans plus d’effort. L’expression « faire d’une pierre deux coups » est ici tout à fait à propos !
La conteneurisation offre dynamisme, agilité et efficacité dans le cadre de tests récurrents et à grande échelle. Tous ces éléments sont essentiels lors du réhébergement des applications historiques mainframe afin qu’elles fonctionnent de façon identique sur x86 et sur le cloud.
A propos de l'auteur