Retour d'expérience sur la migration du back-office - Auchan e-commerce - Forum PHP 2015

Retour d'expérience sur la migration du back-office - Auchan e-commerce - Forum PHP 2015

8665aad8f35b1710df79e9aef52d6daa?s=128

Alexandre Salomé

November 24, 2015
Tweet

Transcript

  1. Retour d'expérience sur la migration du Back-Office Auchan e-commerce France

  2. Qui suis-je ? • Alexandre Salomé – @alexandresalome • 15

    ans de PHP • 6 ans de Symfony • 1 an et demi chez Auchan e-commerce France
  3. Auchan e-commerce France • Auchan.fr, Auchandirect.fr • Basé à Villeneuve-d'Ascq

    (près de Lille)
  4. Le métier Le e-commerce, en grand Des centaines de milliers

    de produits Des centaines ou des milliers de fournisseurs Multiples entrepôts et multiples transporteurs Relation avec les magasin (stock magasin, retrait magasin, retour magasin)
  5. Le Back-Office Front-Office A Front-Office B Front-Office C Middle-Office Back-Office

    Back-Office B Fournisseurs Entrepôts Paiement Transporteurs
  6. Bonjour Legacy

  7. Bonjour Legacy Middle-Office Back-Office - 413.088 lignes de code -

    Dette technique Insight : 7 ans - 11422 violations - 1.039.996 lignes de code - Dette technique Insight : 31 ans - 33.272 violations
  8. Hey, Manuel ! • Toutes les procédures sont manuelles –

    Installation et configuration (2 jours) – Tests (4 à 6 jours)
  9. Un premier bilan • Agilité • Automatisation – Environnement de

    développement – Tests – Déploiements – Performance • Architecture logicielle • Surveillance / Monitoring
  10. Les plans

  11. Migration de l'architecture Middle-Office Fournisseurs Stock ... ... ... ...

    ... ... ... ... ... ... Commandes Catalogue
  12. Migration de l'architecture

  13. Architecture orientée services Référentiel produits API Catalogue Livraison Événements

  14. Aujourd'hui Middle-Office Fournisseurs Stock Commandes ... ... ... ... ...

    ... ... ... ... ... Catalogue
  15. Agilité, Scrum

  16. Basculé ! • 5 équipes • Sprints de 2 semaines

    • Rôles : PO, SM, développeur • Rituels : poker-planning, task split, daily standup, revues de sprint, rétrospective • Word → Jira
  17. Les bénéfices • Une meilleure priorisation • Plus de communication

    • Un meilleur suivi
  18. Environnement de dév.

  19. Bonjour Legacy • Tout le monde sur le même serveur

    – On partage une base de données de production modifiée – Certains services mutualisés (FTP, ActiveMQ, ...) • 2 jours pour déployer un nouvel environnement
  20. Docker ALL the environment! • On dockerise tout – Apache

    – PHP 5.5 – PHP 5.3 – ActiveMQ – SFTP – MySQL – ElasticSearch – Redis – Selenium – Robot Framework – Talend
  21. Un docker-compose fait maison • Version interne de docker-compose •

    Des fonctionnalités « maison » – Github Token – User/Group ID – External containers – DNS / Services
  22. La base de données de production • Besoin de données

    « réelles » • Base de données = 40 Go • MagicDB – Je veux une base de données de production – 5 secondes plus tard, elle est prête – Je peux la supprimer/recréer facilement
  23. Le résultat • Toute application démarre en 3 commandes :

    – git clone URL – composer install – box start • On passe de 2 jours à 20 minutes
  24. Et après ? • Retourner vers les standards Docker •

    Tous les environnements hors-production en Docker • Docker en production ?
  25. Tests automatisés

  26. Bonjour Legacy • Plusieurs jours pour tester toute l'application –

    Toutes les 4 semaines – Plusieurs personnes • Des tests parfois ignorés – Indisponibilité d'un tiers – Manque de temps – Manque de rigueur
  27. Premier choix : Robot Framework • Pratique • Très flexible

    • Synergie avec des équipes l'utilisant déjà
  28. Robot Framework

  29. Deuxième choix : Behat • Le standard de la communauté

    PHP • Codé en PHP • Plus rapide
  30. Industrialisation

  31. Bonjour Legacy ! • Fichiers de configuration gérés manuellement •

    Migrations SQL faites manuellement
  32. Configuration automatique • Des dizaines de fichiers de configuration •

    Création de méthodes pour : – Transférer la configuration d'une application à une autre – Réduire le nombre de fichiers de configuration à un seul (parameters.yml de Symfony)
  33. Migrations automatisées • Utilisation de Phinx • Doctrine Fixtures ?

  34. Et après ? • Déploiement continu • Agilité système •

    Qualifications à la demande
  35. Monitoring

  36. Monitoring • Indicateurs – Système – Applications – Métier •

    Journaux d'événement – Événements système – Logs applicatifs – Logs métiers • Alerting
  37. En résumé

  38. Des questions ?

  39. Merci ! PS : on recrute !

  40. Crédits • Photos – Gioia De Antoniis - https://flic.kr/p/8yHq9y –

    Gran Canyon National Park - https://flic.kr/p/cq3Yhu – L'oeil étranger - https://flic.kr/p/gWj3Tk – Amanda B - https://flic.kr/p/9suoXu – clement127 - https://flic.kr/p/qxEiX3 – Nick Saltmarsh - https://flic.kr/p/5j5pY8 – Highways England - https://flic.kr/p/a9VWKa – Moutain Biking - https://flic.kr/p/8w9BMj