Vous allez de plus en plus dans votre vie professionnelle entendre parler d’automatisation. Dans le cloud, c’est un élément primordial de l’efficacité opérationnelle, mais quelle mouche a donc piqué toutes ces personnes à vouloir automatiser ? Dans ce chapitre, nous allons voir pourquoi l’automatisation change votre manière d’aborder les systèmes.
Comprenez l'intérêt de l'automatisation
Depuis quelques années déjà, l’automatisation est sortie des chaînes de montage pour entrer dans nos vies quotidiennes, mais je ne vais pas vous parler dans ce cours de mon enthousiasme à avoir un café qui coule dans ma tasse au son de “Alexa, fais-moi un café s’il te plaît”, ou bien à avoir la lumière de mon salon qui s’allume lorsque mon téléphone se connecte à mon wifi en entrant dans la maison. Non, ici nous allons penser automatisation pour l’IT ; ce n’est pas très éloigné de l’automatisation de votre vie quotidienne, mais les objectifs sont différents.
Venant du monde des développeurs, j’ai toujours eu l’habitude d’écrire des scripts pour à peu près tout. Mes premières expériences en entreprise m’ont vite confronté à des équipes pour qui ce qui me paraissait l’évidence ne coulait pas de source :
“Le code ? On le compile en cliquant ici et puis j’en fait un zip que j’envoie par mail à Michel de la prod” ;
“Ah, tu es nouveau ? J’ai pas le temps de te faire un accès aujourd’hui, c’est long : il faut te créer un compte dans toutes les applications” ;
“Ça je le fais à la main, ça va plus vite” ;
“Le script de migration, je le passe ligne par ligne, comme ça je vérifie”.
Fort heureusement, l’écrasante majorité des équipes de développement fonctionnent en réalité beaucoup avec des systèmes automatisés sur tous les sujets qu’elles traitent, comme le contrôle du code créé par les développeurs, ou les tests. Quand vous questionnez ces équipes sur l’intérêt d’une “robotisation” de leurs processus, elles vous répondront que l’automatisation leur permet de :
se décharger des tâches rébarbatives ;
assurer la reproductibilité du processus ;
aller plus vite au quotidien ;
mieux orchestrer les tâches complexes.
Du côté du monde des opérateurs d’infrastructure, l’automatisation est également entrée depuis quelques années dans beaucoup d’équipes, grâce à des outils comme Chef ou Puppet, les administrateurs système y trouvant peu ou prou les mêmes avantages que les développeurs :
gérer un parc de centaines de machines sans effort ;
s’assurer que toutes leurs machines sont bien configurées ;
installer une nouvelle machine très rapidement ;
mieux orchestrer les mises à jour du parc.
Il restait alors un domaine où l’automatisation était impossible : c’est la création de nouveaux serveurs, qui demandaient une présence physique et des manipulations matérielles. C’est aujourd’hui un verrou qui est levé avec le cloud et les services à la demande.
En effet, dans le cloud, l’automatisation n’est plus seulement souhaitable, c’est fait pour ça ! L’ensemble des éléments sont désormais pilotables via les API.
Découvrez Infrastructure as Code - from Ops to DevOps Ninja
Dans la documentation d’AWS, vous entendrez parfois parler d’Infrastructure as Code.
Qu’est-ce que cela signifie ?
L’Infrastructure as Code désigne la pratique qui consiste à décrire l’infrastructure de vos systèmes par le code.
Qu’est-ce que cela change pour moi ?
Désormais, en plus d’automatiser les tâches de configuration de vos machines, vous pouvez également automatiser la création et la maintenance de votre infrastructure. Imaginons que vous ayez une centaine de machines à créer ; il vous suffira de faire un script du genre :
for x in 1 to 100:
create-machine x
Ainsi, le cloud créera ces 100 machines virtuelles pour vous. Super facile, non ?
L’infrastructure à la demande, un outil de maintenance
Maintenant que vous êtes rompu au concept d’infrastructure par le code, je vous propose de vous mettre dans la peau d'un employé d'une chaîne de télé, pour appréhender sur le terrain ce que l'infrastructure à la demande vous permettrait.
Employé d'une chaîne télé donc, vous savez que chaque 31 décembre, lors de l’allocution du président de la République, les connexions vers votre site Internet explosent, car beaucoup de personnes regardent l’allocution depuis leur smartphone.
Vous avez besoin de pouvoir répondre à cette demande, sinon les téléspectateurs iront sur la chaîne concurrente.
Cela vous embête de devoir rester dans le data center à rajouter des machines chaque 31 décembre, parce que tous les ans votre tonton Joaquim mange votre part de bûche. 😱
Cette année, vous avez pour la première fois mangé votre part de bûche, parce que vous avez planifié l’exécution d’un morceau de code qui a rajouté automatiquement des serveurs dans le cloud.
Vous avez malheureusement appris que la bûche de votre tatie Ségolène est en réalité immangeable, et que votre tonton Joaquim se forçait à manger deux parts chaque année pour ne pas qu’elle vous en garde pour le lendemain. Votre tonton Joaquim est assurément un saint homme, et vous avez eu tort de douter de sa bienveillance à votre égard, mais revenons dans le sujet.
Et ce n’est pas tout, elle vous permet également de gérer les versions ; regardons cela ensemble.
Vers la gestion de version sur votre infrastructure
Prenons un autre cas pratique :
Ce matin au bureau, c’est la panique : Josie, de l’équipe compta, ne peut pas clôturer la paye parce que le serveur ne marche plus.
Vous n’avez rien changé, mais Jean-Michel, de l’équipe de maintenance de nuit, a laissé un post-it sur votre bureau avec ces quelques mots : “J’ai fait la migration du nouveau domaine. Bisous.”En réalité, la migration n’a pas fonctionné, et Jean-Michel n’a pas vérifié. La complexité de cette migration pourrait vous engendrer des heures de travail : il vous faudrait annuler celle-ci pour débloquer Josie de la compta, car il faudrait appliquer un plan de retour arrière, s’il en existe un.
Heureusement, vous faites de l’infrastructure avec du code, et comme c’est du code, vous l’avez mis dans un gestionnaire de versions comme Git. En quelques secondes, vous avez supprimé la modification de Jean-Michel dans les fichiers descriptifs de l’infrastructure, et vous avez lancé le redéploiement de l’ancienne version. Après 15 minutes, Josie de la compta vous amenait ses fameux sablés maison qu’elle cache dans un tiroir, parce que vous avez sauvé sa journée. Tant pis pour le régime.
Vous trouverez davantage d’informations dans le cours Gérez du codes avec Git et GitHub.
Voyons enfin une troisième utilisation du code dans la gestion de vos infrastructures : la documentation.
Le code comme documentation de vos process
Voici une dernière simulation avant de conclure :
Vous commencez en tant que stagiaire dans une équipe IT pour remplacer un autre stagiaire. Les périodes de stage tombent mal, il n’y aura pas de passation : vous arrivez le lundi et votre prédécesseur est parti le vendredi précédent.
Le stage consiste à maintenir un site web en PHP, qui tourne dans une machine du cloud.
Manque de bol, ce lundi le site ne fonctionne pas, et le responsable de stage de l’ancien stagiaire est souffrant, il a paraît-il trop fêté le départ de son protégé vendredi dernier.Partant à la recherche d’indices sur le bureau de votre prédécesseur, vous trouvez un post-it vieilli par le temps avec ces mots “pour le déploiement : git pull && make install”.
Ni une, ni deux, vous vous connectez au gestionnaire de sources de l’entreprise et identifiez le dépôt du stagiaire. Vous téléchargez le code, et regardez dans le Makefile. Rapidement, vous comprenez que l’application est compilée, puis poussée dans un serveur d’archives d’où la machine du site web récupère ses mises à jour. En consultant ce serveur d’archives, vous constatez que le fichier présent dessus est corrompu, et comprenez alors que le site web s’est mis à jour avec une version qui n’est pas fonctionnelle. Aussitôt, vous lancez un make install, et le site web se réinstalle puis se remet à fonctionner.
Ainsi, l’automatisation du mécanisme de déploiement du site web mis en place par le précédent stagiaire vous aura permis non seulement de déployer le site sans avoir besoin de connaissances profondes sur son fonctionnement, mais aussi d’investiguer et d’identifier un problème à partir de rien : il vous aura suffit de suivre le fil tracé par le système d’automatisation.
Rarement un composant logiciel que vous reprenez comporte une documentation suffisante, et lorsqu’elle existe, elle n’est plus tout à fait à jour, ou est très complexe.
Conclusion : l’automatisation permet de se focaliser sur ce qui crée de la valeur.
La valeur de votre produit, ce qui permet de faire tourner votre entreprise, c’est le contenu ou la ressource que vous offrez à vos utilisateurs. L’automatisation vous permet de vous décharger des tâches rébarbatives et de vous focaliser sur l’essentiel : produire du code ou de l’infrastructure permettant de rendre service à vos clients.
En résumé
L’automatisation permet de :
se décharger des tâches rébarbatives ;
être certain de la reproductibilité du processus ;
aller plus vite au quotidien ;
mieux orchestrer les tâches complexes ;
documenter les processus de mise en production.
L’infrastructure par le code :
simplifie la maintenance des systèmes ;
permet de versionner l’infrastructure.
Je vous propose de voir dans le troisième chapitre de cette première partie les avantages de déployer vos systèmes et réseaux dans le cloud, avant que nous nous lancions dans le cœur du cours : l’installation même !