Snapchat é moi coñecido entre os preadolescentes e adolescentes. Probablemente teñas máis de 25 anos se non podes descubrir como funciona. Snapchat, unha das aplicacións de redes sociais máis populares, ofrece aos nenos e adolescentes exactamente o que queren: un método sinxelo para compartir ocorrencias comúns ao tempo que as fai parecer xeniais.
A diferenza de Facebook e Twitter, que gravan e publican todo o que fas, Snapchat emprega mensaxes que se supón que desaparecen (mira como non o fan).
Hai moito sobre Snapchat, e se es un programador é aínda máis. Entón, esta publicación darache unha vista de alto nivel de Snapchat deseño do sistema e moitas máis ideas.
introdución
Snapchat ten a súa sede nos Estados Unidos redes sociais aplicación que permite aos usuarios conectarse inmediatamente, compartir imaxes e moito máis.
- As mensaxes e imaxes (ou instantáneas) teñen un límite de tempo de 24 horas. Anima a xente a compartir as súas historias en grupos.
- Snap Map permite aos usuarios ver nun mapa onde están os seus amigos.
- Os recordos lembran aos usuarios as fotos que gardaron ou compartiron un ano despois.
- Snapchat é moi popular entre as xeracións máis novas, especialmente os adolescentes. Hai 319 millóns de usuarios activos na aplicación e envíanse 5.4 millóns de instantáneas todos os días.
Condicións de deseño importantes
Arquitectura monolítica – Unha aplicación dun só nivel que funciona independentemente doutras aplicacións coñécese como monolítico (arquitectura monolítica). Un monólito está deseñado para realizar e xestionar todas as actividades necesarias para completar unha tarefa. A aplicación realiza todas as funcións de principio a fin.
Microservicios – É polo oposto dos monolitos. Microservicios é un enfoque arquitectónico que organiza unha aplicación como unha colección de servizos. Estes servizos úsanse para controlar moitos aspectos dunha aplicación. Un cliente fai un pedido, un camareiro cólleo e entrégao e un cociñeiro prepárao. Neste exemplo, cada compoñente funciona de forma independente e por separado dos outros; ninguén sabe exactamente o que están facendo os demais e ninguén ten acceso á mesma información.
JSON: é un formato baseado en texto que se pode usar para mostrar obxectos JavaScript, literais, matrices e datos. Este formato baseado en texto pretende ser sinxelo de ler e escribir, ademais de ser dixerible por software. JSON úsase habitualmente para transferir datos e información entre servidores e aplicacións en liña.
Orquestración: A técnica de automatizar moitas operacións coñécese como orquestración. Estes traballos inclúen a configuración, coordinación e administración de sistemas informáticos e software.
Procuração: Un proxy actúa como intermediario entre un cliente que busca un recurso e o servidor que o proporciona.
malla: unha malla de servizos é un patrón de arquitectura de software que engade unha capa a unha capa de infraestrutura para permitir unha comunicación regulada, observable e segura entre servizos a través de proxy.
Deseño de Alto Nivel
Problemas monolíticos
Snapchat orixinouse como un monolito baseado na nube baseado no Google App Engine. Non obstante, a medida que o programa medrou en popularidade e gañaba máis usuarios e datos, a escalabilidade converteuse nun problema.
Ademais, cun enorme radio de explosión dentro do monolito, eran máis posibles as perturbacións en todo o sistema. Un dos problemas de Snapchat definiuse como unha “traxedia do común”, na que as funcións competían polo acceso aos recursos; as funcións estaban cargando no momento do lanzamento da aplicación, permitindo que determinadas funcións se cargasen máis rápido, pero as outras se cargasen máis lentamente.
Os enxeñeiros tamén buscaron unha clara visibilidade, separación e propiedade dos seus compoñentes desde o punto de vista do desenvolvemento, para que o servizo fose flexible e eficiente.
Transformación
A medida que Snapchat se expandía, a empresa entendeu que necesitaba romper a súa infraestrutura monolítica en pezas máis pequenas e eficientes. Para reducir a latencia, a organización decidiu desenvolver un deseño baseado en microservizos.
Para cumprir eses obxectivos, Snapchat optou por actualizar o seu software usando Amazon DynamoDB, un servizo de base de datos NoSQL escalable. A empresa foi capaz de reducir a latencia media nun 20% como resultado dos seus esforzos.
A aplicación foi reescrita en numerosas aplicacións máis pequenas pola corporación. Snapchat comezou con numerosas aplicacións, incluíndo unha cámara, chat, memorias, edición de imaxes, consumo de contido e un mapa. Aínda que a integración destes programas nun único monólito era conveniente para os consumidores, supuxo un grave problema técnico en termos de manter un bo rendemento.
Para unha reescritura, a corporación estableceu moitas regras básicas. Non cargar previamente; cada función debe ser a súa propia aplicación e debe ser rápida. Snapchat detivo as modificacións en varios lugares para permitir a reescritura, converténdoa nunha tarefa estrictamente técnica.
Integración de funcións adicionais
A aplicación de cámara de Snapchat ten lentes, filtros, bitmojis e a posibilidade de engadir animacións de realidade aumentada, entre outras cousas. A aplicación de chat de Snapchat tamén permite aos usuarios almacenar fotografías, gardar conversas, engadir emoticonas e moito máis.
O mapa de Snapchat, entre outras cousas, permítelle controlar os amigos se eles queren que o fagas. As lembranzas, a edición de fotos e o consumo de contido son aplicacións de Snapchat separadas coas súas capacidades únicas.
Os recordos permítenche almacenar ou modificar fotografías ou vídeos para o seu uso posterior, así como cargalos ou envialos. Os usuarios tamén poden utilizar a edición de imaxes para cortar películas, engadir texto, engadir adhesivos e moito máis.
O consumo de contido externo de Snapchat refírese ao que mostra aos usuarios en función dunha serie de parámetros.
Microservicios
O programa dependía moito de JSON para realizar consultas de rede nese momento. Non obstante, analizar JSON foi lento e ineficiente. Snapchat utilizou unha API de xestión de rede centralizada para enmascarar o uso de JSON como detalle de implementación para solucionar este problema.
Os microservizos presentan os retos da xestión do estado das aplicacións, da comunicación do servizo e da xestión de fallos. Snapchat utilizou tecnoloxías de código aberto como Temporal para superar as dificultades de orquestración co fin de construír un sistema forte e fiable.
Como resultado, a organización decidiu utilizar un patrón de deseño de malla de servizo. Snapchat utilizou Envoy, outra ferramenta de código aberto que actúa como proxy, para conseguir este patrón. Envoy xestionou o fluxo de tráfico do servizo a través da infraestrutura, dando aos desenvolvedores visibilidade sobre as posibles dificultades.
Snapchat creou unha aplicación interna chamada Switchboard dentro da malla de servizo. Switchboard serviu como panel de control para os servizos de Snap, permitindo aos usuarios cambiar o tráfico, xestionar as dependencias dos servizos (unha función que permite xestionar un servizo dependendo da condición doutros) e drenar rexións.
Para simplificar a complexidade das configuracións potenciais dentro dos servizos, utilizouse Switchboard en lugar de expoñer toda a API de Envoy. Snap ten unha rede interna e rexional común para os seus microservizos grazas á malla de servizos.
Os servizos dentro da mesma rexión podían conectarse entre si sen utilizar a Internet pública e ningún tráfico de rede externa podería comunicarse con partes internas da rede.
Só as pasarelas estarían autorizadas a exporse a Internet por motivos de seguridade. As pasarelas da API, por exemplo, poden servir facilmente como portas de entrada, procesando as solicitudes de clientes/usuarios e encamiñalas xunto coa rede.
Pasarela de rede e API
Todas as consultas do cliente de Snapchat veñen a través de API Gateway. Usa a mesma imaxe de Envoy e conéctase ao mesmo plano de control que os nosos microservizos internos. O noso plano de control permítenos activar filtros Envoy personalizados.
Estes filtros xestionan os sistemas de autenticación de Snapchat, así como as nosas tecnoloxías de limitación de taxas e descarga de carga. Envoy usa a malla de servizos para dirixir as solicitudes ao microservizo correspondente despois de completar a cadea de filtros.
Conclusión
A pasarela da API de Snapchat envía o tráfico externo ás moitas funcionalidades da aplicación. As solicitudes dos usuarios para modificar os estados de configuración son xestionadas polos servidores, que logo proporcionar datos e información sobre os numerosos servizos da aplicación.
En xeral, o deseño actual de Snapchat pódese comparar con varios programas que se executan nun único sistema operativo, que neste caso é a aplicación Snapchat. Tratei moito de ofrecerche unha visión xeral de alto nivel do deseño do sistema Snapchat. Espero que vos resultou útil.
Deixe unha resposta