Le secret du succès d’Instagram

Une question que tous les ingénieurs d’Instagram entendent partout où ils vont est la suivante:

«Quelle est votre pile?»

Leur réponse est toujours la même et c’est incroyablement simple: leur base de données ne l’est pas!

Leur base de données est un milieu de nombreuses technologies, leur propre interprétation des systèmes de gestion de bases de données relationnelles populaires qui alimentent désormais le plus grand réseau social basé sur des images au monde. Il est suffisamment puissant pour gérer plus de 14 millions d’utilisateurs et plus de 40 milliards de photos (partagées jusqu’à ce jour).

Selon les ingénieurs d’Instagram, leurs principes fondamentaux lors du choix de leur base de données étaient assez simples. La liste comprend:

  • Rester simple
  • Utiliser les ressources disponibles
  • Choisir des solutions vérifiées et populaires

Ces critères ont rendu le processus de création et de gestion de la base de données beaucoup plus facile que la plupart des gens ne le pensaient. Si vous ne nous croyez pas, consultez leur choix d’OS et de serveurs d’applications dans la section suivante de notre article.

Il est temps de le prendre du haut.

Le choix du système d’exploitation d’Instagram les a maintenus en vie pendant longtemps

Instagram fonctionnait sur le tout-puissant Ubuntu Linux 11.04 (le Natty Narwhal) sur Amazon EC2 en 2011. Incroyablement, toute la main-d’œuvre d’ingénierie d’Instagram était initialement composée de seulement trois ingénieurs.

Le Natty Narwhal a été suffisamment fiable et puissant pour fonctionner correctement sur EC2. Depuis 2015, Instagram compte 20 membres de l’équipe qui s’occupent de la recherche, des tendances, de l’exploration et de l’infrastructure de données.

Avec seulement trois ingénieurs et des besoins en constante évolution du côté de l’interface utilisateur, l’auto-hébergement n’avait jamais été une option pour Instagram jusqu’à ce que Facebook intervienne. La plupart de ses parties sont hébergées sur des clouds privés hors site pour protéger toutes les informations privées. La plupart des besoins d’hébergement d’Instagram sont pris en charge par Facebook depuis le gros achat en 2012.

Lorsque les réflexions sur la création de l’équipe Data-gram ont commencé en 2013, à peine 35 ingénieurs travaillaient sur les applications mobiles, la gestion des bases de données et les processus backend.

C’est à ce moment qu’une poignée d’ingénieurs de Facebook a comblé le fossé entre les processus de gestion des données d’Instagram et de Facebook. Ils ont conçu une nouvelle infrastructure de données qui fournirait un impact de bout en bout pour une petite équipe et qui s’adapterait à la structure d’ingénierie d’Instagram.

En relation :  10 citations pour changer votre vie avec de bonnes habitudes

Les choix de base de données d’Instagram n’ont jamais déçu les utilisateurs

utilisateurs instagram

À l’époque où Instagram fonctionnait seul dans le grand mauvais monde, les équipes d’ingénierie et de données ont choisi un mélange de serveurs NoSQL et SQL pour soutenir la croissance massive. Instagram compte aujourd’hui environ 250 millions d’utilisateurs actifs et pourtant la base de données est suffisamment plastique pour accueillir l’afflux constant de volumes massifs de données.

En 2011, Instagram a sans aucun doute utilisé les services Amazon et de nombreuses solutions logicielles open source pour répondre à leurs problèmes de données. De la collecte des données à la sécurité des données, l’équipe avait l’habitude de s’appuyer sur des solutions tierces plutôt que de créer son propre SGBDR. Ils s’appuyaient fortement sur des services externes dont ils n’avaient pas besoin pour créer et gérer les données collectées à partir de différents fuseaux horaires.

Nous n’avons pas encore trouvé de DBA distant dans l’histoire de la vie d’Instagram, mais de nombreux autres sites et applications de réseaux sociaux ont utilisé des DBA distants à leurs débuts pour collecter, rassembler et gérer les données de millions d’utilisateurs à travers le monde.

Serveurs d’applications: la simplicité a toujours été la beauté

histoire Instagram

Selon un article récent de l’équipe d’ingénierie d’Instagram, leurs serveurs d’applications exécutent Django avec PostgreSQL. Leurs piles de serveurs incluent en outre Cassandra, qui, nous le savons tous, est un socle pour tous les produits Facebook.

Depuis l’intégration d’Instagram Stories, l’équipe d’ingénierie travaille avec IG Disk Cache, IG JSON Parser, IGListKitUICollectionView data binding framework pour iOSx et Rebound Animation Library pour les appareils Android. Ils ont également utilisé FLEX pour les appareils iOS pour rendre leur application et leurs nouvelles intégrations plus conviviales pour toutes les plates-formes.

Ils utilisent Redis pour alimenter leur alimentation principale. Il alimente également régulièrement le système de leur session et les systèmes d’applications associés. Étant donné que les données Redis doivent tenir dans la mémoire disponible, l’équipe exécute plusieurs instances de mémoire quadruple extra large.

Ils exécutent généralement Redis dans une configuration de réplique maître pour économiser de la mémoire et du temps. Ceci est beaucoup plus rapide et épargne également le serveur. Pour la mise en cache, Instagram s’appuie toujours sur Memcached, comme la plupart des autres services Web et applications populaires. Au fur et à mesure que le nombre d’utilisateurs et la masse de données augmentent avec le temps, leurs instances Memcached se sont également améliorées.

En relation :  15 citations à succès des plus grands esprits de l'histoire

Voir aussi: Top 11 des utilisateurs d’Instagram à suivre si vous aimez la photographie et la nature

Des services de surveillance réguliers gardent l’équipe en tête

Le suivi fait partie de la tâche de l’équipe.

En 2011, ils ont commencé avec Munin pour représenter graphiquement toutes les métriques utilisateur du système. Le même a alerté l’équipe si quelque chose n’allait pas.

Depuis 2015, l’équipe s’appuie davantage sur Python et Python-Munin pour écrire des plugins personnalisés pour leur service Web. Ces plugins peuvent fournir efficacement des métriques qui ne font pas partie du niveau système. La liste comprend les photos téléchargées par les utilisateurs par minute, les connexions par minute et les commentaires sur la publication d’un influenceur. Sentry a toujours été une application Django Open Source fiable pour signaler les erreurs liées à Python dans le système.

Leur succès dans l’intégration en douceur de nouvelles fonctionnalités réside dans le processus de test de la compatibilité multiplateforme dès les jours de conception. Ils vérifient minutieusement leurs nouveaux filtres, fonctionnalités vidéo et fonctionnalités de galerie sur plusieurs appareils avant la date limite finale. Ils utilisent également une pléthore d’outils de Facebook et de services. Cela nous aide à exécuter ces nouvelles fonctionnalités Instagram en douceur sur presque tous les appareils.

Le besoin même d’une application qui peut fonctionner sur plusieurs plates-formes entraîne le besoin de piles SGBDR simples mais puissantes et de serveurs simples. Le minimalisme de l’ensemble de la configuration, y compris l’infrastructure de données du back-end Instagram, en fait une excellente application pour chaque appareil et chaque système d’exploitation.

Voir aussi: 5 raisons pour lesquelles vous devriez envisager la publicité Instagram

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.