Un peu de VK dans les coulisses

En prévision du Siberian HighLoad ++, nous avons discuté avec l'un de nos intervenants, Yuri Nasretdinov, pour lui demander s'il fonctionnait bien sur VKontakte, tout en ouvrant en même temps le voile du secret sur la cuisine interne du réseau social.



Dans le cadre de la conférence, Yuri expliquera comment un réseau social insère des données dans ClickHouse à partir de dizaines de milliers de serveurs, que nous venons d'évoquer dans la conversation en cours.

- Parlez-nous de votre travail.

Actuellement, je travaille sur VK. C'est vrai, pas si longtemps - depuis le début de cette année. Je suis engagé dans l'infrastructure vidéo et l'infrastructure du site. Le site est principalement écrit en PHP, et je développe des services et utilitaires en PHP et Go.

- Qu'est-ce qui vous a poussé à travailler chez VK?

J'ai été invité à travailler chez VK. Et j'ai pensé - pourquoi pas? VKontakte est le site le plus chargé en Russie et l'un des plus grands sites sur Internet. J'ai toujours été intéressé à travailler sur un projet d'une telle envergure - à participer au développement du site et de l'application mobile. Peut-être même affecter leur développement, améliorer en quelque sorte. C'est probablement le facteur le plus motivant - VKontakte que tout le monde connaît et utilise. Et c'est très agréable de travailler sur un tel produit, pour l'aider à s'améliorer.

- Avant cela, avez-vous dû faire face à quelque chose d'échelle similaire?

Oui, pendant environ cinq ans, j'ai travaillé chez Badoo dans un poste similaire - dans le développement des infrastructures. Mais la charge en VK est d'un ordre de grandeur supérieur.

- Avez-vous rencontré des problèmes lors du passage à VK?

Le bureau de VKontakte est situé à Saint-Pétersbourg. Et avant cela, je vivais en banlieue, donc j'ai dû déménager. Le déménagement lui-même a été assez facile - l'entreprise aide. Mais à Saint-Pétersbourg, il fait très froid en hiver. C'était probablement la chose la plus difficile à affronter.

- Il n'y a aucun sentiment que la vie est restée quelque part à l'intérieur du périphérique de Moscou?

Au début, cela me semblait vraiment le cas, malgré le fait que j'aie été auparavant dans d'autres villes de Russie, en plus de Moscou. Mais en fait, j'aime Saint-Pétersbourg, probablement même plus que Moscou. Il est plus calme - moins de gens, ils ne sont pas pressés, et c'est bien.

- Et du point de vue des technologies utilisées dans le travail - qu'est-ce qui était fondamentalement nouveau pour vous?

VKontakte est très grand, respectivement, il y a vraiment quelques nuances ici que je n'ai pas rencontrées auparavant. Par exemple, à Badoo, il n'y a pratiquement pas de profils très populaires qu'un pourcentage important de personnes visitent. VKontakte l'a, car il existe un certain nombre d'outils intéressants qui vous permettent de mettre à l'échelle rapidement des comptes très populaires.

De plus, VKontakte est différent en ce que, pour des raisons historiques, presque tout est là. Contrairement, par exemple, à Badoo, qui utilise principalement MySQL et Memcache (plus ses services), VKontakte utilise ses propres bases de données et même sa propre version de Memcache. Les développeurs VK pourraient se permettre de créer des services plus hautement efficaces (dans le contexte du même MySQL) qui fonctionnent bien à une telle échelle. La plupart des outils finis sans fichier ne peuvent pas être utilisés dans une infrastructure qui comprend des dizaines de milliers de serveurs, comme VK, et cela crée des difficultés importantes.

- A-t-il été difficile de pénétrer rapidement dans de tels outils "internes"?

Je travaille au département des infrastructures, et il n'y a pas beaucoup de choses non standard ici. Fondamentalement, c'est une pile encore plus standard que celle avec laquelle j'ai travaillé auparavant. Mais si je travaillais, par exemple, dans un département qui s'occupe des fonctionnalités principales, alors, bien sûr, il y aurait une connaissance utile de la façon dont le système Highload est essentiellement construit, mais pas de détails spécifiques. Dans de telles situations, des pages pour les nouveaux employés, des descriptions des mécanismes internes aident.

En principe, une partie tangible de l'infrastructure VK a été publiée par Pavel Durov en open source avec la documentation. Tout le monde peut le lire, lire comment tout cela fonctionne. Mais, bien sûr, il est beaucoup plus facile de le percevoir dans le contexte de son utilisation en interne. Vous venez et commencez à faire des tâches, en étudiant progressivement ce qui est nécessaire pour les résoudre. Voyez comment cela est déjà fait et faites de même. Et ça suffit. Après tout, même si vous maîtrisez la lecture de toute la documentation sur l'infrastructure VK, jusqu'à ce que vous commenciez à l'utiliser, vous ne comprendrez probablement pas comment tout cela fonctionne en détail.

