Ce que je peux apporter à votre organisation
Je suis un ingénieur DevOps expérimenté qui a travaillé dans une multitude de contextes, aussi bien au service de grandes compagnies internationales que d'entreprises de taille petite ou moyenne.
En fonction de vos besoins et de la nature de votre organisation, je pourrai vous aider de multiples manières.
Etablir une culture collaborative
Avant même d'aborder les questions techniques, le succès d'une mission DevOps passe par l'établissement de collaborations constructives entre les différents intervenants, alignées avec les besoins de l'organisation.
Des solutions adaptées: toute situation doit être abordée avec pragmatisme et ouverture d'esprit. Il n'existe pas de solution toute faite mais des réponses plus ou moins adaptées à un besoin qu'il faut définir collectivement, avec des contraintes propres à l'organisation.
Une adhésion des équipes: les solutions doivent être adoptées par les différentes équipes qui y trouveront des améliorations (dévs : code plus facile à déployer / ops : moins de tâches répétitives) et non un poids supplémentaire. Je n'hésite pas non plus à planifier des ateliers de formation s'il le faut.
Initier des boucles de "feedback" continu: l'impact des modifications peut être immédiatement évalué. Les développeurs reçoivent par exemple des retours en temps réel sur les performances et la stabilité de leur code en production. Ceci permet des itérations rapides et une transparence sur les modifications apportées pour aboutir à livrer un logiciel de meilleure qualité sur des cycles plus courts.
Expertise dans la conception de solutions CI/CD
Les objectifs d'automatisation et de fiablisation des processus d'intégration/déploiement nécessitent de convevoir des solutions CI/CD robustes et créatives.
Automatisation du build: détecter des événements de livraison du code (commit, merge, tag) pour lancer une pipeline de build avec Gitlab, éventuellement sur plusieurs architectures système, afin de générer les livrables, produire des releases notes ou autre type de DocAsCode automatiquement...
Conteneurisation: favoriser et intégrer aux processus CI/CD la conteneurisation avec Docker afin de livrer un logiciel opérationnel et déployable immédiatement le plus indépendamment possible de la plateforme; s'adapter aussi aux architectures micro-services.
Déploiement standardisé: générer des déploiements automatisés et gérés en tant que code, notamment avec Ansible et Docker Compose. Le risque d'erreur manuelle est donc limité, la configuration est archivée et versionnée pour faciliter les retour en arrière, la mise est jour est grandement facilitée.
Tests de sécurité: introduire les exigences de cybersécurité dès les phases d'intégration continue en configurant des outils d'analyse statique (SAST) comme Sonarqube, et dynamique (DAST) comme Zaproxy pour détecter des failles OWASP top 10.
Sécuriser et fiabiliser l'infrastructure
Que ce soit sur le cloud ou on-premise, il est primordial de définir en amont l'architecture de déploiement des applications et de mettre en place la surveillance de l'infrastructure.
Architecture technique: concevoir une infrastructure adaptée au besoin (CPU/RAM/stockage, réplication), éventuellement scalable et en plaçant toujours la sécurité au centre des préoccupations (limiter les ports ouverts, proxy inversé, TLS mutuel, exposition au web en DMZ, authentification SSO...)
Monitoring: déployer rapidement et configurer des solutions de monitoring comme Grafana-Prometheus, produire du reporting concernant la capacité de l'infrastructure.
Analyse des problèmes: être capable d'étudier aussi bien les métriques systèmes que les logs des applications pour produire des analyses ciblant les problèmes rencontrés (performances, ...). Déployer des solutions telles qu'ELK pour faciliter la remontée des logs.
Développement web et scripts
En complément de mon activité de DevOps, je peux aider à développer des applications web (sites, API) et des outils apportant des solutions rapides et fiables lorsque les logiciels du marché ne répondent pas au besoin.
Prise en charge de bout en bout: recueil du besoin, choix d'implémentation, modélisation des données et requêtage SQL, développement, processus CI/CD, support.
Outillage au service de l'équipe: expertise en scripting (shell, Powershell, perl, python, Go) pour répondre à divers besoins (récupération et stockage de données, automatisation de tâches), en les ordonnançant si nécessaire (systemd, Control-M).
Interfaces web/API: spécialisation dans le développement d'UI/API en différents langages (Go, PHP, JS), configuration de serveurs web et connaissances en réseau, mise en place de processus d'authentification (SSO, Kerberos, gestion des droits par groupe Active Directory).
Mes compétences
Outils DevOps: Gitlab, Docker (++++), Ansible, Docker Compose (+++), Nexus, Jenkins, Puppet (+), Kubernetes, Terraform (en cours)
Développement et scripting: shell (++++), Go (+++), PHP, javascript, Powershell, Python (++), Perl, Ruby (+) / Git (+++)
Monitoring: Grafana (++), Zabbix (+)
Cybersecurité: SAST avec Sonarqube(++) et Codeclimate (+); DAST avec Zaproxy (++). SSL, certificats, reverse proxy, TLS mutuel (+++)
Virtualisation/Cloud: Microsoft Hyper-V (+), AWS (en cours)
Bases de données: PostgreSQL (+++), SQLite (++), MSSQL, Oracle, Sybase (+)
Serveurs web: Nginx (+++), Apache, Traefik, IIS (+)
Authentification: AD, LDAP, SSO, Kerberos (++)
Ordonnancement: Control-M, HPOO, systemd (+)
Mon expérience
Je vous présente brièvement ici quelques exemples de sujets que j'ai pu traiter et les objectifs qu'ils ont permis d'atteindre.
Produire le capacity planning de l'infrastructure cloud privée de Crédit Agricole CIB
Mise en place d'une plateforme cloud privée IaaS proposant plusieurs offres de services (VM Windows, Linux, BDD SQL Server, ...) et migration de l'infrastructure virtualisée historique.
Rassembler les données de capacité (CPU, RAM, stockage, réseau) de l'infrastructure cloud privée pour restituer l'état de de chaque offre de service.
Contact de nombreuses équipes pour importer les données (SCVMM pour les clusters Hyper-V, datacenters, réseaux) par scripts (shell, perl, Powershell), ordonnancement Control-M, modélisation BDD PostgreSQL. Développement d’une interface web avec graphiques (PHP, chartjs) et aggrégation par cluster et offre de service des données récupérées. Reporting automatisé avec envoi de mail HTML/CSS à la DSI CACIB/CAGIP.
Couverture de l'ensemble des offres de services cloud de l'infrastructure (+ de 5000 VM). Disponibilité accrue de l'infrastructure grâce à l'information transmise pour commander des serveurs à temps, organiser les sous-réseaux...
Migration de l'ensemble des projets du groupe Ekinops vers Git/Gitlab
Uniformisation du SCM et des processus de build à l'échelle du groupe pour améliorer la qualité des livraisons et leur fréquence. Gagner du temps pour le build des artefacts.
Migrer les projets de Mercurial vers Git/Gitlab et améliorer le processus de build lancé manuellement sur Jenkins. S'assurer que les équipes assimilent bien l'utilisation des nouveaux outils.
Script de migration des 800+ projets Mercurial vers Git et création dans Gitlab. Définition et mise en place du cycle CI/CD Git/Gitlab (merge fast-forward). Build lancé automatiquement sur Gitlab avec des images Docker générées pour chaque architecture système, avec une parallélisation (child pipelines) pour gagner en performance. Sessions de formation des équipes à Git/Gitlab.
Décommissionnement du précédent SCM et formation des équipes effectués en 3 mois. Parallélisation des builds : 2 à 3 fois moins de temps pour la compilation et la génération des artefacts.
Mise en place automatisée d'outils DevOps
Uniformisation d'outils utilisés par certaines équipes de dev (Sonarqube, Nexus), proposition de nouveaux (Grafana) pour les rendre disponibles à tous et les intégrer aux processus CI/CD.
Installer des outils DevOps (Sonarqube, Nexus, Grafana) et s'assurer de leur intégration technique avec Gitlab pour qu'ils soient directement utilisés par les équipes, ainsi que de la facilité à les déployer.
Utilisation systématique de Docker Compose pour faciliter les déploiements et de reverse proxy Nginx. Création d'un processus de déploiement automatisé avec Gitlab-Ansible-Docker Compose. Intégration de Sonarqube à Gitlab pour lancer automatiquement les tests et afficher les résultats sur Gitlab (badges). Création de templates Gitlab CI faciles à intégrer aux build pour les équipes de dev.
Déploiement des outils DevOps sur plusieurs environnements uniformisé et automatisé. Adoption générale de Sonarqube comme outil d'analyse de code sans effort particulier des équipes de développement.