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 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 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 Slide

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

    View 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. Pourquoi de la haute disponibilité ?

    View Slide

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

    View 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 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 Slide

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

    View 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 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 Slide

  19. En ai-je vraiment besoin ?

    View Slide

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

    View Slide

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

    OUI

    View Slide

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

    OUI

    OUI

    View 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 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 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 Slide

  26. Concurrence sur le net

    View 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 Slide

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

    View 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 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 Slide

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

    View 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 Slide

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

    View 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 Slide

  35. Accès au site et vitesse

    View 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 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 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 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 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 Slide

  41. Effet Papillon

    View 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 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 Slide

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

    View Slide

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

    View Slide

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

    View 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 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 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 Slide

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

    View 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 Slide

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

    View Slide

  53. Effet JT

    View Slide

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

    View Slide

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

    View 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

    View Slide

  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

    View Slide

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

    View Slide

  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 %

    View Slide

  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

    View Slide

  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

    View Slide

  62. Définitions

    View Slide

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

    View Slide

  64. Architecture : de A à ...

    View Slide

  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
    ?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  72. Cache HTTP/Persitence
    Késako ?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  88. Architecture : de A à Z

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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)

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  104. 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 Slide