Snapchat è noto tra i preadolescenti e gli adolescenti. Probabilmente hai più di 25 anni se non riesci a capire come funziona. Snapchat, una delle applicazioni di social media più popolari, offre a bambini e adolescenti esattamente ciò che vogliono: un metodo semplice per condividere eventi ordinari e allo stesso tempo farli sembrare fantastici.
A differenza di Facebook e Twitter, che registrano e pubblicano tutto ciò che fai, Snapchat utilizza messaggi che dovrebbero svanire (guarda come non lo fanno).
C'è molto su Snapchat e se sei uno sviluppatore è ancora di più. Quindi, questo post ti darà una visione di alto livello di Snapchat sistema di design e molti altri approfondimenti.
Introduzione
Snapchat ha sede negli Stati Uniti il social networking app che consente agli utenti di connettersi immediatamente, condividere immagini e altro ancora.
- I messaggi e le immagini (o gli snap) hanno un limite di tempo di 24 ore. Incoraggia le persone a condividere le loro storie in gruppi.
- Snap Map consente agli utenti di vedere su una mappa dove si trovano i loro amici.
- I ricordi ricordano agli utenti le foto che hanno salvato o condiviso un anno dopo.
- Snapchat è estremamente popolare tra le giovani generazioni, in particolare gli adolescenti. Ci sono 319 milioni di utenti attivi sull'app e ogni giorno vengono inviati 5.4 miliardi di snap.
Termini di progettazione importanti
Architettura monolitica – Un'applicazione a livello singolo che opera indipendentemente da altre applicazioni è nota come monolito (architettura monolitica). Un monolito è progettato per eseguire e gestire tutte le attività necessarie per completare un'attività. L'applicazione esegue tutte le funzioni dall'inizio alla fine.
Microservices – È il polo opposto dei monoliti. Microservices è un approccio architetturale che organizza un'applicazione come una raccolta di servizi. Questi servizi vengono utilizzati per controllare molti aspetti di un'applicazione. Un cliente effettua un ordine, un cameriere lo prende e lo consegna e uno chef lo prepara. In questo esempio, ogni componente funziona in modo indipendente e separato dagli altri; nessuno sa esattamente cosa stanno facendo gli altri e nessuno ha accesso alle stesse informazioni.
JSON: è un formato basato su testo che può essere utilizzato per visualizzare oggetti, valori letterali, array e dati JavaScript. Questo formato basato su testo è concepito per essere semplice da leggere e da scrivere, oltre ad essere digeribile dal software. JSON è comunemente usato per trasferire dati e informazioni tra server e applicazioni online.
Orchestrazione: La tecnica per automatizzare molte operazioni è nota come orchestrazione. Questi lavori includono la configurazione, il coordinamento e l'amministrazione del sistema informatico e del software.
delega: Un proxy funge da intermediario tra un client che cerca una risorsa e il server che la fornisce.
Maglia: una rete di servizi è un modello di architettura software che aggiunge un livello a un livello di infrastruttura per consentire una comunicazione regolamentata, osservabile e sicura tra i servizi tramite proxy.
Design di alto livello
Problemi monolitici
Snapchat è nato come un monolite basato su cloud basato su Google App Engine. Tuttavia, poiché il programma è cresciuto in popolarità e ha guadagnato più utenti e dati, la scalabilità è diventata un problema.
Inoltre, con un enorme raggio di esplosione all'interno del monolito, i disturbi a livello di sistema erano più possibili. Uno dei problemi di Snapchat è stato definito come una "tragedia dei beni comuni", in cui le funzionalità gareggiavano per l'accesso alle risorse; le funzionalità venivano caricate al momento dell'avvio dell'app, consentendo ad alcune funzionalità di caricarsi più velocemente ma le altre di caricarsi più lentamente.
Gli ingegneri hanno anche cercato una chiara visibilità, separazione e proprietà dei loro componenti dal punto di vista dello sviluppo, in modo che il servizio potesse essere flessibile ed efficiente.
Trasformazione
Con l'espansione di Snapchat, l'azienda si è resa conto che doveva scomporre la sua infrastruttura monolitica in parti più piccole ed efficienti. Per ridurre la latenza, l'organizzazione ha deciso di sviluppare un progetto basato su microservizi.
Per raggiungere questi obiettivi, Snapchat ha deciso di aggiornare il proprio software utilizzando Amazon DynamoDB, un servizio di database NoSQL scalabile. L'azienda è stata in grado di ridurre la latenza mediana del 20% come risultato dei suoi sforzi.
L'app è stata riscritta in numerose applicazioni più piccole dalla società. Snapchat è iniziato con numerose applicazioni, tra cui una fotocamera, chat, ricordi, editing di immagini, consumo di contenuti e una mappa. Sebbene l'integrazione di questi programmi in un unico monolito fosse conveniente per i consumatori, poneva un serio problema tecnico in termini di mantenimento di buone prestazioni.
Per una riscrittura, la società ha stabilito molte regole di base. Non precaricare; ogni funzione dovrebbe essere la sua app e dovrebbe essere veloce. Snapchat ha interrotto le modifiche in diversi punti per consentire la riscrittura, rendendolo un compito strettamente tecnico.
Integrazione di funzionalità aggiuntive
L'app della fotocamera di Snapchat ha obiettivi, filtri, bitmoji e la possibilità di aggiungere animazioni di realtà aumentata, tra le altre cose. L'app di chat di Snapchat consente inoltre agli utenti di archiviare fotografie, salvare conversazioni, aggiungere emoticon e altro ancora.
La mappa di Snapchat, tra le altre cose, ti consente di monitorare gli amici se lo desiderano. Ricordi, fotoritocco e consumo di contenuti sono tutte app Snapchat separate con le loro capacità uniche.
I ricordi ti consentono di archiviare o modificare fotografie o video per un uso successivo, nonché di caricarli o inviarli. Gli utenti possono anche utilizzare l'editing delle immagini per tagliare film, aggiungere testo, aggiungere adesivi e altro.
Il consumo di contenuti esterni di Snapchat si riferisce a ciò che mostra agli utenti in base a una serie di parametri.
Microservices
Il programma dipendeva ampiamente da JSON per eseguire query di rete in quel momento. Tuttavia, l'analisi di JSON è stata dispendiosa in termini di tempo e inefficiente. Snapchat ha utilizzato un'API di gestione della rete centralizzata per mascherare l'uso di JSON come dettaglio di implementazione per affrontare questo problema.
I microservizi introducono le sfide della gestione dello stato delle applicazioni, della comunicazione dei servizi e della gestione degli errori. Snapchat ha utilizzato tecnologie open source come Temporal per superare le difficoltà di orchestrazione al fine di costruire un sistema forte e affidabile.
Di conseguenza, l'organizzazione ha deciso di utilizzare un modello di progettazione della rete di servizi. Snapchat ha utilizzato Envoy, un altro strumento open source che funge da proxy, per ottenere questo schema. Envoy ha gestito il flusso del traffico di servizio attraverso l'infrastruttura, offrendo agli sviluppatori visibilità su potenziali difficoltà.
Snapchat ha creato un'app interna chiamata Switchboard all'interno della rete di servizi. Il centralino fungeva da pannello di controllo per i servizi di Snap, consentendo agli utenti di spostare il traffico, gestire le dipendenze dei servizi (una funzionalità che consente di gestire un servizio in base alle condizioni degli altri) e drenare le regioni.
Per semplificare la complessità delle potenziali configurazioni all'interno dei servizi, è stato utilizzato Switchboard invece di esporre l'intera API Envoy. Snap ha una rete interna e regionale comune per i suoi microservizi grazie al service mesh.
I servizi all'interno della stessa regione potrebbero connettersi tra loro senza utilizzare la rete Internet pubblica e nessun traffico di rete esterno potrebbe comunicare con le parti di rete interne.
Solo i Gateway sarebbero autorizzati ad esporsi a Internet per motivi di sicurezza. I gateway API, ad esempio, potrebbero facilmente fungere da front door, elaborare le richieste di client/utenti e instradarle insieme alla rete.
Gateway di rete e API
Tutte le query dal client Snapchat arrivano tramite API Gateway. Utilizza la stessa immagine di Envoy e si connette allo stesso piano di controllo dei nostri microservizi interni. Il nostro piano di controllo ci consente di abilitare filtri Envoy personalizzati.
I sistemi di autenticazione di Snapchat, così come le nostre tecnologie di limitazione della velocità e riduzione del carico, sono gestiti da questi filtri. Envoy usa Service Mesh per instradare le richieste al microservizio pertinente al termine della catena di filtri.
Conclusione
Il gateway API di Snapchat instrada il traffico esterno alle numerose funzionalità dell'app. Le richieste degli utenti di modificare gli stati di configurazione sono gestite dai server, che quindi fornire dati e informazioni sui numerosi servizi dell'app.
Nel complesso, l'attuale design di Snapchat può essere paragonato a diversi programmi in esecuzione su un unico sistema operativo, che in questo caso è l'app Snapchat. Mi sono sforzato di fornirti una panoramica di alto livello del design del sistema Snapchat. Spero che tu l'abbia trovato utile.
Lascia un Commento