Snapchat es muy conocido entre los preadolescentes y adolescentes. Probablemente tengas más de 25 si no puedes entender cómo funciona. Snapchat, una de las aplicaciones de redes sociales más populares, brinda a los niños y adolescentes exactamente lo que quieren: un método fácil para compartir sucesos cotidianos y, al mismo tiempo, hacer que se vean geniales.
A diferencia de Facebook y Twitter, que registran y publican todo lo que haces, Snapchat emplea mensajes que se supone que desaparecen (mira cómo no lo hacen).
Hay mucho sobre Snapchat, y si eres un desarrollador, es aún más. Entonces, esta publicación le dará una vista de alto nivel de Snapchat diseño de sistemas y muchas más ideas.
Introducción
Snapchat es una empresa con sede en EE. las redes sociales aplicación que permite a los usuarios conectarse inmediatamente, compartir imágenes y más.
- Los mensajes e imágenes (o instantáneas) tienen un límite de tiempo de 24 horas. Alienta a las personas a compartir sus historias en grupos.
- Snap Map permite a los usuarios ver en un mapa dónde están sus amigos.
- Los recuerdos recuerdan a los usuarios las fotos que guardaron o compartieron un año después.
- Snapchat es extremadamente popular entre las generaciones más jóvenes, especialmente entre los adolescentes. Hay 319 millones de usuarios activos en la aplicación y se envían 5.4 millones de instantáneas todos los días.
Términos de diseño importantes
Arquitectura monolítica – Una aplicación de un solo nivel que funciona independientemente de otras aplicaciones se conoce como monolito (arquitectura monolítica). Un monolito está diseñado para realizar y manejar todas las actividades requeridas para completar una tarea. La aplicación realiza todas las funciones de principio a fin.
Microservicios – Es el polo opuesto de los monolitos. Microservicios es un enfoque arquitectónico que organiza una aplicación como una colección de servicios. Estos servicios se utilizan para controlar muchos aspectos de una aplicación. Un cliente hace un pedido, un mesero lo toma y lo entrega, y un chef lo prepara. En este ejemplo, cada componente funciona de forma independiente y separada de los demás; nadie sabe exactamente qué están haciendo los demás y nadie tiene acceso a la misma información.
JSON: es un formato basado en texto que se puede usar para mostrar objetos, literales, matrices y datos de JavaScript. Este formato basado en texto pretende ser fácil de leer y escribir, así como digerible por software. JSON se usa comúnmente para transferir datos e información entre servidores y aplicaciones en línea.
Orquestación: La técnica de automatizar muchas operaciones se conoce como orquestación. Estos trabajos incluyen la configuración, coordinación y administración de sistemas informáticos y software.
apoderado: Un proxy actúa como intermediario entre un cliente que busca un recurso y el servidor que lo proporciona.
Malla: Una malla de servicios es un patrón de arquitectura de software que agrega una capa a una capa de infraestructura para permitir una comunicación regulada, observable y segura entre servicios a través de un proxy.
Diseño de alto nivel
Problemas monolíticos
Snapchat se originó como un monolito basado en la nube basado en Google App Engine. Sin embargo, a medida que el programa creció en popularidad y ganó más usuarios y datos, la escalabilidad se convirtió en un problema.
Además, con un enorme radio de explosión dentro del monolito, las perturbaciones en todo el sistema eran más posibles. Uno de los problemas de Snapchat se definió como una “tragedia de los bienes comunes”, en la que las funciones competían por el acceso a los recursos; las funciones se cargaban en el momento del inicio de la aplicación, lo que permitía que ciertas funciones se cargaran más rápido pero que otras se cargaran más lentamente.
Los ingenieros también buscaron una clara visibilidad, separación y propiedad de sus componentes desde el punto de vista del desarrollo, para que el servicio pudiera ser flexible y eficiente.
A medida que Snapchat se expandía, la empresa se dio cuenta de que necesitaba dividir su infraestructura monolítica en piezas más pequeñas y eficientes. Para proporcionar una latencia reducida, la organización decidió desarrollar un diseño basado en microservicios.
Para cumplir con esos objetivos, Snapchat optó por actualizar su software utilizando Amazon DynamoDB, un servicio de base de datos NoSQL escalable. La empresa pudo reducir la latencia media en un 20 % como resultado de sus esfuerzos.
La aplicación fue reescrita en numerosas aplicaciones más pequeñas por la corporación. Snapchat comenzó con numerosas aplicaciones, incluida una cámara, chat, memorias, edición de imágenes, consumo de contenido y un mapa. Aunque la integración de estos programas en un solo monolito era conveniente para los consumidores, planteaba un grave problema técnico en términos de mantener un buen rendimiento.
Para una reescritura, la corporación estableció muchas reglas básicas. No precargue; cada función debe ser su propia aplicación y debe ser rápida. Snapchat detuvo las modificaciones en varios lugares para permitir la reescritura, convirtiéndola en una tarea estrictamente técnica.
Integración de características adicionales
La aplicación de cámara de Snapchat tiene lentes, filtros, bitmojis y la capacidad de agregar animaciones de realidad aumentada, entre otras cosas. La aplicación de chat de Snapchat también permite a los usuarios almacenar fotografías, guardar conversaciones, agregar emoticonos y más.
El mapa de Snapchat, entre otras cosas, te permite monitorear a tus amigos si así lo desean. Los recuerdos, la edición de fotos y el consumo de contenido son aplicaciones de Snapchat separadas con sus capacidades únicas.
Los recuerdos te permiten almacenar o modificar fotografías o videos para su uso posterior, así como subirlos o enviarlos. Los usuarios también pueden utilizar la edición de imágenes para cortar películas, agregar texto, agregar pegatinas y más.
El consumo de contenido externo de Snapchat se refiere a lo que muestra a los usuarios en función de una variedad de parámetros.
Microservicios
El programa dependía en gran medida de JSON para realizar consultas de red en ese momento. Sin embargo, analizar JSON requería mucho tiempo y era ineficiente. Snapchat usó una API de administración de red centralizada para enmascarar el uso de JSON como un detalle de implementación para abordar este problema.
Los microservicios presentan los desafíos de la gestión del estado de la aplicación, la comunicación del servicio y la gestión de fallas. Snapchat usó tecnologías de código abierto como Temporal para superar las dificultades de orquestación a fin de construir un sistema sólido y confiable.
Como resultado, la organización decidió utilizar un patrón de diseño de malla de servicios. Snapchat usó Envoy, otra herramienta de código abierto que actúa como proxy, para lograr este patrón. Envoy administró el flujo de tráfico de servicios a través de la infraestructura, brindando a los desarrolladores visibilidad sobre posibles dificultades.
Snapchat creó una aplicación interna llamada Switchboard dentro de la red de servicios. Switchboard sirvió como un panel de control para los servicios de Snap, lo que permitió a los usuarios cambiar el tráfico, administrar las dependencias del servicio (una función que permite administrar un servicio dependiendo de la condición de los demás) y drenar regiones.
Para simplificar la complejidad de las posibles configuraciones dentro de los servicios, se utilizó Switchboard en lugar de exponer toda la API de Envoy. Snap tiene una red interna y regional común para sus microservicios gracias a la red de servicios.
Los servicios dentro de la misma región podrían conectarse entre sí sin usar la Internet pública y ningún tráfico de red externo podría comunicarse con las partes de la red interna.
Solo los Gateways estarían autorizados a exponerse a Internet por razones de seguridad. Las puertas de enlace API, por ejemplo, podrían servir fácilmente como puertas de entrada, procesando solicitudes de clientes/usuarios y enrutándolas junto con la red.
Puerta de enlace de red y API
Todas las consultas del cliente de Snapchat llegan a través de API Gateway. Utiliza la misma imagen de Envoy y se conecta al mismo plano de control que nuestros microservicios internos. Nuestro Plano de control nos permite habilitar filtros Envoy personalizados.
Estos filtros controlan los sistemas de autenticación de Snapchat, así como nuestras tecnologías de limitación de velocidad y reducción de carga. Envoy usa Service Mesh para enrutar las solicitudes al microservicio relevante una vez que se completa la cadena de filtrado.
Conclusión
La puerta de enlace API de Snapchat enruta el tráfico externo a las muchas funcionalidades de la aplicación. Las solicitudes de los usuarios para modificar los estados de configuración son administradas por servidores, que luego Proveer información e información a los numerosos servicios de la aplicación.
En general, el diseño actual de Snapchat se puede comparar con varios programas que se ejecutan en un solo sistema operativo, que en este caso es la aplicación Snapchat. Me esforcé mucho para brindarle una descripción general de alto nivel del diseño del sistema Snapchat. Espero que hayas encontrado útil.
Deje un comentario