Na véspera do
HighLoad ++ da
Sibéria, conversamos com um de nossos palestrantes, Yuri Nasretdinov, perguntando se ele funcionava bem no VKontakte e, ao mesmo tempo, abrindo o véu de segredo na cozinha interna da rede social.

No âmbito da conferência, Yuri falará sobre como uma rede social insere dados no ClickHouse de dezenas de milhares de servidores, sobre os quais acabamos de falar na conversa atual.
- Por favor, conte-nos sobre o seu trabalho.Atualmente trabalho na VK. É verdade, não muito tempo - desde o início deste ano. Estou envolvido em infra-estrutura de vídeo e infra-estrutura do site. O site é escrito principalmente em PHP e desenvolvo serviços e utilitários em PHP e Go.
- O que o levou a trabalhar na VK?Fui convidado para trabalhar na VK. E eu pensei - por que não? O VKontakte é o site mais carregado na Rússia e um dos maiores sites de toda a Internet. Eu sempre tive interesse em trabalhar em um projeto tão grande - para participar do desenvolvimento do site e do aplicativo móvel. Talvez até afete seu desenvolvimento, de alguma forma melhore. Este é provavelmente o fator mais motivador - o VKontakte que todos conhecem e usam. E é muito agradável trabalhar em um produto desse tipo, para ajudá-lo a melhorar.
- Antes disso, você tinha que lidar com algo semelhante em escala?Sim, por cerca de cinco anos, trabalhei no Badoo em uma posição semelhante - no desenvolvimento de infraestrutura. Mas a carga em VK é uma ordem de magnitude maior.
- Você teve algum problema ao mudar para o VK?O escritório da VKontakte está localizado em São Petersburgo. E antes disso eu morava nos subúrbios, então tive que me mudar. A mudança em si foi bastante fácil - a empresa ajuda. Mas em São Petersburgo faz muito frio no inverno. Esta foi provavelmente a coisa mais difícil de enfrentar.
- Não há sensação de que a vida tenha permanecido em algum lugar dentro do anel viário de Moscou?No começo, realmente me pareceu, apesar de já ter estado em outras cidades da Rússia, além de Moscou. Mas, de fato, gosto de São Petersburgo, provavelmente até mais do que Moscou. Ele é mais calmo - menos pessoas, elas não têm pressa, e isso é bom.
- E do ponto de vista das tecnologias usadas no trabalho - o que era fundamentalmente novo para você?VKontakte é muito grande, respectivamente, existem algumas nuances aqui que eu não encontrei antes. Por exemplo, no Badoo praticamente não existem perfis muito populares que uma porcentagem significativa de pessoas visita. O VKontakte possui, pois existem várias ferramentas interessantes que permitem escalar rapidamente contas muito populares.
Além disso, o VKontakte é diferente, pois, por razões históricas, quase tudo está aqui. Ao contrário, por exemplo, o Badoo, que usa principalmente MySQL e Memcache (além de seus serviços), o VKontakte usa seus próprios bancos de dados e até sua própria versão do Memcache. Os desenvolvedores do VK podem se dar ao luxo de criar serviços mais eficientes (no contexto do mesmo MySQL) que funcionam bem em uma escala tão grande. A maioria das ferramentas concluídas sem um arquivo não pode ser usada em uma infraestrutura que inclui dezenas de milhares de servidores, como os da VK, e isso cria dificuldades significativas.
- Foi difícil penetrar rapidamente nessas ferramentas "internas"?Eu trabalho no departamento de infraestrutura e não há muitas coisas fora do padrão aqui. Basicamente, essa é uma pilha ainda mais padrão do que aquela com a qual trabalhei antes. Mas se eu trabalhasse, por exemplo, em um departamento que lida com recursos de back-end, é claro que haveria conhecimento útil de como o sistema Highload é basicamente construído, mas não detalhes específicos. Em tais situações, páginas para novos funcionários, descrições de mecanismos internos ajudam.
Em princípio, Pavel Durov postou uma parte tangível da infraestrutura VK em código aberto, juntamente com a documentação. Qualquer um pode ler, ler como tudo funciona. Mas, é claro, é muito mais fácil perceber isso no contexto de como é usado internamente. Você vem e começa a executar tarefas, estudando gradualmente o que é necessário para resolvê-las. Veja como isso já foi feito e faça o mesmo. E isso é o suficiente. Afinal, mesmo se você dominar a leitura de toda a documentação na infraestrutura VK, até começar a usá-la, provavelmente não entenderá como tudo funciona em detalhes.
Observo que tudo isso se aplica ao meu departamento (em outros, pode ser diferente).
- Você tem alguma especialização dentro da VK? Em que tarefas você conseguiu participar?Não há especialização como tal. Eu faço o que é atualmente necessário.
Eu trabalho em um departamento cujas atividades afetam diferentes partes da infraestrutura de rede social, e este é um projeto enorme (leva muito tempo para entender completamente o dispositivo VK com compreensão).
Por exemplo, participei de uma atualização parcial para o PHP7. Isso, em princípio, se aplica a todo o site, mas ao mesmo tempo não se aplica a nenhum detalhe específico.
Outro exemplo é o problema com a coleta de logs, cuja solução usamos ClickHouse. Vou falar sobre isso no HighLoad ++.
- Vamos dar um pequeno spoiler - qual era a característica desse problema?O problema foi uma combinação de dois fatores: por um lado, temos muitos registros escritos e, por outro, precisamos examiná-los rapidamente.
O sistema existente, de fato, não podia armazenar grandes quantidades de dados, fornecendo rapidamente apenas as informações mais recentes. Para obter a história, você tinha que executar manualmente consultas muito pesadas.
- Os leitores podem estar interessados em saber por que a coluna ClickHouse foi usada para a solução?Coluna - devido às especificidades do trabalho. Frequentemente, ao procurar informações nos logs, precisamos filtrar por servidor ou usuário. Quando se trata de ler do disco, um banco de dados de coluna permite acelerar a leitura várias vezes (no fundo da linha), o que é alcançado lendo apenas as colunas necessárias e uma compressão bit a bit mais eficiente. Além disso, o ClickHouse paraleliza bem as consultas entre os kernels. I.e. Ao contrário dos bancos de dados clássicos, ele pode executar uma única consulta, mesmo em um cluster inteiro, usando quase todos os recursos do processador e do disco. Esses bancos de dados, especialmente os gratuitos, não são muito numerosos, se houver. O ClickHouse surgiu muito bem para a tarefa de armazenar logs.
Também observo que, antes da minha chegada, o ClickHouse era usado pelos administradores da VK em uma tarefa bastante especializada - como uma ferramenta de back-end para a Grafana. Este é um sistema de coleta e gráfico de dados para servidores. É verdade que apenas alguns servidores com ClickHouse foram implantados, ou seja, não estavam disponíveis para programadores.
Após a decisão de usar o ClickHouse para armazenar logs, ajudei a criar a infraestrutura apropriada para que ela fosse conveniente e compreensível para todos.
- A VK usa soluções de terceiros em uma quantidade significativa (além das mencionadas acima)?Claro usado. Por exemplo, Linux, no qual tudo isso está girando. Não subestime a parte do trabalho que o sistema operacional faz por nós.
Curiosamente, o PHP é usado. Temos um mecanismo proprietário chamado KittenPHP, que converte PHP em C ++, mas para várias tarefas, incluindo produção, o PHP comum também é usado.
Usado pelo nginx. Até agora, o MySQL está envolvido em alguns lugares, mas gradualmente nós o recusamos - usamos um banco de dados auto-escrito.
- E como é construído o processo de desenvolvimento?Não vejo grandes diferenças entre os processos na VK e o que é aceito na indústria. Temos um rastreador de bugs, departamentos que lidam com diferentes funcionalidades, responsáveis por sua parte do projeto; existem sprints responsáveis por componentes, etc.
- Em vez dos resultados, é possível indicar a direção em que o departamento em que você trabalha está desenvolvendo?Até onde eu sei, antes do departamento em que agora trabalho consistia em 1-2 pessoas.
E começamos a nos engajar na infraestrutura da forma em que está sendo executada agora (provavelmente, parece o DevOps) não faz muito tempo. Portanto, é muito cedo para falar sobre planos - estamos resolvendo os problemas existentes e, até agora, temos trabalho suficiente. E então vamos ver.
Yuri lhe falará mais sobre os componentes internos da VK, usando o ClickHouse e outros detalhes em
sua palestra no Siberian HighLoad ++ nos dias 25 e 26 de junho. Você certamente também estará interessado nestes relatórios: