Administration réseau : pourquoi les méthodes DevOps sont pertinentes
Adapter à l’administration réseau les pratiques des approches DevOps permet de gagner du temps sur le test des configurations et de l’efficacité sur l’écriture des scripts.
Utiliser des méthodes DevOps dans l’administration des réseaux permet d’actionner plus fréquemment les opérations de maintenance, ce qui conduit idéalement à une amélioration presque continue de l’infrastructure. Entre autres, ces méthodes sont une aide inestimable pour valider des configurations avant et après leur déploiement, sans perdre à chaque fois du temps à mettre au point des systèmes de test. Adopter des méthodes DevOps dans les réseaux revient à appliquer des processus déjà en vigueur dans le domaine des serveurs pour tester, déployer et maintenir les équipements.
La première méthode des équipes DevOps est de valider toute modification avant sa mise en production grâce à des répliques virtuelles des équipements sur lesquelles on simule des charges de travail. Une approche similaire est possible dans les réseaux : Cisco, Juniper Networks, Cumulus et d’autres proposent désormais des instances virtuelles de leurs systèmes d'exploitation. Attention toutefois, car un achat de licences supplémentaire peut s’appliquer.
Les méthodes DevOps pour automatiser les procédures de test
Lancer à la main ces machines virtuelles et les simulations qu’elles doivent exécuter ne vaut qu’au départ. Au fil du temps, cette opération est chronophage. Pour automatiser cette tâche, on utilisera les mêmes outils que les équipes DevOps emploient dans le monde des serveurs : le langage de script Python, le système d’automatisation Ansible, le module de formatage des données Jinja2, ainsi que l’entrepôt GitHub qui sert de point logistique pour stocker les paramètres.
À l’aide de ces outils, on rédigera un script qui déploie la copie virtuelle d’un équipement réseau avec un agent SNMP étiqueté selon la fonction à simuler, qui y charge une nouvelle configuration et qui définit une topologie entre les machines virtuelles. Le résultat est ce que les équipes DevOPs appellent une Infrastructure-as-code. Il est très simple avec ce script de tester de nouvelles topologies, ce qui, dans le monde réel, nécessiterait d’agencer du matériel.
Ensuite, l’administrateur soumet cette version virtuelle aux scripts qu’il a développés pour automatiser une configuration. Puis, il vérifie les changements apportés à l’aide d’un nouveau script, lequel revient à lancer sur la machine virtuelle, via SSH, une succession de commandes show. La première est d’ordinaire show running-configuration. Les suivantes dépendent de la fonction de l’équipement que l’on teste. Par exemple, si l’on cherche à valider un cluster de passerelles vers un nouveau fournisseur d’accès Internet, il faut tester l’existence de routes au protocole BGP entre les passerelles.
Reste à simuler des charges de travail. Dans l’exemple précédent, on simulera la panne d’une passerelle afin de regarder comment se comporte sa plus proche voisine. Dans d’autres cas, il faudrait générer du trafic pour mesurer le comportement du réseau. De nombreuses versions virtuelles des équipements réseau supportent la connexion vers d’autres machines virtuelles. Ce seront idéalement des répliques de VMs de production, de sorte à simuler un trafic réel. Ce type de tests apporte un meilleur niveau de confiance dans le déploiement d’une configuration qu’un simple examen visuel des paramètres entrés.
Les méthodes DevOps pour améliorer le développement des scripts
Un point important à prendre en compte est que l’infrastructure-as-code a tendance à devenir critique pour l’activité dès lors que le réseau atteint une taille complexe. Quand il s’agit par exemple de mettre en place des algorithmes très élaborés de reprise ou de continuité d’activité, d’absorption des pics d’activité, etc. il devient primordial que l’infrastructure-as-code intègre les bonnes pratiques de mise en réseau et celles de développement logiciel. C’est-à-dire qu’il faudrait idéalement former les administrateurs réseau au développement d’applications, ce qui prend un certain temps. Les méthodes DevOps proposent une alternative : la programmation en binôme.
La programmation en binôme est une méthode de développement dans laquelle deux personnes travaillent sur le même environnement pour mettre au point des scripts : l’une écrit le code, l’autre observe, navigue dans les éléments, retourne des informations et indique les étapes suivantes. Idéalement, l’une est spécialiste des réseaux avec des connaissances en programmation Python, l’autre est un vrai développeur avec des affinités pour le réseau. L’intérêt de cette méthode est que les personnes apprennent les unes des autres, tout en produisant de meilleurs scripts que ceux que l'une ou l'autre créerait seule. Pour que cela fonctionne, les membres du binôme doivent échanger régulièrement leurs rôles.
En pratique, il faut un certain temps pour que de telles équipes s'habituent à travailler ensemble et il y aura inévitablement l’impression que les premiers progrès sont lents. Mais la productivité augmentera graduellement, sauf si des conflits de personnalités émergent.
Les bénéfices à attendre d’une programmation en binôme sont :
- Deux têtes valent mieux qu'une. Deux personnes qui examinent le même problème discutent des alternatives et trouvent plus rapidement la meilleure approche.
- Pas de revue a posteriori du code. L'équipe examine le code de son script en temps réel, ce qui réduit considérablement le temps passé ensuite à le tester et le déboguer, voire à le réviser.
- Formation croisée. La programmation en binôme est un excellent moyen de partager les connaissances, à la fois sur les pratiques de développement de logiciels et sur le fonctionnement des réseaux. Elle facilite également le développement de compétences interpersonnelles, comme la communication et le travail d'équipe.
- Maintenance du logiciel. Plus d'une personne comprend comment fonctionnent un morceau de code et ses critères de conception. Il en résulte une meilleure mémoire du projet qui rend le développement plus facile et moins coûteux à entretenir.
- Équipes en télétravail. Les binômes peuvent sans aucun problème collaborer à distance, en utilisant des systèmes de téléconférence avec partage d'écran.
Mais la programmation en binôme pose aussi deux risques :
- Conflit des personnalités. Il faut savoir recomposer rapidement des binômes si l’entente n’est pas réalisable. Il faut aussi que celui plus expérimenté en développement ou en administration réseau accepte les lenteurs de l’autre membre.
- Différences d'expérience et d'expertise. La programmation en binôme peut réduire considérablement la vitesse d’un développement. Cependant, cet inconvénient est à pondérer : le membre le plus avancé va former le membre le moins expérimenté, lequel va gagner en efficacité au sein de l’entreprise. Sachez que des études ont montré que la rapidité d’exécution ne diminue que de 15 % quand les deux membres n’ont pas le même niveau d’expérience.
Il peut s'écouler plusieurs semaines avant que les équipes de programmation en binôme ne se mettent en place et commencent à montrer de vrais signes d’efficacité, alors soyez patients. Lorsqu'elles sont soigneusement planifiées et que les participants y adhèrent, les pratiques de programmation en binôme peuvent apporter de réels avantages au développement des systèmes d'automatisation des réseaux.
Pour approfondir sur Administration de réseaux
-
Explicabilité et fiabilité : les deux grands défis de l’informatique quantique
-
GitOps versus DevOps : quand les containers rebattent les cartes
-
Choisir le(s) meilleur(s) langage(s) de programmation pour la pratique DevOps
-
Keysight Technologies acquiert Eggplant pour automatiser ses solutions de tests