Snapchat est bien connu des préadolescents et des adolescents. Vous avez probablement plus de 25 ans si vous ne savez pas comment cela fonctionne. Snapchat, l'une des applications de médias sociaux les plus populaires, offre aux enfants et aux adolescents exactement ce qu'ils veulent : une méthode simple pour partager des événements ordinaires tout en les faisant paraître cool.
Contrairement à Facebook et Twitter, qui enregistrent et publient tout ce que vous faites, Snapchat utilise des messages qui sont censés disparaître (voir comment ils ne le font pas).
Il y a beaucoup de choses sur Snapchat, et si vous êtes un développeur, c'est encore plus. Donc, ce post vous donnera une vue de haut niveau de Snapchat conception du système et bien plus d'idées.
Introduction
Snapchat est une société basée aux États-Unis les réseaux sociaux app qui permet aux utilisateurs de se connecter immédiatement, de partager des images, et plus encore.
- Les messages et images (ou snaps) ont un délai de 24 heures. Encourage les gens à partager leurs histoires en groupes.
- Snap Map permet aux utilisateurs de voir sur une carte où se trouvent leurs amis.
- Les souvenirs rappellent aux utilisateurs les photos qu'ils ont enregistrées ou partagées un an plus tard.
- Snapchat est extrêmement populaire auprès des jeunes générations, en particulier des adolescents. Il y a 319 millions d'utilisateurs actifs sur l'application et 5.4 milliards de snaps sont envoyés chaque jour.
Termes de conception importants
Architecture monolithique – Une application à un niveau qui fonctionne indépendamment des autres applications est connue sous le nom de monolithe (architecture monolithique). Un monolithe est conçu pour effectuer et gérer toutes les activités requises pour accomplir une tâche. L'application exécute toutes les fonctions du début à la fin.
Microservices – C'est l'opposé des monolithes. Microservices est une approche architecturale qui organise une application comme une collection de services. Ces services sont utilisés pour contrôler de nombreux aspects d'une application. Un client passe une commande, un serveur la prend et la livre, et un chef la prépare. Dans cet exemple, chaque composant fonctionne indépendamment et séparément des autres ; personne ne sait exactement ce que font les autres et personne n'a accès aux mêmes informations.
JSON: Il s'agit d'un format basé sur du texte qui peut être utilisé pour afficher des objets, des littéraux, des tableaux et des données JavaScript. Ce format basé sur du texte est destiné à être simple à lire et à écrire, ainsi qu'à être assimilable par un logiciel. JSON est couramment utilisé pour transférer des données et des informations entre des serveurs et des applications en ligne.
Orchestration: La technique d'automatisation de nombreuses opérations est connue sous le nom d'orchestration. Ces emplois comprennent la configuration, la coordination et l'administration des systèmes informatiques et des logiciels.
procuration: Un proxy sert d'intermédiaire entre un client recherchant une ressource et le serveur qui la fournit.
Engrener: Un maillage de services est un modèle d'architecture logicielle qui ajoute une couche à une couche d'infrastructure pour permettre une communication régulée, observable et sécurisée entre les services via un proxy.
Conception de haut niveau
Problèmes monolithiques
Snapchat est à l'origine un monolithe basé sur le cloud basé sur Google App Engine. Cependant, à mesure que le programme gagnait en popularité et gagnait plus d'utilisateurs et de données, l'évolutivité est devenue un problème.
De plus, avec un énorme rayon d'explosion dans le monolithe, des perturbations à l'échelle du système étaient plus possibles. L'un des problèmes de Snapchat a été défini comme une «tragédie des biens communs», dans laquelle les fonctionnalités se disputaient l'accès aux ressources; les fonctionnalités se chargeaient au moment du lancement de l'application, permettant à certaines fonctionnalités de se charger plus rapidement mais à d'autres de se charger plus lentement.
Les ingénieurs recherchaient également une visibilité, une séparation et une propriété claires de leurs composants du point de vue du développement, afin que le service puisse être flexible et efficace.
De La Carrosserie
Au fur et à mesure de l'expansion de Snapchat, l'entreprise a réalisé qu'elle devait décomposer son infrastructure monolithique en éléments plus petits et plus efficaces. Afin de réduire la latence, l'organisation a décidé de développer une conception basée sur les microservices.
Pour atteindre ces objectifs, Snapchat a choisi de mettre à jour son logiciel à l'aide d'Amazon DynamoDB, un service de base de données NoSQL évolutif. Grâce à ses efforts, l'entreprise a pu réduire la latence médiane de 20 %.
L'application a été réécrite dans de nombreuses applications plus petites par la société. Snapchat a commencé avec de nombreuses applications, notamment un appareil photo, un chat, des souvenirs, l'édition d'images, la consommation de contenu et une carte. Bien que l'intégration de ces programmes dans un seul monolithe soit pratique pour les consommateurs, elle posait un grave problème technique en termes de maintien de bonnes performances.
Pour une réécriture, la société a établi de nombreuses règles de base. Ne préchargez pas ; chaque fonctionnalité doit être sa propre application, et elle doit être rapide. Snapchat a interrompu les modifications à plusieurs endroits pour permettre la réécriture, ce qui en fait une tâche strictement technique.
Intégration de fonctionnalités supplémentaires
L'application appareil photo de Snapchat comprend des objectifs, des filtres, des bitmojis et la possibilité d'ajouter des animations de réalité augmentée, entre autres. L'application de chat de Snapchat permet également aux utilisateurs de stocker des photos, d'enregistrer des discussions, d'ajouter des émoticônes, etc.
La carte de Snapchat, entre autres, vous permet de surveiller vos amis s'ils le souhaitent. Les souvenirs, la retouche photo et la consommation de contenu sont tous des applications Snapchat distinctes avec leurs capacités uniques.
Les mémoires vous permettent de stocker ou de modifier des photos ou des vidéos pour une utilisation ultérieure, ainsi que de les télécharger ou de les envoyer. Les utilisateurs peuvent également utiliser l'édition d'images pour couper des films, ajouter du texte, ajouter des autocollants, etc.
La consommation de contenu externe de Snapchat fait référence à ce qu'il montre aux utilisateurs en fonction d'une gamme de paramètres.
Microservices
Le programme dépendait largement de JSON pour effectuer des requêtes réseau à l'époque. Cependant, l'analyse de JSON prenait du temps et était inefficace. Snapchat a utilisé une API de gestion de réseau centralisée pour masquer l'utilisation de JSON comme détail d'implémentation pour résoudre ce problème.
Les microservices présentent les défis de la gestion de l'état des applications, de la communication des services et de la gestion des pannes. Snapchat a utilisé des technologies open source comme Temporal pour surmonter les difficultés d'orchestration afin de construire un système solide et fiable.
En conséquence, l'organisation a décidé d'utiliser un modèle de conception de maillage de services. Snapchat a utilisé Envoy, un autre outil open source qui agit comme un proxy, pour réaliser ce modèle. Envoy a géré le flux de trafic de service via l'infrastructure, donnant aux développeurs une visibilité sur les difficultés potentielles.
Snapchat a créé une application interne appelée Switchboard dans le service mesh. Switchboard a servi de panneau de contrôle pour les services de Snap, permettant aux utilisateurs de déplacer le trafic, de gérer les dépendances de service (une fonctionnalité qui permet de gérer un service en fonction de l'état des autres) et de drainer les régions.
Pour simplifier la complexité des configurations potentielles au sein des services, Switchboard a été utilisé au lieu d'exposer l'intégralité de l'API Envoy. Snap dispose d'un réseau interne et régional commun pour ses microservices grâce au service mesh.
Les services à l'intérieur de la même région pourraient se connecter les uns aux autres sans utiliser l'Internet public, et aucun trafic de réseau externe ne pourrait communiquer avec les parties du réseau interne.
Seules les passerelles seraient autorisées à s'exposer à Internet pour des raisons de sécurité. Les passerelles API, par exemple, peuvent facilement servir de portes d'entrée, traitant les demandes des clients/utilisateurs et les acheminant avec le réseau.
Passerelle réseau et API
Toutes les requêtes du client Snapchat passent par API Gateway. Il utilise la même image Envoy et se connecte au même plan de contrôle que nos microservices internes. Notre plan de contrôle nous permet d'activer des filtres Envoy personnalisés.
Les systèmes d'authentification de Snapchat, ainsi que nos technologies de limitation de débit et de délestage, sont gérés par ces filtres. Envoy utilise Service Mesh pour acheminer les demandes vers le microservice approprié une fois la chaîne de filtrage terminée.
Conclusion
La passerelle API de Snapchat achemine le trafic externe vers les nombreuses fonctionnalités de l'application. Les demandes des utilisateurs pour modifier les états de configuration sont gérées par des serveurs, qui fournir des données et des informations sur les nombreux services de l'application.
Dans l'ensemble, la conception actuelle de Snapchat peut être comparée à plusieurs programmes exécutés sur un seul système d'exploitation, qui dans ce cas est l'application Snapchat. J'ai essayé très fort de vous fournir un aperçu de haut niveau de la conception du système Snapchat. J'espère que tu as trouvé ça utile.
Soyez sympa! Laissez un commentaire