Untuk mengantisipasi
Siberian HighLoad ++, kami berbicara dengan salah satu pembicara kami, Yuri Nasretdinov, menanyakan kepadanya apakah ia bekerja dengan baik di VKontakte, sementara pada saat yang sama membuka tabir kerahasiaan atas dapur internal jejaring sosial.

Dalam kerangka konferensi, Yuri akan berbicara tentang bagaimana jejaring sosial memasukkan data ke dalam ClickHouse dari puluhan ribu server, yang baru saja kita bahas dalam percakapan saat ini.
- Tolong beritahu kami tentang pekerjaan Anda.Saat ini saya bekerja di VK. Benar, tidak begitu lama - sejak awal tahun ini. Saya terlibat dalam infrastruktur video dan infrastruktur situs. Situs ini terutama ditulis dalam PHP, dan saya mengembangkan layanan dan utilitas dalam PHP dan Go.
- Apa yang mendorong Anda untuk pergi bekerja di VK?Saya diundang untuk bekerja di VK. Dan saya pikir - mengapa tidak? VKontakte adalah situs dengan muatan tertinggi di Rusia dan salah satu situs terbesar di seluruh Internet. Saya selalu tertarik untuk mengerjakan proyek sebesar itu - untuk mengambil bagian dalam pengembangan situs dan aplikasi seluler. Mungkin bahkan mempengaruhi perkembangan mereka, entah bagaimana membaik. Ini mungkin faktor yang paling memotivasi - VKontakte semua orang tahu dan menggunakan. Dan sangat menyenangkan bekerja pada produk semacam itu, untuk membantunya menjadi lebih baik.
- Sebelum itu, apakah Anda harus berurusan dengan skala yang serupa?Ya, selama sekitar lima tahun saya bekerja di Badoo dalam posisi yang sama - dalam pembangunan infrastruktur. Tetapi beban dalam VK adalah urutan besarnya lebih besar.
- Apakah Anda memiliki masalah saat beralih ke VK?Kantor VKontakte terletak di St. Petersburg. Dan sebelum itu saya tinggal di pinggiran kota, jadi saya harus pindah. Langkah itu sendiri cukup mudah - perusahaan membantu. Tetapi di St. Petersburg sangat dingin di musim dingin. Ini mungkin hal yang paling sulit dihadapi.
- Tidak ada perasaan bahwa kehidupan tetap ada di suatu tempat di dalam Moscow Ring Road?Pada mulanya, bagiku itu sangat terasa, terlepas dari kenyataan bahwa aku sebelumnya pernah ke kota-kota lain di Rusia, di samping Moskow. Tetapi pada kenyataannya, saya suka St. Petersburg, bahkan mungkin lebih dari Moskow. Dia lebih tenang - lebih sedikit orang, mereka tidak terburu-buru, dan ini bagus.
- Dan dari sudut pandang teknologi yang digunakan dalam pekerjaan - apa yang secara fundamental baru bagi Anda?VKontakte sangat besar, masing-masing, benar-benar ada beberapa nuansa di sini yang belum pernah saya temui sebelumnya. Misalnya, di Badoo praktis tidak ada profil yang sangat populer yang dikunjungi oleh banyak orang. VKontakte memilikinya, karena ada sejumlah alat menarik yang memungkinkan Anda untuk dengan cepat mengukur akun yang sangat populer.
Selain itu, VKontakte berbeda dalam hal itu, karena alasan historis, hampir semuanya ada di sini. Tidak seperti, misalnya, Badoo, yang terutama menggunakan MySQL dan Memcache (plus layanannya), VKontakte menggunakan database sendiri dan bahkan versi Memcache sendiri. Pengembang VK mampu menciptakan lebih banyak layanan yang sangat efisien (dengan latar belakang MySQL yang sama) yang bekerja dengan baik pada skala yang sangat besar. Sebagian besar alat jadi tanpa file tidak dapat digunakan dalam infrastruktur yang mencakup puluhan ribu server, seperti VK, dan ini menciptakan kesulitan yang signifikan.
- Apakah sulit untuk dengan cepat menembus alat "internal" seperti itu?Saya bekerja di departemen infrastruktur, dan tidak banyak hal yang tidak standar di sini. Pada dasarnya ini adalah tumpukan standar yang bahkan lebih dari yang saya kerjakan sebelumnya. Tetapi jika saya bekerja, misalnya, di departemen yang berurusan dengan fitur back-end, maka, tentu saja, akan ada pengetahuan yang berguna tentang bagaimana sistem Highload pada dasarnya dibangun, tetapi tidak detail spesifik. Dalam situasi seperti itu, halaman untuk karyawan baru, deskripsi mekanisme internal membantu.
Pada prinsipnya, bagian nyata dari infrastruktur VK diposting oleh Pavel Durov dalam sumber terbuka bersama dengan dokumentasi. Siapa pun dapat membacanya, baca cara kerjanya. Tetapi, tentu saja, jauh lebih mudah untuk memahami ini dalam konteks bagaimana itu digunakan secara internal. Anda datang dan mulai melakukan tugas, secara bertahap mempelajari apa yang diperlukan untuk menyelesaikannya. Lihat bagaimana hal itu sudah dilakukan, dan lakukan hal yang sama. Dan itu sudah cukup. Lagi pula, bahkan jika Anda menguasai membaca semua dokumentasi pada infrastruktur VK, sampai Anda mulai menggunakannya, kemungkinan besar Anda tidak akan mengerti bagaimana semuanya bekerja secara rinci.
Saya perhatikan bahwa semua hal di atas berlaku untuk departemen saya (yang lain mungkin berbeda).
- Apakah Anda memiliki spesialisasi dalam VK? Tugas apa yang Anda kelola untuk berpartisipasi?Tidak ada spesialisasi seperti itu. Saya melakukan apa yang saat ini diperlukan.
Saya bekerja di departemen yang kegiatannya memengaruhi berbagai bagian infrastruktur jejaring sosial, dan ini adalah proyek besar (butuh banyak waktu untuk sepenuhnya memahami perangkat VK dengan pemahaman).
Sebagai contoh, saya berpartisipasi dalam peningkatan parsial ke PHP7. Ini, pada prinsipnya, berlaku untuk seluruh situs, tetapi pada saat yang sama tidak berlaku untuk detail spesifik apa pun.
Contoh lain adalah masalah dengan mengumpulkan log, untuk solusi yang kami gunakan ClickHouse. Saya akan membicarakan ini di HighLoad ++.
- Mari kita beri spoiler kecil - apa fitur dari masalah ini?Tangkapan itu merupakan kombinasi dari dua faktor: di satu sisi, kami memiliki banyak log yang ditulis, dan di sisi lain, kami perlu dengan cepat memeriksa mereka.
Sistem yang ada, pada kenyataannya, tidak dapat menyimpan sejumlah besar data, dengan cepat hanya memberikan informasi terbaru. Untuk mendapatkan ceritanya, Anda harus melakukan kueri yang sangat berat secara manual.
- Pembaca mungkin tertarik pada mengapa kolom ClickHouse digunakan untuk solusinya?Kolom - karena kekhasan pekerjaan. Seringkali saat mencari informasi dalam log, kita perlu memfilter berdasarkan server atau pengguna. Ketika datang untuk membaca dari disk, database kolom memungkinkan Anda untuk mempercepat membaca berkali-kali (dengan latar belakang garis), yang dicapai dengan membaca hanya kolom yang diperlukan dan kompresi bit-bijaksana yang lebih efisien. Selain itu, ClickHouse juga memparalelkan pertanyaan di seluruh kernel. Yaitu tidak seperti database klasik, ia dapat melakukan permintaan tunggal bahkan pada seluruh cluster, menggunakan hampir semua sumber daya baik prosesor dan disk. Database seperti itu, terutama yang gratis, tidak terlalu banyak, jika ada. ClickHouse muncul dengan sangat baik untuk tugas menyimpan log.
Saya juga mencatat bahwa sebelum kedatangan saya, ClickHouse digunakan oleh admin VK dalam tugas yang agak khusus - sebagai alat back-end untuk Grafana. Ini adalah pengumpulan data dan sistem grafik untuk server. Benar, hanya beberapa server dengan ClickHouse yang digunakan, yaitu, sebenarnya, itu tidak tersedia untuk programmer.
Setelah keputusan dibuat untuk menggunakan ClickHouse untuk menyimpan log, saya membantu menciptakan infrastruktur yang sesuai sehingga nyaman dan dapat dimengerti oleh semua orang.
- Apakah VK menggunakan solusi pihak ketiga dalam jumlah yang signifikan (selain yang disebutkan di atas)?Tentu saja digunakan. Sebagai contoh, Linux, di mana semua ini berputar. Jangan meremehkan bagian pekerjaan yang dilakukan sistem operasi untuk kita.
Anehnya, PHP digunakan. Kami memiliki mesin berpemilik yang disebut KittenPHP, yang menerjemahkan PHP ke dalam C ++, tetapi untuk sejumlah tugas, termasuk produksi, PHP biasa juga digunakan.
Digunakan oleh nginx. Hingga saat ini, MySQL terlibat di beberapa tempat, tetapi secara bertahap kami menolaknya - kami menggunakan database yang ditulis sendiri.
- Dan bagaimana proses pengembangan dibangun?Saya tidak melihat perbedaan besar antara proses dalam VK dan apa yang diterima di industri. Kami memiliki pelacak bug, departemen yang menangani fungsi berbeda, bertanggung jawab atas bagian mereka dari proyek; ada sprint yang bertanggung jawab atas komponen, dll.
- Alih-alih hasilnya, apakah mungkin untuk menunjukkan arah pengembangan departemen tempat Anda bekerja?Sejauh yang saya tahu, sebelum departemen di mana saya sekarang bekerja terdiri dari 1-2 orang.
Dan kami mulai terlibat dalam infrastruktur dalam bentuk yang sedang dilakukan sekarang (mungkin, sepertinya DevOps) belum lama ini. Karena itu, masih terlalu dini untuk membicarakan rencana - kami sedang menyelesaikan masalah yang ada, dan sejauh ini kami memiliki cukup banyak pekerjaan. Dan kita akan lihat nanti.
Yuri akan memberi tahu Anda lebih banyak tentang VK internal, menggunakan ClickHouse dan detail lainnya dalam
ceramahnya di Siberian HighLoad ++ pada 25-26 Juni. Anda juga tentu akan tertarik dengan laporan ini: