💬 DevStack · Plateforme de communication temps-réel (chat texte, voix, vidéo) — communautés, gaming, dev, éducation

Le stack tech de Discord en 2026

Stack temps-réel hybride Elixir + Rust + Python. Elixir/Erlang OTP porte le fanout messages ; Rust remplace progressivement Go et Elixir sur les chemins chauds ; Python reste sur l'API historique. Messages stockés dans ScyllaDB (migré depuis Cassandra en 2022), infra sur Google Cloud + Kubernetes.

Révisé 2026-07 Fondé 2015 · San Francisco, USA (majoritairement remote — bureaux SF, NYC, Amsterdam) 6 catégories · 18 composants
📈 Échelle (signaux publics)Plus de 200 millions d'utilisateurs actifs mensuels revendiqués publiquement, ~19+ millions de serveurs actifs par semaine, et un pic historique documenté à 11+ millions d'utilisateurs concurrents sur une seule bibliothèque Elixir (2019).

🧱 Stack technique (sourcé public)

▸ Backend temps-réel
Elixir + Erlang OTP actuel

Gateway WebSocket + fanout des messages — cœur temps-réel qui pousse chaque message aux bons destinataires. Post viral 2017 sur la mise à l'échelle à 5M+ d'utilisateurs concurrents.

Rust (NIFs Elixir + services hot-path) actuel

NIFs Rust intégrées dans les nœuds Elixir pour éviter les goulots BEAM sur le tri des membres — cité par Discord comme la clé pour tenir 11M+ d'utilisateurs concurrents sur un serveur unique.

Rust (Read States, remplacement Go) migration entrante

Service 'Read States' (l'état lu/non-lu par utilisateur, milliards de req/jour) réécrit de Go vers Rust en 2020 — motif public : les GC pauses Go étaient inacceptables au 99e percentile.

Python (API historique + services internes) actuel

Stack Python d'origine — API monolithique historique et services outillage internes. Offres backend Python toujours publiées régulièrement.

Go (services périphériques restants) migration sortante

Reste utilisé pour certains services périphériques mais les chemins hot ont majoritairement basculé vers Rust ou Elixir depuis 2020.

▸ Data store
ScyllaDB migration entrante

Store principal des messages depuis la migration 2022 — trillions de messages migrés depuis Cassandra en visant des tail latencies P99 nettement plus basses.

Apache Cassandra retiré

Store historique des messages — objet du célèbre post 2017 'How Discord Stores Billions of Messages', remplacé par ScyllaDB en 2022 pour les problèmes de compaction et de garbage collection JVM.

MongoDB retiré

Store d'origine des messages (2015) — abandonné très vite lorsqu'à ~100M messages les read-latencies sont devenues incohérentes (document dans le même post 2017).

Redis actuel

Cache et bus de présence (statut en ligne / activité) — mentionné comme composant infra de longue date dans plusieurs posts.

Google BigQuery + data platform actuel

Data warehouse et pipelines analytics — la plateforme data côté Discord est décrite publiquement, avec BigQuery comme colonne vertébrale du warehouse.

▸ Voice / vidéo
WebRTC + Media Server maison actuel

Voice/vidéo bâti sur WebRTC avec un Selective Forwarding Unit maison (streaming vers uniquement les destinataires actifs) — architecture décrite publiquement dans les posts voice/vidéo.

▸ Frontend / Clients
React (client web) actuel

Application web principale bâtie sur React + Redux — mêmes composants partagés avec le client desktop Electron.

Electron (desktop) actuel

Client desktop packagé avec Electron — partage la majorité du code du client web (posts publics et offres Client Engineer le confirment).

React Native → Natif (iOS/Android) migration sortante

Apps mobiles historiquement en React Native — Discord a publiquement documenté une réécriture progressive vers Swift (iOS) puis Kotlin (Android) pour améliorer les performances et le tempo de release.

▸ Infra & cloud
Google Cloud Platform (GCP) actuel

Cloud principal — mentionné dans les posts d'infra temps-réel et de data platform, offres SRE citant GCP explicitement.

Kubernetes actuel

Orchestrateur des services — Discord opère un déploiement Kubernetes significatif décrit publiquement, notamment pour les services hors du plan de messages ScyllaDB.

HAProxy / Envoy actuel

Couche edge et load balancing interne — HAProxy en front, Envoy pour le service-mesh interne (mentionnés dans les offres platform et posts infra).

▸ Data / ML / Safety
Python + PyTorch / TensorFlow (ML Safety, recommandation) actuel

ML principalement pour Trust & Safety (détection contenus abusifs, spam) et recommandation — offres ML Engineer Python + PyTorch régulières.

🐙 Open-source notable

ProjetDescriptionStars
erlpack Extension C/Python de sérialisation Erlang External Term Format utilisée par le gateway WebSocket de Discord — plus dense que JSON pour les événements gateway. 1k+
sortedcontainers-rs Port Rust des sorted-containers Python — utilisé dans les NIFs Elixir qui trient les listes de membres de guilde. ≈100
lilliput Wrapper Go/C++ (libavcodec, libjpeg, giflib) pour redimensionner images/GIFs — moteur derrière les avatars et embeds Discord. 2k+
gorepogen Générateur de code CRUD pour Go — outillage interne open-sourcé. ≈100
jelly-bean-bot Divers utilitaires publiés par l'orga github.com/discord — infra hackathons, tooling public, sample-code SDK Discord.

🏛️ Culture ingénierie

Discord fait partie des entreprises les plus prolifiques en engineering blogging depuis 2017 — posts longs, chiffrés, avec vraie post-mortem style (le post 'Why we're switching from Go to Rust' cite les GC pauses Go au P99, celui sur ScyllaDB cite les compactions Cassandra JVM). Le pattern récurrent : partir d'un langage 'assez bon' (Go, Cassandra, MongoDB, React Native) puis migrer vers un choix plus optimisé (Rust, ScyllaDB, natif mobile) une fois la contrainte comprise. Culture 'small teams, big impact' revendiquée dans les offres publiques ; entreprise remote-first depuis la pandémie.

👋 Recrutement

Recrutement remote-first majoritairement US + certains pays européens (offres 'remote in select countries' publiées). Process typique : screening RH → home assignment ou live coding selon rôle → panels (design système, culture) → onsite virtuel. Offres détaillées par stack : Backend Engineer (Elixir / Rust / Python), Platform Engineer (Kubernetes / GCP), Client Engineer (React / Electron / Native), Data / ML Engineer (Python / BigQuery). Page d'offres publique : discord.com/careers.

Méthodologie & limitesCe dossier compile ce qui a été publiquement disclosed via le blog ingénierie, les job postings, GitHub et les talks de conférence. Ce n'est pas un audit complet — la stack interne est plus large. Chaque item liste sa source pour que tu puisses re-vérifier. Les stacks tech bougent — la date "Révisé" en haut indique la fraîcheur de cette revue.

Sources principales