Client
Un grand fournisseur de logiciels et de matériel de télécommunications a utilisé Elinext pour construire une application destinée au déploiement de son logiciel dans les systèmes de ses clients.
Défi
Le client fournit des logiciels aux entreprises de télécommunications. Ces entreprises doivent installer ce logiciel, ce qui nécessitait auparavant une intervention manuelle très complexe.
Les clients devaient déployer un ensemble de fichiers YML et de fichiers de configuration décrivant les images Docker nécessaires et l'ordre dans lequel les utiliser, ainsi que d'autres paramètres. Pour simplifier cette tâche pour les clients, notre client a entrepris de développer un programme d'installation.
"L'installation du logiciel devait être faite manuellement et représentait un processus complexe pour les clients.
Notre client a donc décidé de créer une application d'installation pour simplifier cette tâche."
L'entreprise a commencé par assembler un ensemble de scripts shell, qui se sont finalement transformés en une application Java. C'est à ce moment-là qu'ils ont cherché de l'aide. Elinext avait déjà travaillé avec l'entreprise sur d'autres projets et ils appréciaient notre travail. Nous sommes donc devenus un choix naturel comme développeurs.
Processus
Nous avons commencé par étudier l'application que le client développait déjà depuis un certain temps. Sa nature même présentait quelques défis, les deux principaux étant le travail main dans la main avec les DevOps des clients finaux et la limitation de l'accès aux clusters.
Programmation en Duo avec les DevOps
L'installateur pose une question à l'utilisateur et valide la réponse. Cependant, lorsque les données essentielles sont disponibles, l'installateur saute l'étape de demande d'informations et saisit automatiquement les entrées. L'installateur peut également offrir à l'utilisateur un choix de valeurs possibles.
La validation des réponses de l'utilisateur nécessite une communication avec un cluster Kubernetes ou Openshift. Ces clusters font partie des systèmes des clients finaux, donc nous devons travailler étroitement avec les DevOps des clients. Nous leur fournissons des instructions et nous assurons qu'ils comprennent comment les suivre.
Limitation de l'Accès aux Clusters
L'idée originale de l'installateur était un programme d'administration de cluster, une application qui aurait un accès complet aux clusters des clients finaux. Cependant, les entreprises de télécommunications avaient leurs préoccupations en matière de sécurité. Ils craignaient que d'autres applications installées dans les mêmes clusters puissent être affectées en cas de violation.
Par conséquent, nous avons dû limiter l'accès de l'installateur aux clusters, ce qui a compliqué le développement. Nous avons modifié le code et, dans la documentation du produit, décrit un scénario d'installation du logiciel en tant qu'administrateur de namespace sans accès au niveau du cluster.
Mise en Œuvre et Tests
L'assurance qualité a également fait partie de notre travail sur ce projet. Nous utilisons des tests JUnit accompagnés de tests automatisés.
Produit
L'installateur est un logiciel complexe à l'intérieur — et une application très basique du point de vue de l'utilisateur. Nous n'avons pas conçu ou construit d'interface spécifique ni aucun élément lié à l'expérience utilisateur à cet égard.
Modes Silencieux et Interactif
L'application dispose de deux modes : un mode silencieux et un mode interactif.
Dans le mode interactif, le programme vous pose des questions sur votre environnement et les produits que vous souhaitez installer.
Dans le mode silencieux, vous téléchargez des fichiers YML avec des entrées soit d'une installation précédente, soit remplies manuellement dans le mode interactif. Vous pouvez également préparer des fichiers YML avec des entrées personnalisées pour automatiser des parties de fonctionnement du logiciel et les télécharger en mode silencieux.
Validation des Entrées et Déploiement
Une fois les entrées saisies, l'installateur vérifie auprès du cluster Kubernetes ou OpenShift pour valider ces entrées et les ajuster aux paramètres du cluster. Ensuite, le script remplit soit les réponses des utilisateurs, soit place des valeurs par défaut.
À l'étape suivante, l'installateur télécharge les images Docker d'un fichier ou d'un registre et les pousse vers le registre utilisé par le cluster. Enfin, les fichiers YML sont appliqués pour créer des objets correspondant aux éléments essentiels du logiciel en cours d'installation.
Résultats
L'application que nous avons aidé le client à construire a simplifié l'installation de son logiciel pour les clients finaux. Cependant, cela nécessite beaucoup de travail de notre côté et est considéré comme une étape intermédiaire sur la voie de l'amélioration du processus. Nous aidons maintenant le client à élaborer une meilleure solution.