Articoli

Come riuscire a gestire più di un milione di utenti online su un singolo server: l’esperienza di Discord

Discord è la popolare applicazione di messaggistica dove gli utenti si ritrovano in specifici gruppi per scambiarsi idee non solo testuali ma anche video ed audio, con possibilità dello streaming live.

Ottimizzare le performance vuol dire riuscire a fare più cose con le stesse risorse: cioè, per un’azienda, risparmiare denaro e nello stesso tempo fornire una eccellente User Experience(UX). Discord è riuscita a gestire più di un milione di utenti online su un singolo server. Scopriamo come ha fatto.

Contattaci subito e senza impegno per aumentare le performance delle tue applicazioni.

Elixir, Erlang VM, WebSocket e ScyllaDB

Discord ha utilizzato Elixir, un linguaggio dinamico e funzionale per sviluppare applicazioni scalabili e facilmente manutenibili. Elixir gira su virtual machine Erlang che sono note per la bassa latenza e per i sistemi distribuiti di tipo fault-tolerant.

Con l’obiettivo di migliorare l’osservabilità aumentandone le performance, Discord ha utilizzato le componenti sviluppate con Elixir per il routing e le notifiche agli utenti inserendole in un server centrale chiamato Guild per indicare che raccoglie più sessioni differenti assieme.

Infine i WebSocket permanenti attivi uniti alle API sviluppate in Python responsabili di archiviare i messaggi su ScyllaDB concludono l’architettura rendendola pienamente live.

Seppur con l’utilizzo di tecnologie meno comuni di altre come Elixir, Erlang e ScyllaDB, l’architettura di Discord è tradizionale e sembra non giustificare le performance citate nel titolo dell’articolo. Allora come ha fatto Discord ad ottenere tali performance?

Contattaci subito e senza impegno per aumentare le performance delle tue applicazioni.

Osservabilità e layer applicativi

Grazie all’utilizzo di una helper library, gli ingegneri di Discord hanno catturato le metriche sul processamento dei messaggi e sulle notifiche ed hanno stimato l’utilizzo delle risorse da parte di tali processi.

Attraverso queste attività gli ingegneri hanno osservato che le sessioni passive(quando gli utenti non interagiscono nella chat) consumavano le stesse risorse delle sessioni attive e quindi solo gestendo più efficientemente le notifiche tra sessioni attive e passiva, Discord ha migliorato il processo di notifica del 90% risparmiando un enorme quantità di risorse.

Quanto osservato ha trovato spazio in un nuovo processo di relay che gestisce alcune componenti dell’intero ciclo di utilizzo dell’applicazione da parte dell’utente e permette di ottimizzare le performance complessive. Sfruttando poi elementi avanzati di Erlang come il database ETS è possibile riuscire a gestire più di un milione di utenti su un singolo server.

In poche parole osservando dove era possibile migliorare ha aggiunto gli elementi per sfruttare appieno tutte le risorse eliminando gli sprechi.

Contattaci subito e senza impegno per aumentare le performance delle tue applicazioni.

Conclusioni

Non esiste un’architettura IT perfetta ed ogni realtà ha messo in campo la propria idea di architettura basandosi sulle proprie necessità di business. Quello che però accomuna tutte le più importanti aziende digitali come Discord è la capacità di monitorare, misurare e quindi applicare strategie per migliorare. Attraverso queste attività che oggi vanno sotto il nome di observability possiamo avviare processi che permettono non solo di aumentare le performance ma anche di risparmiare risorse.

Glue Labs, le tecnologie di Discord e l’osservabilità

Abbiamo progettato ed implementato architetture altamente performanti ed affidabili in ambienti sensibili e critici che utilizzano la tecnologie come Elixir, Erlang, WebSocket e ScyllaDB in maniera integrata con le soluzioni in azienda. Grazie alle competenze specialistiche maturate in tantissimi settori e con numerosi Clienti ti forniamo assistenza e supporto, consulenza di Solution Architect e realizziamo architetture IT che ti permettono di gestire, risparmiando, i tuoi processi di computazione con garanzia 12 mesi da qualsiasi bug. Contattaci subito e senza impegno per maggiori informazioni.