Du développement à la production, une architecture grandissante

17a2fb0a1c28b19d802a294ce21c6b84?s=47 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.

17a2fb0a1c28b19d802a294ce21c6b84?s=128

Philippe

March 28, 2019
Tweet

Transcript

  1. Du développement à la production, une architecture grandissante DEJOUR Kévin

    - VINCENT-ROYOL Philippe
  2. Hey ! Vous êtes qui vous ?!? DEJOUR Kevin Senior

    Consultant @eZSystems dejourk@gmail.com VINCENT-ROYOL Philippe Lead PS @eZSystems pvr@ez.no Du développement à la production, une architecture grandissante
  3. Hey ! Vous êtes qui vous ?!? DEJOUR Kevin @dejour_kevin

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

  5. 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 ?
  6. Du développement à la production, une architecture grandissante

  7. Du développement à la production Du développement à la production,

    une architecture grandissante Pourquoi ce sujet ?
  8. Du développement à la production Du développement à la production,

    une architecture grandissante
  9. Du développement à la production Du développement à la production,

    une architecture grandissante ?
  10. Du développement à la production Du développement à la production,

    une architecture grandissante Comment ?
  11. Du développement à la production Du développement à la production,

    une architecture grandissante Pourquoi ?
  12. Pourquoi de la haute disponibilité ?

  13. Pourquoi de la haute disponibilité ? Du développement à la

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

    production, une architecture grandissante • Infrastructure solide et performante • Prévision de défaillances
  15. 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
  16. Pourquoi de la haute disponibilité ? Du développement à la

    production, une architecture grandissante • Gestion des pics de charge et de trafic
  17. 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 !
  18. 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é
  19. En ai-je vraiment besoin ?

  20. En ai-je vraiment besoin ? Du développement à la production,

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

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

    une architecture grandissante • Oui • OUI • OUI
  23. 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
  24. 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
  25. 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é
  26. Concurrence sur le net

  27. 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
  28. Concurrence sur le net Du développement à la production, une

    architecture grandissante
  29. 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)
  30. 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)
  31. Concurrence sur le net Du développement à la production, une

    architecture grandissante • Castorama • Leroy merlin • Mr Bricolage • Bricolex
  32. 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
  33. Concurrence sur le net Du développement à la production, une

    architecture grandissante
  34. 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
  35. Accès au site et vitesse

  36. Accès au site et vitesse Du développement à la production,

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

    une architecture grandissante Accès au site Vitesse de chargement des pages
  38. 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
  39. 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
  40. 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 %
  41. Effet Papillon

  42. 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 ? »
  43. 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
  44. Effet Papillon Du développement à la production, une architecture grandissante

  45. Effet Papillon Du développement à la production, une architecture grandissante

    Nombre de requêtes BDD
  46. Effet Papillon Du développement à la production, une architecture grandissante

    • 100 accès par seconde • Pendant 1 H
  47. Effet Papillon Du développement à la production, une architecture grandissante

    • 400 requêtes par seconde • 1 440 000 requêtes en 1H
  48. 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
  49. 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
  50. Effet Papillon Du développement à la production, une architecture grandissante

  51. 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
  52. Effet Papillon Du développement à la production, une architecture grandissante

    Maîtrise de l’effet papillon
  53. Effet JT

  54. Effet JT Du développement à la production, une architecture grandissante

    Journal télévisé
  55. Effet JT Du développement à la production, une architecture grandissante

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

    • Capital sur M6 le dimanche soir • Environs 4,3 millions de téléspectateurs
  57. 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
  58. Effet JT Du développement à la production, une architecture grandissante

  59. Effet JT Du développement à la production, une architecture grandissante

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

    • Effet non contrôlable Contrairement à l’effet papillon • Prévision des défaillances possibles
  61. 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
  62. Définitions

  63. Définitions Du développement à la production, une architecture grandissante Monolithic,

    SOA, Microservices ?
  64. Architecture : de A à ...

  65. Points clés Du développement à la production, une architecture grandissante

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

  67. Du développement à la production, une architecture grandissante On Premises,

    Iass, Paas, Saas
  68. Architecture - Le dev Du développement à la production, une

    architecture grandissante
  69. Architecture - Le dev Du développement à la production, une

    architecture grandissante +
  70. Architecture - et après ? Du développement à la production,

    une architecture grandissante
  71. 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...
  72. Cache HTTP/Persitence Késako ?

  73. Cache HTTP - Késako ? Du développement à la production,

    une architecture grandissante
  74. Cache HTTP - Késako ? Du développement à la production,

    une architecture grandissante
  75. Cache HTTP - Késako ? Du développement à la production,

    une architecture grandissante
  76. Cache HTTP - Késako ? Du développement à la production,

    une architecture grandissante
  77. 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
  78. Varnishstat Du développement à la production, une architecture grandissante

  79. Varnish Log Du développement à la production, une architecture grandissante

  80. 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
  81. 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
  82. Redis Du développement à la production, une architecture grandissante •

    Réplication Simple (ex: master/slave) • Réplication avec Sentinels • Redis Cluster
  83. Galera Cluster Du développement à la production, une architecture grandissante

  84. 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.
  85. Galera - Segments Du développement à la production, une architecture

    grandissante
  86. Galera - Multiples DC Du développement à la production, une

    architecture grandissante
  87. Galera Arbitrator Du développement à la production, une architecture grandissante

  88. Architecture : de A à Z

  89. Architecture type Du développement à la production, une architecture grandissante

  90. Architecture 2 DC Du développement à la production, une architecture

    grandissante
  91. Architecture 3 DC Du développement à la production, une architecture

    grandissante
  92. 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
  93. Fos HTTP Cache Du développement à la production, une architecture

    grandissante
  94. Fos HTTP Cache Du développement à la production, une architecture

    grandissante
  95. Fos HTTP Cache Du développement à la production, une architecture

    grandissante
  96. Exemple bloc ESI Du développement à la production, une architecture

    grandissante
  97. 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 ) /!\
  98. Stash Bundle (?) Du développement à la production, une architecture

    grandissante
  99. 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)
  100. Symfony Cache Component Du développement à la production, une architecture

    grandissante
  101. Symfony Cache Component Du développement à la production, une architecture

    grandissante
  102. 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
  103. Questions ? Du développement à la production, une architecture grandissante

  104. Contacts DEJOUR Kevin @dejour_kevin kevin-dejour dejourk@gmail.com VINCENT-ROYOL Philippe @dspe philippevincentroyol

    pvr@ez.no Du développement à la production, une architecture grandissante