Articles de blog

Infrastructure en tant que code : qu'est-ce que c'est et pourquoi devriez-vous vous y intéresser ?

Article de blog

Publié le

1er septembre 2020

Par :

Exigo

La nécessité est certes la mère de l'invention, mais on peut tout aussi bien affirmer que l'invention est la mère de la nécessité, en particulier à l'ère des technologies de l'information. Prenons l'exemple d'Internet. Son invention a donné naissance à des idées auparavant inimaginables qui sont rapidement devenues des nécessités. À ce stade avancé de l'ère de l'information, la connectivité Internet et l'accès omniprésent via le Web sont des nécessités fondamentales. 

Pour que votre entreprise reste pertinente et compétitive aujourd'hui, vous avez besoin non seulement d'une présence sur le Web, mais aussi d'outils qui vous permettent d'exploiter la puissance d'Internet pour simplifier la création, la gestion et la distribution des ressources qui hébergent la solution logicielle adaptée à votre secteur d'activité. L'infrastructure en tant que code est l'un des fruits technologiques de cette nécessité commerciale.

Qu'est-ce que l'infrastructure en tant que code ?

L'infrastructure en tant que code est un code qui comprend des définitions lisibles par machine permettant d'automatiser le processus d'approvisionnement et de configuration des ressources qui hébergeront une solution logicielle. 

Infrastructure en tant que code pour le principal fournisseur de logiciels SaaS MLM image grand format 700 x 441 1
Nuage.

L'infrastructure en tant que code peut fonctionner sur un centre de données sur site afin de simplifier la gestion des ressources de ce centre. Elle peut également contenir un code propriétaire qui s'exécute dans un centre de données privé et qui est ensuite migré vers le cloud. Ces types de solutions constituent des améliorations par rapport à la gestion manuelle constante des serveurs bare metal qui composent les centres de données.

Cependant, ce type de solutions n'exploite pas un autre avantage potentiel de l'infrastructure en tant que code. Lorsque l'infrastructure codée est conçue pour communiquer directement avec un cloud à l'aide des interfaces de programmation d'applications (API) du cloud, elle et la plateforme sur laquelle elle est configurée pour fonctionner tirent pleinement parti des avantages du cloud, notamment un accès illimité à des ressources qui utilisent toujours les dernières technologies. 

Microsoft Azure est l'une des principales plateformes cloud publiques et a été pionnière dans le développement des API et des modèles de ressources qui permettent l'infrastructure en tant que code. Chez Exigo, notre infrastructure en tant que code communique avec la plateforme Azure en exploitant ces API pour allouer et configurer les ressources. Lorsque nous avons développé notre infrastructure et notre plateforme codées, nous avons largement utilisé .NET, un langage de programmation développé par Microsoft qui, sans surprise, est un citoyen de première classe dans Azure. (Quand je dis « citoyen de première classe », je veux dire qu'Azure reconnaît et accueille favorablement .net et que .net, à son tour, fonctionne bien et confortablement dans le bac à sable Azure.)

Notre utilisation des informations sous forme de code automatise le processus de gestion de nos centres de données basés sur le cloud, créant et fournissant automatiquement de nouvelles ressources (telles que des bases de données et des machines virtuelles) selon les besoins.

Pourquoi devriez-vous vous en soucier ?

L'infrastructure en tant que code, et plus particulièrement notre mise en œuvre de celle-ci, offre plusieurs avantages. (Certains d'entre eux recoupent les « avantages du cloud computing »).

  • Approvisionnement instantané
  • évolutivité
  • Tests avant le lancement
  • Fiabilité 

Approvisionnement instantané :
De l'achat à la productivité en un clin d'œil

Lorsque vous choisissez une solution SaaS (Software as a Service) pour rationaliser vos processus commerciaux de vente directe, le délai entre l'achat et la productivité peut être de plusieurs mois, plusieurs semaines, voire quelques minutes.

La manière dont nous avons conçu et mis en œuvre notre infrastructure en tant que code permet cette dernière option, un avantage connu sous le nom de « provisionnement instantané ». Concrètement, lorsque nous décidons de créer une ressource, telle qu'une base de données ou une machine virtuelle, nous utilisons un modèle Azure Resource Manager (ARM) pour définir non seulement la ressource souhaitée, mais également toutes les propriétés associées à cette ressource, puis nous enregistrons ce code dans un référentiel. 

Cela nous permet de créer une infrastructure pour les nouveaux clients simplement en exécutant le code enregistré, qui à son tour provisionne automatiquement les ressources nécessaires. Nous pouvons ainsi mettre en place un client en quelques minutes après la signature du contrat.