Je note que tout ce qui précède s'applique à mon département (dans d'autres, il peut être différent).

- Avez-vous une spécialisation au sein de VK? À quelles tâches avez-vous réussi à participer?

Il n'y a pas de spécialisation en tant que telle. Je fais ce qui est actuellement requis.
Je travaille dans un département dont les activités affectent différentes parties de l'infrastructure des réseaux sociaux, et c'est un énorme projet (il faut beaucoup de temps pour bien comprendre l'appareil VK avec compréhension).

Par exemple, j'ai participé à une mise à niveau partielle vers PHP7. Ceci, en principe, s'applique à l'ensemble du site, mais ne s'applique pas en même temps à des détails spécifiques.

Un autre exemple est le problème de la collecte des journaux, pour la solution duquel nous avons utilisé ClickHouse. J'en parlerai dans HighLoad ++.



- Donnons un petit spoiler - quelle était la caractéristique de ce problème?

La capture était une combinaison de deux facteurs: d'une part, nous avons beaucoup de journaux écrits, et d'autre part, nous devons les parcourir rapidement.

En fait, le système existant ne pouvait pas stocker de grandes quantités de données, ne donnant rapidement que les dernières informations. Pour obtenir l'histoire, vous avez dû effectuer manuellement des requêtes très lourdes.

- Les lecteurs peuvent être intéressés par la raison pour laquelle la colonne ClickHouse a été utilisée pour la solution?

Colonne - en raison des spécificités du travail. Souvent, lors de la recherche d'informations dans les journaux, nous devons filtrer par serveur ou utilisateur. En ce qui concerne la lecture à partir du disque, une base de données de colonnes vous permet d'accélérer la lecture plusieurs fois (dans le contexte de la ligne), ce qui est obtenu en lisant uniquement les colonnes nécessaires et une compression bit à bit plus efficace. De plus, ClickHouse parallélise bien les requêtes à travers les noyaux. C'est-à-dire contrairement aux bases de données classiques, il peut effectuer une seule requête même sur un cluster entier, en utilisant presque toutes les ressources du processeur et du disque. Ces bases de données, notamment gratuites, ne sont pas très nombreuses, voire inexistantes. ClickHouse est très bien venu pour la tâche de stockage des journaux.

Je note également qu'avant mon arrivée, ClickHouse était utilisé par les administrateurs de VK dans une tâche plutôt hautement spécialisée - comme outil principal pour Grafana. Il s'agit d'un système de collecte de données et de représentation graphique pour les serveurs. Certes, seuls quelques serveurs avec ClickHouse ont été déployés, c'est-à-dire qu'ils n'étaient pas disponibles pour les programmeurs.

Après avoir pris la décision d'utiliser ClickHouse pour stocker les journaux, j'ai aidé à créer l'infrastructure appropriée afin qu'elle soit pratique et compréhensible pour tout le monde.

- VK utilise-t-il des solutions tierces en quantité importante (en plus de celles mentionnées ci-dessus)?

Bien sûr utilisé. Par exemple, Linux, sur lequel tout cela tourne. Ne sous-estimez pas la part du travail que le système d'exploitation fait pour nous.

Curieusement, PHP est utilisé. Nous avons un moteur propriétaire appelé KittenPHP, qui traduit PHP en C ++, mais pour un certain nombre de tâches, y compris la production, PHP standard est également utilisé.

Utilisé par nginx. Jusqu'à présent, MySQL est impliqué dans certains endroits, mais progressivement nous le refusons - nous utilisons une base de données auto-écrite.

- Et comment se construit le processus de développement?

Je ne vois pas de grandes différences entre les processus en VK et ce qui est accepté dans l'industrie. Nous avons un traqueur de bogues, des départements qui traitent de différentes fonctionnalités, responsables de leur partie du projet; il y a des sprints responsables des composants, etc.

- Au lieu des résultats, est-il possible d'indiquer la direction dans laquelle se développe le département dans lequel vous travaillez?

Pour autant que je sache, avant le département dans lequel je travaille maintenant se composait de 1-2 personnes.
Et nous avons commencé à nous lancer dans l'infrastructure sous la forme dans laquelle elle se fait maintenant (probablement, elle ressemble à DevOps) il n'y a pas si longtemps. Par conséquent, il est trop tôt pour parler de plans - nous résolvons les problèmes existants et jusqu'à présent, nous avons suffisamment de travail. Et puis on verra.



Yuri vous en dira plus sur les composants internes de VK, en utilisant ClickHouse et d'autres détails dans son discours à Siberian HighLoad ++ les 25 et 26 juin. Vous serez également certainement intéressé par ces rapports:

Source: https://habr.com/ru/post/fr414881/


All Articles