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

Du développement à la production, une architect...

Philippe
March 28, 2019

Du développement à la production, une architecture grandissante

"Sur mon poste ça fonctionne bien pourtant !" Tout le monde est confronté à ce problème. Comment passer d'une architecture simple d'un poste de développeur à une infrastructure multi-datacenter pour de la haute disponibilité ? Comment arriver à définir l'architecture ? Quelles sont les différentes étapes de la mise en place de l'architecture jusqu'à la configuration de Symfony ? Lors de cette conférence, nous verrons la mise en place et l’utilisation des mécanismes de caches (HTTP et Persistant) d’une simple installation mono serveur à une architecture sur 3 data centers.

Philippe

March 28, 2019
Tweet

Other Decks in Technology

Transcript

  1. Hey ! Vous êtes qui vous ?!? DEJOUR Kevin Senior

    Consultant @eZSystems [email protected] VINCENT-ROYOL Philippe Lead PS @eZSystems [email protected] Du développement à la production, une architecture grandissante
  2. Hey ! Vous êtes qui vous ?!? DEJOUR Kevin @dejour_kevin

    kevin-dejour VINCENT-ROYOL Philippe @dspe philippevincentroyol Du développement à la production, une architecture grandissante
  3. Agenda Du développement à la production, une architecture grandissante •

    Développement à La production, une Architecture grandissante • Pourquoi de la haute disponibilité ? • En ai-je vraiment besoin ? • Concurrence sur le net • Accès au site et vitesse • Effet Papillon • Effet JT • Définitions • Architecture • Cache HTTP/ Persistence Késako ?
  4. Du développement à la production Du développement à la production,

    une architecture grandissante Pourquoi ce sujet ?
  5. Pourquoi de la haute disponibilité ? Du développement à la

    production, une architecture grandissante • Infrastructure solide et performante
  6. Pourquoi de la haute disponibilité ? Du développement à la

    production, une architecture grandissante • Infrastructure solide et performante • Prévision de défaillances
  7. Pourquoi de la haute disponibilité ? Du développement à la

    production, une architecture grandissante • Infrastructure solide et performante • Prévision de défaillances • Continuité du service
  8. Pourquoi de la haute disponibilité ? Du développement à la

    production, une architecture grandissante • Gestion des pics de charge et de trafic
  9. Pourquoi de la haute disponibilité ? Du développement à la

    production, une architecture grandissante • Gestion des pics de charge et de trafic • Garantie pour le chiffre d’affaire !
  10. Pourquoi de la haute disponibilité ? Du développement à la

    production, une architecture grandissante • Gestion des pics de charge et de trafic • Garantie pour le chiffre d’affaire ! • Préserver l’image et la notoriété du site / de la société
  11. En ai-je vraiment besoin ? Du développement à la production,

    une architecture grandissante • Oui • OUI
  12. En ai-je vraiment besoin ? Du développement à la production,

    une architecture grandissante • Oui • OUI • OUI
  13. En ai-je vraiment besoin ? Du développement à la production,

    une architecture grandissante • Application web à fort trafic • Impossibilité de downtime • Pas d’interruption de services
  14. En ai-je vraiment besoin ? Du développement à la production,

    une architecture grandissante • Application web à fort trafic • Impossibilité de downtime • Pas d’interruption de services • Simplement délivrer le meilleur service
  15. Du développement à la production Du développement à la production,

    une architecture grandissante • Passage du poste du développeur à une architecture à haute disponibilité • Disponibilité des services • Prévision du trafic et des défaillances • Image du site / de la société
  16. Concurrence sur le net Du développement à la production, une

    architecture grandissante • Tous les secteurs ne sont pas impactés par la même compétition commerciale
  17. Concurrence sur le net Du développement à la production, une

    architecture grandissante • Une vingtaine d’enseignes trouvées • Moins de 1 km de séparation entre 2 enseignes (Paris)
  18. Concurrence sur le net Du développement à la production, une

    architecture grandissante • Castorama • Leroy merlin • Mr Bricolage • Bricolex • Quelques indépendants • 3 - 4 km entre 2 enseignes (Paris) (35 terrains de football)
  19. Concurrence sur le net Du développement à la production, une

    architecture grandissante • Castorama • Leroy merlin • Mr Bricolage • Bricolex
  20. Concurrence sur le net Du développement à la production, une

    architecture grandissante • Castorama • Leroy merlin • Mr Bricolage • Bricolex • Dans le meilleur des cas Ecran 27 pouces 5K Ultra Fine de LG à 1399€ sur l’Apple Store 2 - 3 cm
  21. Concurrence sur le net Du développement à la production, une

    architecture grandissante • Pas d’accompagnement physique comme en point de ventes • D’après une analyse de Google Moins de 5 secondes avant de changer de site
  22. Accès au site et vitesse Du développement à la production,

    une architecture grandissante Accès au site Vitesse de chargement des pages
  23. Accès au site et vitesse Du développement à la production,

    une architecture grandissante Accès au site Vitesse de chargement des pages
  24. Accès au site et vitesse Du développement à la production,

    une architecture grandissante Accès au site Vitesse de chargement des pages Dans la vie
  25. Accès au site et vitesse Du développement à la production,

    une architecture grandissante Accès au site Vitesse de chargement des pages Sur Internet
  26. Accès au site et vitesse Du développement à la production,

    une architecture grandissante 5 secondes pour une prise de décision Chiffres étude Google 2018 Temps d’accès à la page + vitesse chargement de la page Taux de rebondissement < 3 secondes 32 % > 3 && < 5 secondes 90 % > 5 && < 6 secondes 106 % > 6 && < 10 secondes 123 %
  27. Effet Papillon Du développement à la production, une architecture grandissante

    « Le battement d'ailes d'un papillon au Brésil peut-il provoquer une tornade au Texas ? »
  28. Effet Papillon Du développement à la production, une architecture grandissante

    • Chaîne d’événements • Le précédent influe sur le suivant • Un événement insignifiant mène à la catastrophe
  29. Effet Papillon Du développement à la production, une architecture grandissante

    • 400 requêtes par seconde • 1 440 000 requêtes en 1H
  30. Effet Papillon Du développement à la production, une architecture grandissante

    • 400 requêtes par seconde • 1 440 000 requêtes en 1H • 200 requêtes par seconde • 720 000 requêtes en 1H
  31. Effet Papillon Du développement à la production, une architecture grandissante

    Temps de rendu de la page Mémoire utilisée Pourcentage de HIT dans le cache Temps de génération des templates Nombre de requêtes BDD
  32. Effet Papillon Du développement à la production, une architecture grandissante

    • Optimisation des requêtes • Optimisation des processus PHP • Optimisation du nombre de dépendances (images, css, js, …) • Optimisation du poids (images, css, js, html, …) • Optimisation des redirections
  33. Effet JT Du développement à la production, une architecture grandissante

    • 30 millions de téléspectateurs entre 18h30 et 20h45
  34. Effet JT Du développement à la production, une architecture grandissante

    • Capital sur M6 le dimanche soir • Environs 4,3 millions de téléspectateurs
  35. Effet JT Du développement à la production, une architecture grandissante

    • Capital sur M6 le dimanche soir • Environs 4,3 millions de téléspectateurs • Emission sur les cuisines Low-Cost • Si 1/10 des téléspectateurs visite le site 430 000 visites
  36. Effet JT Du développement à la production, une architecture grandissante

    Site A site B site C Down Down UP, mais lent 0 % 0 % +630 %
  37. Effet JT Du développement à la production, une architecture grandissante

    • Effet non contrôlable Contrairement à l’effet papillon • Prévision des défaillances possibles
  38. Business Du développement à la production, une architecture grandissante •

    Concurrence très proche sur internet • Effet papillon maîtrisable • Effet JT prévisionable • Impacts directs sur le business
  39. Points clés Du développement à la production, une architecture grandissante

    Développement Code Build & Test Deploy Infrastructure Define Deploy Maintenance Backup Scale & Monitor ?
  40. Nouveaux layers Du développement à la production, une architecture grandissante

    • Serveurs de caches HTTP (Varnish, Fastly, etc.) • Caches de persistances des données (Redis, Memcached, etc.) + Introduction de divers clusters sur des environnements de Recette, Pré Prod, Prod...
  41. Varnish Cache Du développement à la production, une architecture grandissante

    Recv – Request is received from client Pipe – Direct output of backend data (streaming) Hash – Request is cacheable, lookup cache entry Pass – Request is not cacheable Hit – Cache entry is found Miss – Cache entry not found Fetch – Retrieval of data from backend Deliver – Return data to client
  42. Cache de persistence - Késako ? Du développement à la

    production, une architecture grandissante • Requêtes complexes • Requêtes longues en exécution • Mêmes données récupérées encore et encore • La source des données n’est pas toujours disponible • Les données varient énormément durant une courte période
  43. Redis Du développement à la production, une architecture grandissante Utilisations

    populaires de Redis : • Cache • Chat, messagerie, ... • Classements de jeux • Stockage de sessions • Géospatial • Machine Learning • Analyses temps réels
  44. Redis Du développement à la production, une architecture grandissante •

    Réplication Simple (ex: master/slave) • Réplication avec Sentinels • Redis Cluster
  45. Nombres de noeuds Du développement à la production, une architecture

    grandissante Règles: • 2 nœuds – aucune tolérance à la faute • 3 nœuds – jusqu’à 1 faute • 4 noeuds - jusqu’à 1 faute (Si 2 noeuds sont down, seulement 50% du cluster est dispo. Vous devez avoir plus de 50% de noeuds pour maintenir les opérations) • 5 noeuds - jusqu’à 2 fautes • etc.
  46. Architecture et code Du développement à la production, une architecture

    grandissante • Cache HTTP ◦ Installation de Fos HTTP Cache ◦ Définition de(s) serveur(s) Varnish ◦ Configuration YAML ◦ Exemple de bloc ESI • Cache de persistence ◦ Stash Bundle (?) ◦ Symfony Cache Component
  47. Stash Bundle (?) Du développement à la production, une architecture

    grandissante • Support de Memcached, Redis, APC, FileSystem, BlackHole • Possible de re-générer un cache • un cache hiérarchique ( ex: /users/{userId}/settings ) /!\
  48. Symfony Cache Component Du développement à la production, une architecture

    grandissante • Etend le ◦ PSR-6: Caching (cache pool, cache tagging pour l’invalidation, etc.) ◦ PSR-16: Simple Caching (stocker, récupérer et supprimer des items)
  49. Conclusion Du développement à la production, une architecture grandissante •

    Prise en compte de la compétition • Image du site / société • Charges et trafic avec prévision de défaillance • Haute disponibilité pour un meilleur service • Architecture adaptée au besoin