DevOps et Continuous Delivery dans le Cloud Azure
Rationaliser, grâce au Cloud, les processus mais aussi l’infrastructure de développement logiciel, dans une démarche DevOps, c’est l’objectif de Stephane Goudeau, Architecte Cloud Microsoft Azure. A l’occasion de The Incredible Automation Day, nous avons rencontré Stéphane qui a répondu à nos questions sur le Cloud Microsoft Azure.
Stéphane Goudeau est dans l’IT depuis plus de 20 ans. Après un début de carrière chez Bull Intégration Services, il a rejoint Microsoft comme consultant en 1996. Depuis, il a évolué dans l’organisation de Microsoft France sur différents postes qui lui ont permis d’acquérir une expertise de la plateforme Microsoft sur les technologies de développement et d’infrastructure.
Comment Microsoft Azure répond aux enjeux de l’automatisation ?
L’un des intérêts de l’automatisation des processus est de réduire les cycles de livraison. Et dans ce domaine, Microsoft Azure a très clairement un rôle à jouer : en effet, mettre à disposition une application plus rapidement suppose de pouvoir disposer d’un environnement permettant d’expérimenter, d’innover, et d’avoir accès en libre-service à des ressources comme une machine virtuelle, un service applicatif…autant de ressources proposées nativement par Azure.
Les multiples services IaaS ou PaaS sont accessibles via un portail utilisable par tout type de profil IT, avec des langages de scripts comme Powershell ou azure-cli pour les environnements Mac ou Linux. Microsoft propose également toute une gamme d’outils intervenant dans le circuit de production logicielle : notamment Visual Studio Online, service de développement collaboratif déployé dans le cloud (backlog, sprint et suivi des activités, référentiel de code source, contrôleurs de build, planification des tests). Avec cette offre, une société peut ainsi disposer instantanément d’une infrastructure lui permettant d’héberger ses environnements de développement et toute sa chaîne de production logicielle. Et surtout, ce service est nativement interconnecté avec Azure…
Quelles sont les possibilités en matière d’intégration continue ?
Par exemple, lorsque je crée une application web dans Azure, j’ai la possibilité en quelques clics de mettre en place une intégration continue, voire un déploiement continu avec des services comme Visual Studio Online ou GitHub. Hier, j’aurais dû installer un serveur TFS, configurer un contrôleur de build, etc… Mais dans le cas de Visual Studio Online, la plateforme ne se limite pas à proposer de l’intégration continue, des tests automatisés, et à générer des livrables pour les déployer sur un serveur (ce qui est déjà beaucoup…). Des fonctions complémentaires sont proposées, notamment avec Microsoft Release Management, pour faire en sorte que ce livrable puisse être directement déployé depuis le service de build vers les plateformes de QA, de pré-production, ou de production qui bien entendu sont provisionnées dans Azure. Ces nouveaux scénarios sont rendus possibles grâces à la souplesse qu’offre la configuration d’environnement sur la base de modèles partagés entre devs et ops, et qui permettent de décrire l’application et ses ressources. Cette approche par les modèles déclaratifs a pour intérêt de permettre d’automatiser le déploiement d’une infrastructure dans une démarche dite « infrastructure as code ».
Un des exemples d’implémentation de cette démarche est la solution Azure Resource Manager qui offre le déploiement et la configuration d’un groupe de ressources (Site Web, Base de données, machines virtuelles,…) avec une granularité à l’échelle de l’application. La solution se fonde sur l’utilisation d’un modèle baptisé « Azure Template » qui va permettre de garantir l’idempotence, simplifier l’orchestration, la gestion du cycle déploiement, le retour sur une version antérieure. Ces modèles sont implémentés en JSON et peuvent donc être gérés dans un contrôleur de code source.
En couplant l’ensemble de ces solutions (ou en les complétant avec différents produits Open Source du marché), la plateforme Azure accélère grandement la mise en place d’un processus de Continuous Delivery. En moins de 30mn lors de la démo du TIAD, j’ai pu démontrer la création ex-nihilo tous les éléments permettant de développer, tester et gérer une application Web en illustrant divers point tels que le provisionning automatisé à base de PowerShell ou de modèles Azure Ressource, l’intégration et le déploiement continue, et le Release Management. Naturellement, un projet réel demanderait un travail préparatoire plus important, mais Azure offre une réelle simplicité de mise en oeuvre.
Qu’en est-il des services d’infrastructure ?
La plateforme Azure ne se limite pas à offrir un environnement particulièrement propice à la mise en œuvre de processus de Continous Delivery, elle va de plus en plus loin en termes de services d’infrastructure : les services de stockage offrent maintenant du SSD et peuvent être utilisés par de nouveaux types de machines capables en agrégeant 32 disques d’1To d’atteindre jusqu’à 50 000 IO/s). La série G, propose la plus grosse machine disponible dans un cloud public (32 Cœurs, 6,5 To de SSD en local et 448 Go RAM : 2 fois la taille du disque dur de mon PC !!!).
Au niveau du réseau, de nombreuses fonctions sont également adressées : monter des vpn site à site par exemple, pour les scénarios Cloud hybride des entreprises disposant de sites répartis dans le monde entier, afin d’avoir une vue centralisée de ses machines dans le même réseau virtuel, de sécuriser des zones de ces réseaux virtuels, etc.
En quoi le Cloud a-t-il bouleversé le paysage de l’IT ?
Aujourd’hui, le Cloud ne sert plus simplement à provisionner des environnements, il permet de faire tout ce que l’on faisait à demeure, et de monter des plateformes hybrides très facilement, de façon automatisée (avec des scripts Powershell, DSC, Azure Ressource Manager, ou via les environnements DevOps proposés par l’écosystème). D’ailleurs certaines extensions à des solutions Open Source comme Puppet, Docker ou Chef sont directement intégrées dans notre offre. Et il reste toujours possible de déployer par script des solutions comme Salt ou Ansible. A cela s’ajoute l’émergence de la virtualisation par les containers qui permet d’accroître la scalabilité des applications tout en augmentant leur densité de déploiement. Couplé avec le dynamisme de l’écosystème Docker, la flexibilité qu’offre le choix d’utiliser des containers Windows Server, Linux ou Hyper-V à demeure ou dans le Cloud, devrait se traduire par un impact très significatif dans le développement et la gestion opérationnelle des applications de demain.
Quels sont les impacts pour le métier de l’IT ?
D’un monde avec un certain cloisonnement (hardware, OS, réseau), nous arrivons donc maintenant à une vision complètement logique du stockage, réseau, etc. Tout a été virtualisé, et pas seulement les machines. De fait, le métier de l’IT a changé : il peut se spécialiser sur une plateforme (même s’il y a des similitudes entre les différents concurrents du Cloud public), mais sur cette plateforme il ne va pas se limiter à gérer un type de ressources. De plus en plus, l’IT va aller vers une démarche « infrastructure as code ». La valeur ajoutée de l’IT va alors sans doute être de réfléchir à des problématiques plus complexes, d’automatiser en mettant en place des solutions d’orchestration de déploiement et de configuration d’application, et de travailler au rapprochement dev et ops par la mutualisation d’un certain nombre de moyens. Le Cloud et toutes les solutions technologiques que je viens d’évoquer vont permettre d’accélérer ce mouvement.
Retrouvez ci-dessous la présentation de Stéphane Goudeau lors du TIAD :