Concevoir des back-offices performants

Concevoir des back-offices performants

8665aad8f35b1710df79e9aef52d6daa?s=128

Alexandre Salomé

June 26, 2020
Tweet

Transcript

  1. 2.

    Interactivité - Questions dans LiveStorm - Traitées par popularité -

    Le chat pour parler entre vous Merci de respecter le code de conduite de l’Afup.
  2. 3.

    Le plan - Le front-office, rapidement - Pourquoi c’est lent

    ? - Mesurer et analyser - Cas pratiques - Pourquoi c’est rapide ? - Bonnes pratiques à emporter
  3. 14.

    Le processeur Problèmes courants : - Calcul coûteux - Peu/pas

    de disponibilité - Un seul coeur utilisé - iowait
  4. 15.

    La mémoire Types : RAM / SSD / HDD /

    Réseau Problème courants : - RAM saturée (= SWAP) - Disques durs - Latence lecture/écriture - IOPS - Réseau lent - Cf slide suivante d’après
  5. 16.

    Le transport Types : Intranet / Extranet Problèmes courants :

    - Latence - Débit - Connexions impossibles - Connexions perdues
  6. 17.

    Stockage et distance Sources: https://gist.github.com/hellerbarde/2843375 et https://wondernetwork.com/pings Type Latence Équiv.

    Distance L1 0.5 ns 1 centimètre RAM 100 ns 2 mètres SSD 150 µs 3 kilomètres HDD 10 ms 200 kilomètres Paris > Londres 10 ms 200 kilomètres Paris > New York 75 ms 1500 kilomètres
  7. 18.

    PHP Problèmes courants : - Opcache absent - Autoload non

    optimisé - Utilisation du disque dur Aller plus loin - validate_timestamps
  8. 19.
  9. 21.
  10. 25.
  11. 26.
  12. 28.
  13. 29.
  14. 30.
  15. 31.
  16. 32.
  17. 37.
  18. 39.
  19. 41.
  20. 49.
  21. 52.

    Spécialisation - Bases de données relationnelles : MySQL, Postgres -

    Cache : Redis, memcached - Recherche : ElasticSearch - Séries temporelles : InfluxDB, Graphite - Messagerie : ActiveMQ, RabbitMQ - Flux d’événements : Kafka - Stockages larges : MongoDB
  22. 53.

    Multi-threading - Pas possible en PHP et permet d’éviter beaucoup

    d’erreurs - Lancer le même processus plusieurs fois, en parallèle
  23. 55.

    Ne pas utiliser le disque dur - PHP, correctement optimisé,

    travaille uniquement en RAM - S’assurer que son traitement n’utilise pas le disque
  24. 59.

    Principal et réplication / Primary and replica Permis par la

    plupart des système, plus ou moins facilement. Si l’instance principale échoue, une des réplication deviendra principal. Principal Réplication Réplication Réplication
  25. 64.

    Puppet show Bonjour, je voudrais la liste de tous les

    utilisateurs, toutes ses informations personnelles, ses e-mails, ses numéros de téléphones, ses adresses, ses 10 dernières connexions, la liste des amis et la liste de ses permissions. S’il te plaît.
  26. 66.

    Quand on conçoit un traitement - Identifier les données impliqués,

    leurs volumes - Identifier les transports associés - Identifier les calculs faits Restez le plus simple possible Si impossible : découper, distribuer, cacher, etc.
  27. 67.

    Comprendre avant d’agir En priorité, cherchez à avoir de la

    visibilité et une mesure du problème : - iowait = 80% - Disques durs plafonnent en IOPS Une fois la cause exacte identifiée en production, reproduire en local.
  28. 71.

    Remerciements - Afup, tous ses bénévoles et tous ses membres

    - Les-Tilleuls.coop pour l’hébergement - WeLoveDevs.com pour le matériel - Icônes par Freepik de Flaticon - Code rendu par carbon.now.sh