Upgrade to Pro — share decks privately, control downloads, hide ads and more …

La montée en charge

La montée en charge

Retour d'expérience sur les modifications d'architecture et de code nécessaire à la montée en charge de notre application PHP, via l'utilisation de containers dockers.

Avatar for Jérémy GIGNON

Jérémy GIGNON

November 09, 2017

Other Decks in Programming

Transcript

  1. QUI SOMMES NOUS ? Janvier 2015 Outil d’analyse des 


    adblockers 3 développeurs @adback_co https://www.adback.co
  2. LE DÉPART ▸ Projet monobloc ▸ Symfony 2 ▸ 3

    serveurs chez OVH ▸ MariaDB ▸ File d’attente Redis ▸ Workers CLI ▸ Développé par un seul développeur
  3. LE DÉPART ▸ Scaling difficile ▸ Maintenance fastidieuse ▸ Limitation

    des capacités d’intégration de nouveaux sites ▸ Ban par les firewall OVH pour… flooding
  4. L’URGENCE Pas de refactoring Migration en urgence Au plus vite

    Avec un nouvel hébergeur Mêmes technologies Nouveaux sites attendus 2 semaines max Amazon Web Services
  5. Procédure: 1. Déplacement des bases de données sur AWS 2.

    Fonctionnement hybride temporaire OVH / AWS 3. Déplacement du projet sur AWS L’URGENCE
  6. L’URGENCE Résultat: 1. Déplacement des bases de données sur AWS

    ✅ 2. Fonctionnement hybride temporaire OVH / AWS ❌ 3. Déplacement du projet sur AWS ❌ Lenteur des accès à Redis…
  7. SÉPARATION DES PROJETS Identification des différentes fonctions : ‣ Envoi

    des tags / Réception des données (Satellites) ‣ Enrichissement des données reçues (Workers) ‣ Agrégation des statistiques (Workers Cache) ‣ Interface de lecture des résultats (Backoffice)
  8. SÉPARATION DES PROJETS Procédure: 1. Séparation du projet en différents

    services (forks) 2. Épuration du code des forks 3. Tous les projets (hors backoffice) sur AWS 4. Load balancing avec Elastic Beanstalk
  9. SÉPARATION DES PROJETS Résultat: 1. Séparation du projet en différents

    services (forks) ✅ 2. Épuration du code des forks ✅ 3. Tous les projets (hors backoffice) sur AWS ✅ 4. Load balancing avec Elastic Beanstalk ✅
  10. ‣ Config Docker similaire ‣ Plusieurs containers par instance EC2

    ‣ Configuration via un fichier Dockerrun.aws.json ELASTIC BEANSTALK ET DOCKER
  11. NOUVEAUX PROBLÈMES ‣ Mauvaises IPs en sortie de Load Balancer

    ‣ Limitations de la base MariaDB à 1000 inserts / sec
  12. NOUVEAUX PROBLÈMES ‣ Limitations de la base MariaDB à 1000

    inserts / sec ‣ Séparation: 1. Données principales (MariaDB) 2. Données enrichies temporaires (Aurora) 3. Stockage définitif (Redshift) ‣ Aurora à Redshift via export CSV (Embulk)
  13. ET ENSUITE ? ‣ Permettre une infrastructure séparée pour certains

    clients ‣ Automatiser l’upgrade des bases de données ‣ Fournir des analyses en temps réel plutôt que le lendemain
  14. CE QUI NOUS A AIDÉ ‣ Culture DevOps ‣ Code

    / Infrastructure ‣ Automatisation ‣ Partage de la connaissance ‣ Mesures
  15. CE QUI NOUS A AIDÉ ‣ Le télétravail ‣ Tout

    partager sur Slack : les réflexions comme les décisions ‣ Documenter notre code : intégrer rapidement de nouveaux membres à l’équipe ‣ Esprit agile : cérémonies, daily stand up, rotation des tâches
  16. ‣ Séparer l’implémentation de l’utilisation ‣ Bibliothèques communes ‣ Open-source

    si possible ‣ Ne pas privilégier l’optimisation CE QUI NOUS A AIDÉ