Durant mon temps chez Murex, un fournisseur mondial de logiciels pour l'industrie financière, j'ai travaillé en tant qu'ingénieur DevOps et affiné mes compétences dans la création et l'optimisation de systèmes complexes.
Mon expérience a impliqué le développement de microservices Python, la mise en place de systèmes de surveillance et d'alerte robustes, et l'amélioration des processus d'intégration continue et de livraison continue (CI/CD).
Au cours de mon travail, j'ai utilisé un large éventail de technologies et d'outils pour rationaliser les processus et assurer le fonctionnement optimal des systèmes auxquels j'ai contribué.
Cet ensemble d'outils diversifié et complet m'a permis d'exceller dans mon rôle d'ingénieur DevOps, de réussir dans mes projets et de contribuer à la mission de l'entreprise de fournir des solutions logicielles de pointe.
Chez Murex, j'ai travaillé sur un projet innovant visant à améliorer la performance et l'utilisation de la bibliothèque de calculs de produits financiers de l'entreprise. Écrite en C++, et configurée avec CMake, la bibliothèque vise à donner le prix d'un produit financier selon de nombreuses données de marché. À ce titre, j'étais responsable de son intégration et de son accessibilité pour les utilisateurs finaux.
Pour faciliter l'interrogation de la bibliothèque, ce projet a impliqué le développement d'une application d'architecture en microservices Python et la mise en œuvre de processus d'intégration et de déploiement continus, ainsi que de systèmes de surveillance et d'alerte robustes.
En tant qu'ingénieur DevOps de mon équipe, j'étais responsable de plusieurs tâches critiques, y compris :
Cette application se compose d'un ensemble de microservices qui communiquent entre eux via HTTP.
J'ai assuré des livraison de version plus rapides et une plus grande stabilité dans l'environnement de production en mettant en place et en affinant les pipelines Jenkins d'intégration et de livraison continue.
J'avais sous ma responsabilité la santé d'une douzaine de serveurs Linux. L'un de mes rôles était de les maintenir à jour et prêts à héberger des applications ou tout autre projet de développeur.
J'ai dû mettre en place un système de surveillance qui me permettrait de surveiller la santé de l'application de microservices et du serveur de cluster Linux.
J'étais responsable de fournir un soutien technique aux membres de l'équipe, de les aider à dépanner les problèmes et à résoudre les problèmes. De plus, je devais m'assurer que tous les développeurs disposent des outils nécessaires pour travailler efficacement et qu'ils suivent les meilleures pratiques.
DDurant mon temps chez Murex, j'ai réussi plusieurs tâches et jalons critiques :
Je me suis imposé de créer des solutions modulaires, évolutives et maintenables en suivant les meilleures pratiques de développement. Ce faisant, j'ai pu affiner mes compétences en architecture logicielle.
J'ai automatisé le déploiement de l'application et la gestion des utilisateurs à l'aide de pipelines Jenkins et de Playbooks Ansible. Cela m'a permis de déployer/mettre à jour l'application en moins de une minute.
En déployant Prometheus et Grafana, avec Logstash et Elasticsearch, j'ai assuré la fiabilité de l'application et du système. J'ai pu traiter proactivement les problèmes potentiels, ce qui a entraîné un temps d'arrêt minimal et une meilleure expérience utilisateur.
J'ai mis en œuvre HTTPS et l'authentification JWT pour assurer la sécurité des microservices.
J'ai mis à jour la base de données en passant d'un système de paires clé-valeur HTTP personnalisé vers Redis, ce qui a amélioré de 30% les performances sur plusieurs cas de test.
J'ai modifié les méthodes de déploiement en supprimant les scripts bash personnalisés pour une solution conteneurisé, ce qui a amélioré la maintenabilité, l'évolutivité et la fiabilité du déploiement.
J'ai fourni à l'équipe un ensemble d'outils de développement, y compris des extensions VSCode, des pipelines de livraison Jenkins, ou des Playbooks Ansible qui ont amélioré la productivité de l'équipe.
Durant mon temps chez Murex, l'un des principaux défis que j'ai rencontré était le manque initial de familiarité de l'équipe avec les pratiques DevOps. Cet obstacle a rendu difficile la mise en œuvre efficace de nouveaux processus et méthodologies. De plus, j'étais pratiquement seul pour gérer les tâches DevOps, ce qui nécessitait un haut niveau d'autonomie, de gestion du temps et de compétences en matière de priorisation.
De plus, le fait de devoir faire face à la présence de code hérité et à des décisions architecturales passées posait un défi. Pour surmonter cela, je me suis concentré sur l'affinement de mes compétences en architecture, la compréhension des subtilités du domaine financier, et la gestion des complexités des systèmes logiciels.