Duct-tape streaming at scale

Duct-tape streaming at scale

En cinq ans, a Criteo, le volume d'événements métier – transmis, traités et importés dans un dépôt central – est passé de “un peu” à “hein, quoi, tout ça ?” (6 millions de messages/seconde dans 7 datacenters, le tout déversé dans l’un des plus gros clusters Hadoop d’Europe).

C’est pour nous l’occasion de décrire les choix successifs et l’évolution organique d’un système d’import de logs métier, allant d’une instance de MySQL à une tripotée de clusters Kafka et un peu de Mesos, en passant par du rsyslog et beaucoup de Bash.

S’occuper d’un système distribué un tantinet sollicité, c’est aussi mille raisons d'être appelé en pleine nuit, de se heurter à des limitations théoriques ou physiques, et de développer un pessimisme serein.

Toutes choses qui seront narrées à deux voix par l’architecte/codeur/barbu des origines et l’un des membres de l’équipe qui a pris la suite.

Session donnée à Devoxx 2016 avec Serge Danzanvilliers

Ab7179cd9980141fd3bd79902fa25147?s=128

Yann Schwartz

April 25, 2016
Tweet

Transcript

  1. Systèmes distribués, scotch, bouts de ficelle et doigts croisés Une

    histoire du streaming à Criteo
  2. Dramatis Personae Serge Danzanvilliers @alolcool Yann Schwartz @abolibibelot

  3. 2009 On a des données

  4. None
  5. 2010 On a beaucoup de données

  6. None
  7. 2012 Au fait c’est quoi nos données

  8. None
  9. None
  10. None
  11. 2013 De Haddock à Kafka

  12. C’est pas mal kafka • Cluster • Failover ◦ Réplication

    ◦ Binaire ◦ Pull vs. push ◦ Streaming ?
  13. None
  14. None
  15. 2015 Ce coup-ci on y va

  16. C’est pas de ma faute • Le syndrome du deuxième

    système • “Good enough” • Chemin de transition
  17. (Interlude) L’affaire du quart d’heure manquant

  18. None
  19. None
  20. La roue de l’infortune

  21. May you live in interesting times • Jumeaux maléfiques •

    Le monde selon ARP • Bob the Builder
  22. Théorie et pratique : En théorie c’est la même chose

  23. Buffers, buffers everywhere • Caches, buffers, batches, queues : le

    streaming est une illusion • Unbounded queues : neverending tears • Mieux vaut perdre des données que perdre un système
  24. Savoir être médiocre ▪ Si tout est critique, rien ne

    l’est ▪ Caveat Emptor (le client doit gérer) ▪ On ne dit pas “perte de données”, mais “échantillonnage”
  25. TL;DR • La complexité est une fonction strictement croissante •

    Choisir explicitement son niveau d’exigence