Retour aux expériences

Protectman

Développeur Fullstack

mars 2026 — aujourd'hui

Overview

Seul référent technique — équipements de protection déployés dans 200+ parcs aventures, portail Symfony utilisé par un réseau européen de techniciens. Industrialisation CI/CD Docker/Bitbucket, monitoring prod préventif, intégrations Shopify. Déploiements reproductibles au merge, build Docker accéléré, incident prod résolu avec prévention en place.

Features, challenges & résultats

Investigation d'un incident critique de production : le portail contrôleur était inaccessible suite à une saturation du disque serveur. Mise en place d'une rotation des logs (logrotate) et d'un cron exécutant un script de prune des images Docker.

  • Urgence production sans équipe technique interne : diagnostic et correction en autonomie, sous pression d'un site indisponible pour le réseau de contrôleurs.
  • Service rétabli en quelques heures ; environ 80 % d'espace disque libéré. Prévention mise en place pour éviter une nouvelle saturation (logrotate + nettoyage Docker planifié).

Industrialisation du déploiement et du développement local du portail contrôleur (PHP, Symfony). Sortie des secrets du dépôt (.env commités, valeurs en dur) au profit de variables Bitbucket et d'un .env généré en CI. Pipeline Bitbucket : récupération des secrets, connexion SSH, écriture du .env serveur, git pull, build et redémarrage Docker (compose-deploy). Optimisation du Dockerfile multi-stage : build accéléré. Documentation Markdown dans doc/ (architecture, config, dev local Symfony + DB Docker ou pile Compose complète, CI/CD, guides) pour faciliter la reprise par un successeur.

  • Héritage d'un déploiement manuel par SSH et de secrets versionnés dans le code, sans process documenté ni équipe technique interne — tout à structurer en solo.
  • Déploiements reproductibles au merge sur master ; secrets centralisés dans Bitbucket, plus de .env prod dans git. Build Docker accéléré. Deux modes de dev local documentés (Symfony + DB Docker, ou pile complète Compose) et documentation projet complète pour la passation.

Intégration Shopify pour automatiser les commandes préliminaires après maintenance sur le portail contrôleur (PHP, Symfony). Mise à jour automatique des stocks Shopify par composant remplacé (InventoryLevel.adjust), à partir des statuts saisis sur la maintenance.

  • Refonte du modèle de données : les composants étaient une liste textuelle dans la colonne parts de product ; migration vers l'entité Doctrine Part (table product_part) avec libellés bilingues, quantité maximale par équipement et shopifyProductId. Découplage asynchrone de la décrémentation de stock : événement DraftOrderCreated, puis job DecreaseShopifyStock via Symfony Messenger, pour ne pas bloquer l'interface lors des appels API Shopify.
  • Le client n'a plus à calculer manuellement les composants à commander — gain de temps important sur le flux post-maintenance. La quantité maximale par composant guide les contrôleurs lors de la saisie des pièces défaillantes : inventaire plus fin côté Shopify et économies sur les commandes de pièces.