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

Du développement à la production, une architecture grandissante

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. Du développement à la production,
    une architecture grandissante
    DEJOUR Kévin - VINCENT-ROYOL Philippe

    View full-size slide

  2. 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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

  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 ?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  12. Pourquoi de la haute disponibilité ?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

  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 !

    View full-size slide

  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é

    View full-size slide

  19. En ai-je vraiment besoin ?

    View full-size slide

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

    View full-size slide

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

    OUI

    View full-size slide

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

    OUI

    OUI

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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é

    View full-size slide

  26. Concurrence sur le net

    View full-size slide

  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

    View full-size slide

  28. Concurrence sur le net
    Du développement à la production, une architecture grandissante

    View full-size slide

  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)

    View full-size slide

  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)

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  33. Concurrence sur le net
    Du développement à la production, une architecture grandissante

    View full-size slide

  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

    View full-size slide

  35. Accès au site et vitesse

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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 %

    View full-size slide

  41. Effet Papillon

    View full-size slide

  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 ? »

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  52. Effet Papillon
    Du développement à la production, une architecture grandissante
    Maîtrise de l’effet papillon

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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
    ● Emission sur les cuisines Low-Cost
    ● Si 1/10 des téléspectateurs visite le site
    430 000 visites

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  60. 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

    View full-size slide

  61. Définitions

    View full-size slide

  62. Définitions
    Du développement à la production, une architecture grandissante
    Monolithic, SOA,
    Microservices ?

    View full-size slide

  63. Architecture : de A à ...

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  66. Du développement à la production, une architecture grandissante
    On Premises, Iass, Paas, Saas

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  70. 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...

    View full-size slide

  71. Cache HTTP/Persitence
    Késako ?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  76. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  79. 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

    View full-size slide

  80. 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

    View full-size slide

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

    View full-size slide

  82. Galera Cluster
    Du développement à la production, une architecture grandissante

    View full-size slide

  83. 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.

    View full-size slide

  84. Galera - Segments
    Du développement à la production, une architecture grandissante

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  87. Architecture : de A à Z

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  91. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  96. 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 ) /!\

    View full-size slide

  97. Stash Bundle (?)
    Du développement à la production, une architecture grandissante

    View full-size slide

  98. 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)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  101. 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

    View full-size slide

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

    View full-size slide

  103. Contacts
    DEJOUR Kevin
    @dejour_kevin
    kevin-dejour
    [email protected]
    VINCENT-ROYOL Philippe
    @dspe
    philippevincentroyol
    [email protected]
    Du développement à la production, une architecture grandissante

    View full-size slide