Snapchat és molt conegut entre els preadolescents i els adolescents. Probablement tingueu més de 25 anys si no podeu esbrinar com funciona. Snapchat, una de les aplicacions de xarxes socials més populars, ofereix als nens i adolescents exactament el que volen: un mètode fàcil per compartir fets normals i alhora fer-los semblar genials.
A diferència de Facebook i Twitter, que enregistren i publiquen tot el que feu, Snapchat utilitza missatges que se suposa que desapareixen (vegeu com no ho fan).
Hi ha moltes coses sobre Snapchat, i si ets desenvolupador, encara és més. Per tant, aquesta publicació us donarà una visió d'alt nivell de Snapchat disseny del sistema i molts més coneixements.
introducció
Snapchat és una empresa amb seu als Estats Units les xarxes socials aplicació que permet als usuaris connectar-se immediatament, compartir imatges i molt més.
- Els missatges i les imatges (o instantànies) tenen un límit de temps de 24 hores. Anima la gent a compartir les seves històries en grups.
- Snap Map permet als usuaris veure en un mapa on es troben els seus amics.
- Els records recorden als usuaris les fotos que van desar o compartir un any després.
- Snapchat és molt popular entre les generacions més joves, especialment entre els adolescents. Hi ha 319 milions d'usuaris actius a l'aplicació i s'envien 5.4 milions de snaps cada dia.
Termes importants de disseny
Arquitectura monolítica – Una aplicació d'un sol nivell que funciona independentment d'altres aplicacions es coneix com a monòlit (arquitectura monolítica). Un monòlit està dissenyat per realitzar i gestionar totes les activitats necessàries per completar una tasca. L'aplicació realitza totes les funcions des del principi fins al final.
Microserveis – És polar oposat als monòlits. Microserveis és un enfocament arquitectònic que organitza una aplicació com un conjunt de serveis. Aquests serveis s'utilitzen per controlar molts aspectes d'una aplicació. Un client fa una comanda, un cambrer l'agafa i la lliura i un xef la prepara. En aquest exemple, cada component funciona de manera independent i separada dels altres; ningú sap exactament què fan els altres i ningú té accés a la mateixa informació.
JSON: és un format basat en text que es pot utilitzar per mostrar objectes, literals, matrius i dades de JavaScript. Aquest format basat en text està pensat per ser senzill de llegir i escriure, a més de ser digerible pel programari. JSON s'utilitza habitualment per transferir dades i informació entre servidors i aplicacions en línia.
Orquestració: La tècnica d'automatització de moltes operacions es coneix com a orquestració. Aquestes feines inclouen la configuració, coordinació i administració de sistemes informàtics i programari.
Apoderat: Un proxy actua com a intermediari entre un client que busca un recurs i el servidor que el proporciona.
Malla: Una malla de servei és un patró d'arquitectura de programari que afegeix una capa a una capa d'infraestructura per permetre una comunicació regulada, observable i segura entre serveis mitjançant un servidor intermediari.
Disseny d'alt nivell
Problemes monolítics
Snapchat es va originar com un monòlit basat en núvol basat en el Google App Engine. Tanmateix, a mesura que el programa va créixer en popularitat i va guanyar més usuaris i dades, l'escalabilitat es va convertir en un problema.
A més, amb un radi d'explosió enorme dins del monòlit, eren més possibles pertorbacions a tot el sistema. Un dels problemes de Snapchat es va definir com una "tragèdia dels comuns", en què les funcions competien per accedir als recursos; Les funcions es carregaven en el moment del llançament de l'aplicació, cosa que permetia que certes funcions es carreguessin més ràpidament, però les altres es carreguessin més lentament.
Els enginyers també van buscar una clara visibilitat, separació i propietat dels seus components des del punt de vista del desenvolupament, de manera que el servei pogués ser flexible i eficient.
Transformació
A mesura que Snapchat es va expandir, l'empresa es va adonar que necessitava desglossar la seva infraestructura monolítica en peces més petites i eficients. Per tal de reduir la latència, l'organització va decidir desenvolupar un disseny basat en microserveis.
Per assolir aquests objectius, Snapchat va optar per actualitzar el seu programari mitjançant Amazon DynamoDB, un servei de bases de dades NoSQL escalable. L'empresa va poder reduir la latència mitjana en un 20% com a resultat dels seus esforços.
La corporació va reescriure l'aplicació en nombroses aplicacions més petites. Snapchat va començar amb nombroses aplicacions, com ara una càmera, xat, records, edició d'imatges, consum de contingut i un mapa. Tot i que la integració d'aquests programes en un sol monòlit era convenient per als consumidors, suposava un greu problema tècnic pel que fa a mantenir un bon rendiment.
Per a una reescriptura, la corporació va establir moltes regles bàsiques. No carregueu prèviament; cada funció hauria de ser la seva pròpia aplicació i hauria de ser ràpida. Snapchat va aturar les modificacions en diversos llocs per permetre la reescriptura, convertint-la en una tasca estrictament tècnica.
Integració de funcions addicionals
L'aplicació de càmera de Snapchat té lents, filtres, bitmojis i la possibilitat d'afegir animacions de realitat augmentada, entre altres coses. L'aplicació de xat de Snapchat també permet als usuaris emmagatzemar fotografies, desar converses, afegir emoticones i molt més.
El mapa d'Snapchat, entre altres coses, us permet controlar els amics si volen que ho facis. Els records, l'edició de fotos i el consum de contingut són aplicacions de Snapchat separades amb les seves capacitats úniques.
Els records permeten emmagatzemar o modificar fotografies o vídeos per a un ús posterior, així com pujar-los o enviar-los. Els usuaris també poden utilitzar l'edició d'imatges per tallar pel·lícules, afegir text, afegir adhesius i molt més.
El consum de contingut extern de Snapchat fa referència al que mostra als usuaris en funció d'una sèrie de paràmetres.
Microserveis
El programa depenia àmpliament de JSON per realitzar consultes de xarxa en aquell moment. Tanmateix, analitzar JSON va consumir molt de temps i va ser ineficient. Snapchat va utilitzar una API de gestió de xarxa centralitzada per emmascarar l'ús de JSON com a detall d'implementació per fer front a aquest problema.
Els microserveis presenten els reptes de la gestió de l'estat de l'aplicació, la comunicació del servei i la gestió d'errors. Snapchat va utilitzar tecnologies de codi obert com Temporal per superar les dificultats d'orquestració per tal de construir un sistema fort i fiable.
Com a resultat, l'organització va decidir utilitzar un patró de disseny de malla de servei. Snapchat va utilitzar Envoy, una altra eina de codi obert que actua com a proxy, per aconseguir aquest patró. Envoy va gestionar el flux del trànsit del servei a través de la infraestructura, donant visibilitat als desenvolupadors de possibles dificultats.
Snapchat va crear una aplicació interna anomenada Switchboard dins de la malla de servei. Switchboard va servir com a tauler de control per als serveis de Snap, permetent als usuaris canviar el trànsit, gestionar les dependències del servei (una característica que permet gestionar un servei depenent de l'estat dels altres) i drenar regions.
Per simplificar la complexitat de les configuracions potencials dins dels serveis, es va utilitzar Switchboard en lloc d'exposar tota l'API d'Envoy. Snap té una xarxa interna i regional comuna per als seus microserveis gràcies a la malla de serveis.
Els serveis dins de la mateixa regió es podrien connectar entre ells sense utilitzar Internet pública, i cap trànsit de xarxa extern podria comunicar-se amb parts internes de la xarxa.
Només les passarel·les estarien autoritzades a exposar-se a Internet per motius de seguretat. Les passarel·les de l'API, per exemple, poden servir fàcilment com a porta principal, processant sol·licituds de clients/usuaris i encaminant-les juntament amb la xarxa.
Xarxa i passarel·la API
Totes les consultes del client de Snapchat arriben a través de API Gateway. Utilitza la mateixa imatge d'Envoy i es connecta al mateix pla de control que els nostres microserveis interns. El nostre pla de control ens permet habilitar filtres Envoy personalitzats.
Aquests filtres gestionen els sistemes d'autenticació de Snapchat, així com les nostres tecnologies de limitació de velocitat i eliminació de càrrega. Envoy utilitza la malla de servei per dirigir les sol·licituds al microservei rellevant un cop finalitzada la cadena de filtres.
Conclusió
La passarel·la API de Snapchat encamina el trànsit extern a les moltes funcionalitats de l'aplicació. Les sol·licituds dels usuaris per modificar els estats de configuració són gestionades pels servidors, que després proporcionar dades i informació als nombrosos serveis de l'aplicació.
En general, el disseny actual de Snapchat es pot comparar amb diversos programes que s'executen en un sol sistema operatiu, que en aquest cas és l'aplicació Snapchat. M'he esforçat molt per oferir-vos una visió general d'alt nivell del disseny del sistema Snapchat. Espero que us sigui útil.
Deixa un comentari