2 points par GN⁺ 2024-10-21 | 1 commentaires | Partager sur WhatsApp
  • La clé pour apprendre les systèmes distribués réside davantage dans un changement de mode de pensée que dans une technologie particulière, et cette liste permet de suivre, thème par thème, les problèmes rencontrés lors de la conception de systèmes à l’échelle d’Internet
  • Les ressources sont réparties entre philosophie de conception, latence, études de cas de systèmes à grande échelle chez Amazon et Google, modèles de cohérence, théorie, outils, infrastructure, stockage, algorithmes de consensus, protocoles de gossip et P2P
  • CAP, l’évitement du 2PC, l’eventual consistency et la réplication optimiste montrent les compromis opérationnels qui rendent difficile l’obtention simultanée d’un maximum de cohérence et de disponibilité
  • Le corpus d’articles sur Google fournit des exemples d’implémentation de systèmes distribués à grande échelle comme MapReduce, Chubby, GFS, BigTable, Dremel, Spanner, Photon et Mesa, tandis que les ressources sur Amazon traitent à la fois de la transition vers une architecture orientée services et de la culture organisationnelle
  • En poursuivant la lecture de Paxos, Raft, FLP, Lamport Clock, Byzantine Generals, Chord, Kademlia et Pastry, on peut structurer en un seul fil les questions de consensus, temps, réplication et routage

Mode de pensée et perspective de conception

Latence et services à l’échelle d’Internet

Articles sur les systèmes Google et modèles de cohérence

  • Le corpus Google réunit en un seul endroit des papiers sur des systèmes à grande échelle allant de MapReduce à Mesa, relevant presque de la « rocket science » des systèmes distribués
    • MapReduce
    • Chubby Lock Manager
    • Google File System
    • BigTable
    • Dremel: analyse interactive de jeux de données à l’échelle du web
    • Megastore: conception d’une implémentation Paxos à faible latence entre datacenters
    • Spanner: base de données Google scalable, multiversion, distribuée globalement et répliquée de manière synchrone
    • Photon: jointures tolérantes aux pannes et scalables sur des flux de données continus
    • Mesa: data warehouse scalable, géorépliqué et quasi temps réel qui stocke les principales données de mesure de l’activité de publicité Internet de Google
  • « Consistency Models » rassemble des ressources visant à trouver le bon compromis entre cohérence et disponibilité selon le contexte du système

Théorie, langages, infrastructure, stockage

Consensus, gossip, P2P

1 commentaires

 
GN⁺ 2024-10-21
Commentaires sur Hacker News
  • Cette liste semble un peu datée ; je recommande la liste de lectures sur le consensus distribué de Heidi Howard
    https://github.com/heidihoward/distributed-consensus-reading...

  • J’ai trouvé étrange de voir le MapReduce de Google présenté comme la « science des fusées » du domaine
    Après vérification, cette liste date de 2014 [1] ; la situation a beaucoup changé depuis, donc il faut la prendre avec prudence
    [1] https://news.ycombinator.com/from?site=dancres.github.io

    • Avec ça en tête, le contexte devient beaucoup plus clair. 10 ans se sont écoulés depuis la publication de cette liste, et à l’époque, l’article sur MapReduce avait déjà lui-même 10 ans
  • Il existe une méta-liste de listes de lectures sur les systèmes distribués que j’ai créée il y a environ 10 ans
    J’y ai aussi ajouté cette liste avec quelque 10 ans de retard, et Dieu seul sait combien des éléments que j’avais rassemblés sont encore accessibles aujourd’hui
    https://gist.github.com/macintux/6227368

  • L’article https://ferd.ca/a-distributed-systems-reading-list.html, qui mentionne la liste originale, vaut aussi le détour

    • Il faut préciser clairement à qui s’adressent réellement ce genre de listes. À mon avis, ce n’est pas simplement une liste pour des personnes qui veulent « apprendre les systèmes distribués »
      Elle peut être utile à ceux qui repoussent les limites ou cherchent de nouvelles approches, mais pour les autres, c’est un peu comme demander comment résoudre une équation du second degré et recevoir 100 articles de théorie des catégories
      La liste de Fred Herbert est plus récente que l’originale, mais il dit lui-même qu’elle n’est pas complète. Il cite “Designing Data-Intensive Applications” comme incontournable, tout en donnant l’impression qu’il faut d’abord lire beaucoup d’articles pour vraiment le comprendre
      Quand ce genre de liste est présenté comme un prérequis à la compréhension, cela peut donner l’impression d’un seuil d’entrée artificiellement relevé
      Grâce à des décennies de travail accumulé par d’autres, il n’est pas nécessaire de lire 100 articles sur les nanonoyaux pour devenir un utilisateur efficace de Linux. Construire un bon système d’exploitation à partir de zéro reste difficile, mais 99 % des gens n’en ont pas besoin : il suffit de bien savoir utiliser les outils existants
      Il en va de même pour les systèmes distribués : si l’on ne cherche pas à repousser la frontière de la recherche, cela n’a pas besoin d’être aussi difficile
      Pour un ingénieur logiciel qui cherche de l’expérience pratique plutôt qu’une plongée profonde dans la recherche, mieux vaut construire quelque chose avec NATS [1] ou YugaByte [2], ou suivre un tutoriel pratique comme [3]
      “Designing Data-Intensive Applications” vaut aussi la peine d’être lu. C’est l’un de ces livres qui s’améliorent à chaque relecture ; on peut donc très bien le lire même sans avoir parcouru 100 articles. Si certaines parties ne sont pas claires, il suffit de poser des questions et de se faire aider, et l’on peut sans problème sauter les énormes listes de lectures
      1: https://nats.io/
      2: https://www.yugabyte.com/
      3: https://pragprog.com/titles/tjgo/distributed-services-with-g...
  • Et pourtant, aucune mention des technologies CRDT ?

    • Parce que ça date d’il y a 10 ans