Lorsque vos nouvelles ressources sont allouées dans le cloud, vous recevez automatiquement vos identifiants de connexion afin de pouvoir commencer à personnaliser notre solution et éventuellement passer votre première commande en quelques heures.

Évolutivité :
Le ciel est la limite

L'évolutivité est la capacité d'un système à allouer des ressources et ainsi à améliorer ses performances selon les besoins. Il existe deux méthodes d'évolutivité : l'évolutivité verticale et l'évolutivité horizontale.

La mise à l'échelle verticale consiste à ajouter ou à mettre à niveau le matériel existant. Ce processus nécessite une gestion pratique qui est coûteuse et ne permet pas nécessairement une expansion transparente. 

La mise à l'échelle horizontale implique l'approvisionnement automatique des ressources au moment et selon les besoins, une fonctionnalité pratique rendue possible lorsque l'infrastructure est mise en œuvre sous forme de code. 

Notre infrastructure codée contient des métriques qui dictent les exigences de performance, de sorte que si la charge d'un client devient soudainement trop lourde pour les ressources qu'il utilise actuellement, notre solution lui fournit automatiquement un accès à davantage de ressources. 

Notre solution est comparable à un élastique qui s'étire et se contracte pour s'adapter rapidement à vos besoins en matière d'augmentation ou de réduction des charges à la demande. Le processus est transparent, ce qui signifie que vous ne vous rendrez pas compte de ce qui se passe, mais que vous profiterez simplement des avantages d'obtenir toujours les performances pour lesquelles vous payez, sans payer pour des ressources que vous n'utilisez pas.

Notre solution ayant été conçue pour communiquer directement avec Azure, nos clients bénéficient des avantages du dimensionnement vertical et horizontal sans les inconvénients associés à ces deux types de dimensionnement. Notre solution garantit un dimensionnement horizontal automatique et transparent, tandis qu'Azure gère les coûts et les inconvénients liés au dimensionnement vertical. 

En résumé : lorsque votre site Web a besoin de plus de puissance, notre solution s'adapte instantanément pour gérer l'augmentation de la charge. Et comme nous sommes sur Azure, il n'y a aucune limite à la charge que nous pouvons gérer.

Tests avant lancement : Assurance informatique
 

Lorsque vous implémentez l'infrastructure en tant que code, votre infrastructure bénéficie du même traitement que n'importe quel autre code, ce qui présente notamment l'avantage de faciliter les mises à niveau qui peuvent être testées avant leur mise en production. 

Avec l'infrastructure en tant que code, toute modification apportée à l'infrastructure peut être effectuée à un seul endroit, puis testée afin de s'assurer qu'elle ne pose aucun problème de compatibilité et d'intégration (entre autres) avant d'être mise en production. 

Par exemple, lorsque cela est nécessaire, Exigo apporte des modifications à son infrastructure codée, teste ces modifications, puis les applique à tous les éléments de l'infrastructure en production directement via les API Azure à l'aide de leurs modèles en ligne. Ce processus élimine le risque d'erreur humaine : il suffit d'effectuer et de tester la modification une seule fois, puis de l'appliquer à l'ensemble du système. 

Fiabilité :
Restaurer les iots pointés et les t barrés 

Un autre avantage de l'exécution de notre infrastructure en tant que code dans Azure est que nous pouvons provisionner notre plateforme partout dans le monde en un seul clic. 

Par exemple, supposons qu'un centre de données Azure situé dans l'est des États-Unis tombe en panne et que, par hasard, votre base de données et d'autres ressources fonctionnaient dans ce centre de données défaillant. Grâce à la conception de notre solution, nous pouvons très rapidement tout provisionner ailleurs (en Australie, dans l'ouest des États-Unis, en Europe, n'importe où) afin que le temps d'indisponibilité lié à cette catastrophe soit minimal, un avantage connu sous le nom de basculement. 

En fait, nous promettons à nos clients non seulement un temps d'arrêt minimal en cas de panne, mais aussi une réplique exacte de ce pour quoi ils ont payé, dans les moindres détails, tout comme avant. Toutes les données Exigo, y compris celles de nos clients, sont répliquées en temps réel dans plusieurs centres de données. De plus, toutes nos bases de données peuvent être restaurées à tout moment pendant 35 jours, ce qui signifie que nos clients peuvent choisir n'importe quelle minute, y compris celle-ci, et restaurer la base de données exactement telle qu'elle était à ce moment-là.

Les solutions SaaS qui sont limitées à des centres de données sur site ou privés et qui continuent à exploiter leurs bases de données à partir de leurs propres centres de données doivent prendre en charge les frais liés à la mise en place et à la gestion de sites redondants afin d'assurer la sauvegarde en cas de panne. Ces frais sont directement répercutés sur leurs clients. Exigo exploite la puissance du cloud Azure pour garantir la protection de vos données à moindre coût et tirer pleinement parti de l'échelle mondiale de la plateforme Azure.

