In Erwartung des
sibirischen HighLoad ++ sprachen wir mit einem unserer Redner, Yuri Nasretdinov, und fragten ihn, ob er gut an VKontakte arbeite, während wir gleichzeitig den Schleier der Geheimhaltung über der internen Küche des sozialen Netzwerks öffneten.

Im Rahmen der Konferenz wird Yuri darüber sprechen, wie ein soziales Netzwerk Daten von Zehntausenden von Servern in ClickHouse einfügt, die wir gerade in der aktuellen Konversation angesprochen haben.
- Bitte erzählen Sie uns von Ihrer Arbeit.Zur Zeit arbeite ich an VK. Richtig, nicht so lange - seit Anfang dieses Jahres. Ich beschäftige mich mit Videoinfrastruktur und Standortinfrastruktur. Die Seite ist hauptsächlich in PHP geschrieben und ich entwickle Dienste und Dienstprogramme in PHP und Go.
- Was hat Sie dazu veranlasst, bei VK zu arbeiten?Ich wurde eingeladen, bei VK zu arbeiten. Und ich dachte - warum nicht? VKontakte ist die am höchsten geladene Site in Russland und eine der größten Sites im gesamten Internet. Ich war immer daran interessiert, an einem so großen Projekt zu arbeiten - an der Entwicklung der Website und der mobilen Anwendung teilzunehmen. Vielleicht sogar ihre Entwicklung beeinflussen, irgendwie verbessern. Dies ist wahrscheinlich der motivierendste Faktor - VKontakte, den jeder kennt und nutzt. Und es ist sehr angenehm, an einem solchen Produkt zu arbeiten, um es besser zu machen.
- Mussten Sie sich vorher mit etwas ähnlichem befassen?Ja, ich habe ungefähr fünf Jahre in einer ähnlichen Position bei Badoo gearbeitet - in der Infrastrukturentwicklung. Die Last in VK ist jedoch um eine Größenordnung größer.
- Hatten Sie Probleme beim Wechsel zu VK?Das Büro von VKontakte befindet sich in St. Petersburg. Und vorher lebte ich in den Vororten, also musste ich umziehen. Der Umzug selbst war recht einfach - das Unternehmen hilft. Aber in St. Petersburg ist es im Winter sehr kalt. Dies war wahrscheinlich das Schwierigste.
- Es gibt kein Gefühl, dass das Leben irgendwo auf der Moskauer Ringstraße geblieben ist?Anfangs schien es mir wirklich so, obwohl ich zuvor neben Moskau auch in anderen Städten Russlands gewesen war. Tatsächlich mag ich St. Petersburg, wahrscheinlich sogar mehr als Moskau. Er ist ruhiger - weniger Leute, sie haben es nicht eilig, und das ist schön.
- Und was war für Sie aus Sicht der in der Arbeit verwendeten Technologien grundlegend neu?VKontakte ist sehr groß, es gibt hier wirklich einige Nuancen, die ich vorher noch nicht gesehen habe. Zum Beispiel gibt es in Badoo praktisch keine sehr beliebten Profile, die ein erheblicher Prozentsatz der Menschen besucht. VKontakte hat es, da es eine Reihe interessanter Tools gibt, mit denen Sie sehr beliebte Konten schnell skalieren können.
Darüber hinaus unterscheidet sich VKontakte darin, dass aus historischen Gründen fast alles hier ist. Im Gegensatz zu Badoo, das hauptsächlich MySQL und Memcache (plus seine Dienste) verwendet, verwendet VKontakte seine eigenen Datenbanken und sogar seine eigene Version von Memcache. VK-Entwickler könnten es sich leisten, hocheffizientere Dienste (vor dem Hintergrund desselben MySQL) zu erstellen, die in so großem Umfang gut funktionieren. Die meisten fertigen Tools ohne Datei können nicht in einer Infrastruktur verwendet werden, die Zehntausende von Servern wie VKs umfasst. Dies führt zu erheblichen Schwierigkeiten.
- War es schwierig, schnell in solche "internen" Werkzeuge einzudringen?Ich arbeite in der Infrastrukturabteilung, und hier gibt es nicht viele ungewöhnliche Dinge. Grundsätzlich ist dies ein noch standardmäßigerer Stack als der, mit dem ich zuvor gearbeitet habe. Wenn ich zum Beispiel in einer Abteilung arbeiten würde, die sich mit Back-End-Funktionen befasst, wäre natürlich nützliches Wissen darüber vorhanden, wie das Highload-System im Grunde aufgebaut ist, aber keine spezifischen Details. In solchen Situationen helfen Seiten für neue Mitarbeiter, Beschreibungen interner Mechanismen.
Grundsätzlich wurde ein konkreter Teil der VK-Infrastruktur von Pavel Durov zusammen mit der Dokumentation in Open Source veröffentlicht. Jeder kann es lesen, lesen, wie alles funktioniert. Aber natürlich ist es viel einfacher, dies im Zusammenhang mit der internen Verwendung wahrzunehmen. Sie kommen und beginnen, Aufgaben zu erledigen, und lernen nach und nach, was zur Lösung dieser Aufgaben erforderlich ist. Sehen Sie, wie es bereits gemacht wird, und machen Sie dasselbe. Und das ist genug. Selbst wenn Sie die gesamte Dokumentation der VK-Infrastruktur lesen, bis Sie sie verwenden, werden Sie höchstwahrscheinlich nicht verstehen, wie alles im Detail funktioniert.
Ich stelle fest, dass alle oben genannten Punkte für meine Abteilung gelten (in anderen Fällen kann dies anders sein).
- Haben Sie eine Spezialisierung in VK? An welchen Aufgaben haben Sie teilgenommen?Es gibt keine Spezialisierung als solche. Ich mache was aktuell benötigt wird.
Ich arbeite in einer Abteilung, deren Aktivitäten verschiedene Teile der Infrastruktur sozialer Netzwerke betreffen, und dies ist ein riesiges Projekt (es braucht viel Zeit, um das VK-Gerät vollständig zu verstehen).
Zum Beispiel habe ich an einem teilweisen Upgrade auf PHP7 teilgenommen. Dies gilt grundsätzlich für die gesamte Website, gleichzeitig jedoch nicht für bestimmte Details.
Ein weiteres Beispiel ist das Problem beim Sammeln von Protokollen, für deren Lösung wir ClickHouse verwendet haben. Ich werde darüber in HighLoad ++ sprechen.
- Geben wir einen kleinen Spoiler - was war das Merkmal dieses Problems?Der Haken war eine Kombination aus zwei Faktoren: Einerseits haben wir viele Protokolle geschrieben, und andererseits müssen wir sie schnell durchsehen.
Das vorhandene System konnte tatsächlich keine großen Datenmengen speichern und gab schnell nur die neuesten Informationen weiter. Um die Geschichte zu erhalten, mussten Sie sehr schwere Abfragen manuell ausführen.
- Leser könnten interessiert sein, warum die Spalte ClickHouse für die Lösung verwendet wurde?Spalte - wegen der Besonderheiten der Arbeit. Bei der Suche nach Informationen in den Protokollen müssen wir häufig nach Server oder Benutzer filtern. Wenn Sie vom Datenträger lesen, können Sie mit einer Spaltendatenbank das Lesen um ein Vielfaches beschleunigen (vor dem Hintergrund der Zeile). Dies wird erreicht, indem nur die erforderlichen Spalten gelesen und die bitweise Komprimierung effizienter gestaltet werden. Darüber hinaus parallelisiert ClickHouse Abfragen über die Kernel hinweg gut. Das heißt, Im Gegensatz zu klassischen Datenbanken kann eine einzelne Abfrage sogar für einen gesamten Cluster ausgeführt werden, wobei fast alle Ressourcen sowohl des Prozessors als auch der Festplatte verwendet werden. Solche Datenbanken, insbesondere freie, sind nicht sehr zahlreich, wenn überhaupt. ClickHouse hat sich für das Speichern von Protokollen sehr gut bewährt.
Ich stelle auch fest, dass ClickHouse vor meiner Ankunft von VK-Administratoren in einer ziemlich hochspezialisierten Aufgabe verwendet wurde - als Back-End-Tool für Grafana. Dies ist ein Datenerfassungs- und Grafiksystem für Server. Zwar wurden nur wenige Server mit ClickHouse bereitgestellt, das heißt, es stand Programmierern tatsächlich nicht zur Verfügung.
Nachdem die Entscheidung getroffen wurde, ClickHouse zum Speichern von Protokollen zu verwenden, half ich, die entsprechende Infrastruktur so zu erstellen, dass sie für alle bequem und verständlich war.
- Verwenden VK Lösungen von Drittanbietern in einer erheblichen Menge (zusätzlich zu den oben genannten)?Natürlich benutzt. Zum Beispiel Linux, auf dem sich das alles dreht. Unterschätzen Sie nicht den Anteil der Arbeit, die das Betriebssystem für uns leistet.
Seltsamerweise wird PHP verwendet. Wir haben eine proprietäre Engine namens KittenPHP, die PHP in C ++ übersetzt, aber für eine Reihe von Aufgaben, einschließlich der Produktion, wird auch reguläres PHP verwendet.
Wird von Nginx verwendet. Bis jetzt ist MySQL an einigen Stellen involviert, aber nach und nach lehnen wir es ab - wir verwenden eine selbst geschriebene Datenbank.
- Und wie ist der Entwicklungsprozess aufgebaut?Ich sehe keine großen Unterschiede zwischen Prozessen in VK und dem, was in der Branche akzeptiert wird. Wir haben einen Bug-Tracker, Abteilungen, die sich mit unterschiedlichen Funktionen befassen und für ihren Teil des Projekts verantwortlich sind. Es gibt Sprints, die für Komponenten usw. verantwortlich sind.
- Kann anstelle der Ergebnisse angegeben werden, in welche Richtung sich die Abteilung entwickelt, in der Sie arbeiten?Soweit ich weiß, bestand die Abteilung, in der ich jetzt arbeite, vor 1-2 Personen.
Und wir haben vor nicht allzu langer Zeit begonnen, uns mit der Infrastruktur in der Form zu befassen, in der sie jetzt durchgeführt wird (wahrscheinlich sieht es nach DevOps aus). Daher ist es zu früh, um über Pläne zu sprechen - wir lösen bestehende Probleme und haben bisher genug Arbeit. Und dann werden wir sehen.
Yuri wird Ihnen in
seinem Vortrag auf der Siberian HighLoad ++ vom 25. bis 26. Juni mehr über VK-Interna erzählen, indem er ClickHouse und andere Details verwendet. Diese Berichte werden Sie sicherlich auch interessieren: