Retour aux expériences

Protectman

Développeur Full-Stack Symfony — freelance

mars 2026 — aujourd'hui

Overview

Protectman conçoit et maintient des équipements de protection verticale (RodeoStop), déployés dans plus de 200 parcs aventures et en industrie. En freelance, seul référent technique : portail Symfony pour les employés et le réseau européen de techniciens (traçabilité des maintenances). Périmètre full-stack, stabilité prod, CI/CD (Bitbucket, Docker) et résolution d'incidents.

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 (Symfony 5.4). 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 ~7–8 min → ~20 s avec cache). Documentation Markdown dans doc/ (architecture, config, dev local hybride ou Docker complet, 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 fortement accéléré grâce au cache des couches. Deux modes de dev local documentés (Symfony CLI + 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 7.4, Symfony 5.4). 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é Part (table product_part) avec libellés bilingues, quantité maximale par équipement et shopifyProductId. Découplage asynchrone de la décrémentation de stock : DraftOrderCreatedEvent, puis DecreaseShopifyStockMessage via Symfony Messenger (transport doctrine://) consommé par un worker Docker (messenger:consume async), 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.