En vísperas del
Siberian HighLoad ++, hablamos con uno de nuestros oradores, Yuri Nasretdinov, preguntándole si trabajó bien en VKontakte, al mismo tiempo que abrimos el velo del secreto sobre la cocina interna de la red social.

En el marco de la conferencia, Yuri hablará sobre cómo una red social inserta datos en ClickHouse desde decenas de miles de servidores, que acabamos de mencionar en la conversación actual.
- Cuéntanos sobre tu trabajo.Actualmente trabajo en VK. Es cierto, no tanto tiempo, desde principios de este año. Estoy comprometido con la infraestructura de video y la infraestructura del sitio. El sitio está escrito principalmente en PHP, y desarrollo servicios y utilidades en PHP y Go.
- ¿Qué te llevó a trabajar en VK?Fui invitado a trabajar en VK. Y pensé, ¿por qué no? VKontakte es el sitio con mayor carga en Rusia y uno de los sitios más grandes en Internet. Siempre me interesó trabajar en un proyecto tan grande, participar en el desarrollo del sitio y la aplicación móvil. Quizás incluso afecte su desarrollo, de alguna manera mejore. Este es probablemente el factor más motivador: VKontakte que todos conocen y usan. Y es muy agradable trabajar en un producto de este tipo, para ayudarlo a mejorar.
- Antes de eso, ¿tuviste que lidiar con algo similar en escala?Sí, durante unos cinco años trabajé en Badoo en un puesto similar: en desarrollo de infraestructura. Pero la carga en VK es un orden de magnitud mayor.
- ¿Tuviste algún problema al cambiar a VK?La oficina de VKontakte se encuentra en San Petersburgo. Y antes de eso vivía en los suburbios, así que tuve que mudarme. La mudanza en sí fue bastante fácil: la compañía ayuda. Pero en San Petersburgo hace mucho frío en invierno. Esta fue probablemente la cosa más difícil de enfrentar.
- ¿No hay sensación de que la vida haya quedado en algún lugar dentro de la carretera de circunvalación de Moscú?Al principio, realmente me pareció así, a pesar del hecho de que anteriormente había estado en otras ciudades de Rusia, además de Moscú. Pero, de hecho, me gusta San Petersburgo, probablemente incluso más que Moscú. Está más tranquilo: menos personas, no tienen prisa, y esto es agradable.
- Y desde el punto de vista de las tecnologías utilizadas en el trabajo, ¿qué fue fundamentalmente nuevo para usted?VKontakte es muy grande, respectivamente, realmente hay algunos matices aquí que no he encontrado antes. Por ejemplo, en Badoo prácticamente no hay perfiles muy populares que visiten un porcentaje significativo de personas. VKontakte lo tiene, ya que hay una serie de herramientas interesantes que le permiten escalar rápidamente cuentas muy populares.
Además, VKontakte es diferente en que, por razones históricas, casi todo está aquí. A diferencia de, por ejemplo, Badoo, que usa principalmente MySQL y Memcache (más sus servicios), VKontakte usa sus propias bases de datos e incluso su propia versión de Memcache. Los desarrolladores de VK podrían permitirse crear servicios más eficientes (en el contexto del mismo MySQL) que funcionen bien en una escala tan grande. La mayoría de las herramientas terminadas sin un archivo no se pueden usar en una infraestructura que incluye decenas de miles de servidores, como VK, y esto crea dificultades significativas.
- ¿Fue difícil penetrar rápidamente en herramientas "internas"?Trabajo en el departamento de infraestructura, y no hay muchas cosas no estándar aquí. Básicamente, esta es una pila aún más estándar que la que trabajé antes. Pero si trabajara, por ejemplo, en un departamento que se ocupa de las funciones de back-end, entonces, por supuesto, habría un conocimiento útil de cómo se construye básicamente el sistema Highload, pero no detalles específicos. En tales situaciones, las páginas para nuevos empleados, las descripciones de los mecanismos internos ayudan.
En principio, Pavel Durov publicó una parte tangible de la infraestructura VK en código abierto junto con la documentación. Cualquiera puede leerlo, leer cómo funciona todo. Pero, por supuesto, es mucho más fácil percibir esto en el contexto de cómo se usa internamente. Vienes y comienzas a hacer tareas, estudiando gradualmente lo que se necesita para resolverlas. Vea cómo ya está hecho y haga lo mismo. Y eso es suficiente. Después de todo, incluso si dominas la lectura de toda la documentación sobre la infraestructura de VK, hasta que comiences a usarla, lo más probable es que no entiendas cómo funciona todo en detalle.
Observo que todo lo anterior se aplica a mi departamento (en otros puede ser diferente).
- ¿Tienes alguna especialización dentro de VK? ¿En qué tareas lograste participar?No hay especialización como tal. Hago lo que se requiere actualmente.
Trabajo en un departamento cuyas actividades afectan a diferentes partes de la infraestructura de la red social, y este es un gran proyecto (lleva mucho tiempo comprender completamente el dispositivo VK).
Por ejemplo, participé en una actualización parcial a PHP7. Esto, en principio, se aplica a todo el sitio, pero al mismo tiempo no se aplica a ningún detalle específico.
Otro ejemplo es el problema con la recopilación de registros, para cuya solución usamos ClickHouse. Hablaré de esto en HighLoad ++.
- Veamos un pequeño spoiler: ¿cuál fue la característica de este problema?La captura fue una combinación de dos factores: por un lado, tenemos muchos registros escritos y, por otro, necesitamos revisarlos rápidamente.
El sistema existente, de hecho, no podía almacenar grandes cantidades de datos, dando rápidamente solo la información más reciente. Para obtener la historia, tenía que realizar manualmente consultas muy pesadas.
- Los lectores pueden estar interesados en por qué se utilizó la columna ClickHouse para la solución.Columna: debido a los detalles del trabajo. A menudo, cuando buscamos información en los registros, necesitamos filtrar por servidor o usuario. Cuando se trata de leer desde el disco, una base de datos de columnas le permite acelerar la lectura muchas veces (en el contexto de la línea), lo que se logra leyendo solo las columnas necesarias y una compresión más eficiente en bits. Además, ClickHouse paraleliza bien las consultas a través de los núcleos. Es decir A diferencia de las bases de datos clásicas, puede realizar una sola consulta incluso en un clúster completo, utilizando casi todos los recursos del procesador y del disco. Tales bases de datos, especialmente las gratuitas, no son muy numerosas, si las hay. ClickHouse surgió muy bien para la tarea de almacenar registros.
También noto que antes de mi llegada, ClickHouse fue utilizado por los administradores de VK en una tarea bastante especializada, como una herramienta de back-end para Grafana. Este es un sistema de recopilación de datos y gráficos para servidores. Es cierto que solo se implementaron unos pocos servidores con ClickHouse, es decir, de hecho, no estaba disponible para los programadores.
Después de tomar la decisión de usar ClickHouse para almacenar registros, ayudé a crear la infraestructura adecuada para que fuera conveniente y comprensible para todos.
- ¿VK utiliza soluciones de terceros en una cantidad significativa (además de las mencionadas anteriormente)?Por supuesto usado. Por ejemplo, Linux, en el que gira todo esto. No subestimes la parte del trabajo que el sistema operativo hace por nosotros.
Curiosamente, se usa PHP. Tenemos un motor patentado llamado KittenPHP, que traduce PHP a C ++, pero para una serie de tareas, incluida la producción, también se usa PHP normal.
Usado por nginx. Hasta ahora, MySQL está involucrado en algunos lugares, pero poco a poco lo rechazamos: utilizamos una base de datos autoescrita.
- ¿Y cómo se construye el proceso de desarrollo?No veo grandes diferencias entre los procesos en VK y lo que se acepta en la industria. Tenemos un rastreador de errores, departamentos que se ocupan de diferentes funciones, responsables de su parte del proyecto; hay sprints responsables de componentes, etc.
- En lugar de los resultados, ¿es posible indicar la dirección en la que se está desarrollando el departamento en el que trabaja?Hasta donde sé, antes el departamento en el que ahora trabajo consistía en 1-2 personas.
Y comenzamos a involucrarnos en la infraestructura en la forma en que se está haciendo ahora (probablemente, parece DevOps) no hace mucho tiempo. Por lo tanto, es demasiado pronto para hablar de planes: estamos resolviendo problemas existentes y hasta ahora tenemos suficiente trabajo. Y luego ya veremos.
Yuri le contará más sobre las partes internas de VK, utilizando ClickHouse y otros detalles en
su charla en Siberian HighLoad ++ del 25 al 26 de junio. También le interesarán estos informes: