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

Concevoir des back-offices performants

Concevoir des back-offices performants

Alexandre Salomé

June 26, 2020
Tweet

More Decks by Alexandre Salomé

Other Decks in Programming

Transcript

  1. 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. Le plan - Le front-office, rapidement - Pourquoi c’est lent

    ? - Mesurer et analyser - Cas pratiques - Pourquoi c’est rapide ? - Bonnes pratiques à emporter
  3. Le processeur Problèmes courants : - Calcul coûteux - Peu/pas

    de disponibilité - Un seul coeur utilisé - iowait
  4. 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. Le transport Types : Intranet / Extranet Problèmes courants :

    - Latence - Débit - Connexions impossibles - Connexions perdues
  6. 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. PHP Problèmes courants : - Opcache absent - Autoload non

    optimisé - Utilisation du disque dur Aller plus loin - validate_timestamps
  8. 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
  9. Multi-threading - Pas possible en PHP et permet d’éviter beaucoup

    d’erreurs - Lancer le même processus plusieurs fois, en parallèle
  10. Ne pas utiliser le disque dur - PHP, correctement optimisé,

    travaille uniquement en RAM - S’assurer que son traitement n’utilise pas le disque
  11. 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
  12. 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.
  13. 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.
  14. 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.
  15. 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