Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Qui suis-je ? ● Alexandre Salomé – @alexandresalome ● 15 ans de PHP ● 6 ans de Symfony ● 1 an et demi chez Auchan e-commerce France

Slide 3

Slide 3 text

Auchan e-commerce France ● Auchan.fr, Auchandirect.fr ● Basé à Villeneuve-d'Ascq (près de Lille)

Slide 4

Slide 4 text

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)

Slide 5

Slide 5 text

Le Back-Office Front-Office A Front-Office B Front-Office C Middle-Office Back-Office Back-Office B Fournisseurs Entrepôts Paiement Transporteurs

Slide 6

Slide 6 text

Bonjour Legacy

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Hey, Manuel ! ● Toutes les procédures sont manuelles – Installation et configuration (2 jours) – Tests (4 à 6 jours)

Slide 9

Slide 9 text

Un premier bilan ● Agilité ● Automatisation – Environnement de développement – Tests – Déploiements – Performance ● Architecture logicielle ● Surveillance / Monitoring

Slide 10

Slide 10 text

Les plans

Slide 11

Slide 11 text

Migration de l'architecture Middle-Office Fournisseurs Stock ... ... ... ... ... ... ... ... ... ... Commandes Catalogue

Slide 12

Slide 12 text

Migration de l'architecture

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Agilité, Scrum

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Les bénéfices ● Une meilleure priorisation ● Plus de communication ● Un meilleur suivi

Slide 18

Slide 18 text

Environnement de dév.

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Docker ALL the environment! ● On dockerise tout – Apache – PHP 5.5 – PHP 5.3 – ActiveMQ – SFTP – MySQL – ElasticSearch – Redis – Selenium – Robot Framework – Talend

Slide 21

Slide 21 text

Un docker-compose fait maison ● Version interne de docker-compose ● Des fonctionnalités « maison » – Github Token – User/Group ID – External containers – DNS / Services

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Le résultat ● Toute application démarre en 3 commandes : – git clone URL – composer install – box start ● On passe de 2 jours à 20 minutes

Slide 24

Slide 24 text

Et après ? ● Retourner vers les standards Docker ● Tous les environnements hors-production en Docker ● Docker en production ?

Slide 25

Slide 25 text

Tests automatisés

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Premier choix : Robot Framework ● Pratique ● Très flexible ● Synergie avec des équipes l'utilisant déjà

Slide 28

Slide 28 text

Robot Framework

Slide 29

Slide 29 text

Deuxième choix : Behat ● Le standard de la communauté PHP ● Codé en PHP ● Plus rapide

Slide 30

Slide 30 text

Industrialisation

Slide 31

Slide 31 text

Bonjour Legacy ! ● Fichiers de configuration gérés manuellement ● Migrations SQL faites manuellement

Slide 32

Slide 32 text

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)

Slide 33

Slide 33 text

Migrations automatisées ● Utilisation de Phinx ● Doctrine Fixtures ?

Slide 34

Slide 34 text

Et après ? ● Déploiement continu ● Agilité système ● Qualifications à la demande

Slide 35

Slide 35 text

Monitoring

Slide 36

Slide 36 text

Monitoring ● Indicateurs – Système – Applications – Métier ● Journaux d'événement – Événements système – Logs applicatifs – Logs métiers ● Alerting

Slide 37

Slide 37 text

En résumé

Slide 38

Slide 38 text

Des questions ?

Slide 39

Slide 39 text

Merci ! PS : on recrute !

Slide 40

Slide 40 text

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