Infrastructure as Code : invention et nécessité de l'

Lorsque vous recherchez une solution Web adaptée aux besoins de votre entreprise, gardez à l'esprit que les solutions les plus rapides et les plus efficaces reposent sur une infrastructure sous forme de code qui s'interface directement avec un cloud public. Envisagez de poser les questions suivantes aux prestataires de services potentiels :

  • Votre solution fonctionne-t-elle sur site ou dans le cloud ?
  • Quelle technologie utilisez-vous pour gérer les ressources informatiques et cette technologie permet-elle de mettre en place une infrastructure en tant que code ?
  • Votre solution permet-elle de définir une infrastructure codée via une API ou un modèle ?
  • Votre solution automatise-t-elle le processus de création et d'approvisionnement des ressources ?
  • Votre solution vous garantit-elle d'obtenir à chaque fois ce que vous voulez lorsque vous créez de nouvelles ressources ?

Glossaire

Machine virtuelle :une machine virtuelle est une émulation d'un système d'exploitation complet qui s'exécute dans la mémoire d'un autre système d'exploitation, donnant ainsi à un seul ordinateur hôte les fonctionnalités de deux ordinateurs.

API :Une interface de programmation d'application (API) est un intermédiaire qui permet à différents systèmes informatiques de communiquer efficacement sans que l'un ou l'autre des systèmes ait à partager des informations confidentielles. (Imaginez que vous deviez communiquer la même demande à quatre personnes qui parlent des langues différentes. Une API est comme un traducteur qui transmet votre message et vous renvoie quatre réponses dans la langue que vous comprenez.) 

Modèle Azure Resource Manager (ARM) :utilisé pour implémenter l'infrastructure en tant que code pour les solutions Azure. Le modèle est un fichier JSON (Javascript Object Notation) qui définit l'infrastructure et la configuration de votre solution. Le modèle vous permet de définir une ressource sans avoir à écrire une séquence de commandes de programmation pour la créer. Dans ces modèles, vous spécifiez les ressources que vous souhaitez créer et leurs propriétés respectives. 

Base de données :ensemble structuré de données qui fonctionne sur un ordinateur et qui est accessible électroniquement.

Centre de données :ensemble d'ordinateurs (éventuellement regroupés dans un même bâtiment ou connectés en réseau) qui stockent, traitent et distribuent de grandes quantités de données.

Basculement :capacité à fournir rapidement un double identique d'un programme informatique ou d'une plateforme logicielle afin de minimiser les temps d'arrêt en cas de panne due, par exemple, à une catastrophe naturelle. 

Haute disponibilité :processus consistant à exécuter plusieurs instances d'un logiciel, d'une application ou d'une plateforme sur différents serveurs pouvant se trouver dans différentes parties du monde afin de garantir une disponibilité totale. Ce processus est efficace, mais très coûteux. Avec la haute disponibilité, vous payez pour des ressources que vous n'utilisez pas, mais qui sont là au cas où. 

Cloud public :détenus et exploités par des fournisseurs tiers, les clouds publics fournissent des ressources informatiques (telles que des serveurs et des espaces de stockage) via Internet. Les consommateurs accèdent à ces services à l'aide d'un navigateur Web.

SaaS :Le Software as a Service ou SaaS (prononcé « sass ») est une méthode de fourniture de logiciels par le biais d'un abonnement en ligne auquel le client accède généralement via le Web. Le SaaS s'éloigne du paradigme traditionnel qui consiste à créer un programme, puis à l'installer et à l'exécuter sur un ordinateur physique.  

Mise à l'échelle verticale :processus consistant à ajouter des ressources supplémentaires à un système informatique existant afin d'augmenter ou d'améliorer ses performances. Par exemple, la mise à l'échelle verticale peut impliquer l'ajout de serveurs bare metal plus performants à un centre de données ou l'augmentation de la mémoire des serveurs existants.  

Mise à l'échelle horizontale :processus consistant à augmenter le nombre d'instances d'une solution logicielle afin de gérer une augmentation de la charge (et ainsi améliorer les performances) ou à réduire le nombre d'instances afin de garantir que le client ne paie que pour ce qu'il utilise.

Provisionnement :processus consistant à démarrer ou à arrêter une instance d'une plateforme fonctionnant dans le cloud. Grâce à une plateforme logicielle fonctionnant sur une infrastructure en tant que code conçue pour s'interfacer directement avec le cloud, l'ensemble de la plateforme peut être lancé d'un simple clic.