Saat semua orang merayakan ulang tahun saya, saya memperbaiki cluster sampai pagi hari - dan para pengembang menyalahkan kesalahan mereka pada saya

Saat semua orang merayakan ulang tahun saya, saya memperbaiki cluster sampai pagi hari - dan para pengembang menyalahkan kesalahan mereka pada saya

Inilah kisah yang selamanya mengubah pendekatan saya terhadap pekerjaan devops. Kembali ke masa sebelum Covid, jauh, jauh sebelum mereka, ketika saya dan teman-teman baru saja merencanakan bisnis kami sendiri dan menjadi pekerja lepas dengan pesanan acak, satu tawaran masuk ke keranjang saya.

Perusahaan yang menulis ini adalah perusahaan analisis data. Dia memproses ribuan permintaan setiap hari. Mereka mendatangi kami dengan kata-kata: teman-teman, kami memiliki ClickHouse dan kami ingin mengotomatiskan konfigurasi dan instalasinya. Kami ingin Ansible, Terraform, Docker dan semuanya disimpan di Git. Kami menginginkan cluster yang terdiri dari empat node dengan masing-masing dua replika.

Ini adalah permintaan standar, ada lusinan permintaan, dan Anda memerlukan solusi standar yang sama baiknya. Kami menjawab β€œok”, dan setelah 2-3 minggu semuanya sudah siap. Mereka menerima pekerjaan itu dan mulai pindah ke cluster Clickhouse baru menggunakan utilitas kami.

Tidak ada yang mau atau tahu cara bermain-main dengan Clickhouse. Kemudian kami berpikir bahwa ini adalah masalah utama mereka, dan oleh karena itu stasiun layanan perusahaan memberikan lampu hijau kepada tim saya untuk mengotomatiskan pekerjaan sebanyak mungkin, agar saya sendiri tidak pergi ke sana lagi.

Kami menemani perpindahan tersebut, tugas lain muncul - menyiapkan pencadangan dan pemantauan. Pada saat yang sama, stasiun layanan perusahaan ini bergabung dengan proyek lain, meninggalkan kami dengan salah satu proyek kami sendiri - Leonid - sebagai komandan. Lenya bukanlah pria yang sangat berbakat. Seorang pengembang sederhana yang tiba-tiba ditugaskan di Clickhouse. Tampaknya ini adalah tugas pertamanya untuk mengelola sesuatu, dan kehormatan yang luar biasa itu membuatnya merasa sangat terkejut.

Bersama-sama kami mulai membuat cadangan. Saya menyarankan untuk segera membackup data asli. Ambil saja, zip dan masukkan dengan elegan ke dalam c3. Data mentah adalah emas. Ada pilihan lain - untuk membuat cadangan tabel itu sendiri di Clickhouse, menggunakan pembekuan dan penyalinan. Tapi Lenya punya solusinya sendiri.

Dia mengumumkan bahwa kita memerlukan cluster Clickhouse kedua. Dan mulai sekarang kami akan menulis data ke dua cluster - utama dan cadangan. Saya katakan padanya, Lenya, itu bukan cadangan, tapi replika aktif. Dan jika data mulai hilang dalam produksi, hal yang sama akan terjadi pada cadangan Anda.

Tapi Lenya memegang kemudi dengan erat dan menolak mendengarkan argumen saya. Kami mengobrol lama dengannya, tetapi tidak ada yang bisa dilakukan - Lenya bertanggung jawab atas proyek tersebut, kami hanya mempekerjakan anak-anak dari jalanan.

Kami memantau keadaan cluster dan hanya mengenakan biaya untuk pekerjaan administrator. Administrasi Clickhouse murni tanpa memasukkan data. Cluster tersedia, disk baik-baik saja, node baik-baik saja.

Kami tidak tahu bahwa kami menerima pesanan ini karena kesalahpahaman yang parah di dalam tim mereka

Manajer tidak senang karena Clickhouse lambat dan data terkadang hilang. Dia menugaskan bengkelnya untuk mencari tahu hal itu. Dia memikirkannya sebaik mungkin dan menyimpulkan bahwa kami hanya perlu mengotomatiskan Clickhouse - itu saja. Namun segera menjadi jelas, mereka tidak membutuhkan tim pengembang sama sekali.

Semua ini ternyata sangat, sangat menyakitkan. Dan yang paling menyebalkan adalah itu terjadi pada hari ulang tahunku.

Jumat malam. Saya membuat reservasi di bar anggur favorit saya dan mengundang para homies.

Hampir sebelum berangkat, kami mendapat tugas untuk membuat alter, kami selesaikan, semuanya baik-baik saja. Perubahan berlalu, clickhouse dikonfirmasi. Kami sudah pergi ke bar, dan mereka menulis kepada kami bahwa datanya tidak cukup. Kami menghitung bahwa semuanya tampaknya cukup. Dan mereka pergi untuk merayakannya.

Restoran itu berisik pada hari Jumat. Setelah memesan minuman dan makanan, kami bersantai di sofa. Selama ini kelonggaranku perlahan dibanjiri pesan. Mereka menulis sesuatu tentang kurangnya data. Saya pikir - pagi hari lebih bijaksana daripada malam hari. Terutama hari ini.

Mendekati jam sebelas mereka mulai menelepon. Itu adalah kepala perusahaan... β€œMungkin memutuskan untuk memberi selamat padaku,” pikirku ragu-ragu, dan mengangkat telepon.

Dan saya mendengar sesuatu seperti: β€œAnda mengacaukan data kami! Saya membayar Anda, tetapi tidak ada yang berhasil! Anda bertanggung jawab atas pencadangan, dan Anda tidak melakukan apa pun! Ayo kita perbaiki!" - hanya lebih kasar.

- Kau tahu, keluarlah! Hari ini adalah hari ulang tahunku, dan sekarang aku akan minum, dan tidak terlibat dalam produk bulan Juni buatanku yang terbuat dari sampah dan stik!

Itu yang tidak saya katakan. Sebaliknya, saya mengeluarkan laptop saya dan mulai bekerja.

Tidak, aku mengebom, aku mengebom habis-habisan! Dia menuangkan kata-kata pedas "Sudah kubilang" ke dalam obrolan - karena cadangan, yang bukan cadangan sama sekali, - tentu saja, tidak menyimpan apa pun.

Saya dan teman-teman menemukan cara menghentikan rekaman secara manual dan memeriksa semuanya. Kami sebenarnya memastikan bahwa beberapa data tidak ditulis.

Kami berhenti mencatat dan menghitung jumlah kejadian yang ada di sana per hari. Mereka mengunggah lebih banyak data, namun hanya sepertiganya yang tidak tercatat. Tiga pecahan dengan masing-masing 2 replika. Anda memasukkan 100.000 baris - 33.000 tidak dicatat.

Terjadi kebingungan total. Semua orang menyuruh satu sama lain untuk pergi secara bergiliran: Lenya pergi ke sana terlebih dahulu, diikuti oleh saya sendiri dan pendiri perusahaan. Hanya bengkel yang bergabung yang mencoba mengalihkan seruan dan korespondensi kami untuk mencari solusi masalah.

Tidak ada yang mengerti apa yang sebenarnya terjadi

Saya dan teman-teman terpesona ketika kami menyadari bahwa sepertiga dari semua data tidak hanya tidak dicatat, tetapi juga hilang! Ternyata urutan di perusahaan adalah sebagai berikut: setelah dimasukkan, data dihapus secara permanen, acara terbuang percuma. Saya membayangkan bagaimana Sergei mengubah semua ini menjadi rubel yang hilang.

Ulang tahunku juga dibuang ke tempat sampah. Kami duduk di bar dan menghasilkan ide-ide, mencoba memecahkan teka-teki yang dilemparkan kepada kami. Alasan jatuhnya Clickhouse tidak jelas. Mungkin karena jaringannya, mungkin karena pengaturan Linux. Ya, apa pun yang Anda inginkan, hipotesisnya sudah cukup.

Saya tidak mengambil sumpah pengembang, tetapi mengabaikan orang-orang di ujung telepon adalah tindakan yang tidak jujur ​​- bahkan jika mereka menyalahkan kami atas segalanya. Saya yakin 99% bahwa masalahnya bukan terletak pada keputusan kami, bukan pada pihak kami. Peluang 1% bahwa kita telah gagal terbakar oleh kecemasan. Tapi tidak peduli di pihak mana masalahnya, masalah itu harus diperbaiki. Meninggalkan pelanggan, tidak peduli siapa mereka, dengan kebocoran data yang begitu parah adalah tindakan yang terlalu kejam.

Kami bekerja di meja restoran sampai jam tiga pagi. Kami menambahkan acara, menyisipkan pilihan, dan kami berangkat untuk mengisi kekosongan. Saat Anda mengacaukan data, inilah cara Anda melakukannya: Anda mengambil data rata-rata untuk hari-hari sebelumnya dan memasukkannya ke dalam data yang kacau.

Setelah jam tiga pagi, saya dan teman saya pergi ke rumah saya dan memesan bir dari pasar alkohol. Saya sedang duduk dengan laptop dan masalah Clickhouse, seorang teman memberi tahu saya sesuatu. Akibatnya, setelah satu jam dia tersinggung karena saya bekerja dan tidak minum bir bersamanya, lalu pergi. Klasik - Saya adalah teman Devops.

Pada jam 6 pagi, saya membuat ulang tabel itu lagi, dan data mulai membanjiri. Semuanya bekerja tanpa ada kerugian.

Maka itu sulit. Semua orang saling menyalahkan atas hilangnya data. Jika terjadi bug baru, saya yakin akan terjadi baku tembak

Dalam pertarungan ini, kami akhirnya mulai memahami - perusahaan mengira kami adalah orang-orang yang bekerja dengan data dan memantau struktur tabel. Mereka bingung antara admin dan dealer. Dan mereka datang menanyakan sesuatu yang berbeda kepada kami dari admin.

Keluhan utama mereka adalah - apa-apaan ini, Anda bertanggung jawab atas pencadangan dan tidak melakukannya dengan benar, Anda terus membuang-buang data. Dan semua ini dengan alas yang dapat diputar ulang.

Saya menginginkan keadilan. Saya menggali korespondensi dan melampirkan tangkapan layar semua orang, di mana Leonid dengan sekuat tenaga memaksa mereka untuk membuat cadangan yang telah dibuat. Stasiun layanan mereka memihak kami setelah panggilan telepon saya. Belakangan Lenya mengakui kesalahannya.

Sebaliknya, pimpinan perusahaan tak mau menyalahkan rakyatnya sendiri. Tangkapan layar dan kata-kata tidak berpengaruh padanya. Dia percaya bahwa karena kami ahli di sini, kami harus meyakinkan semua orang dan bersikeras pada keputusan kami. Rupanya, tugas kami adalah mengajari Lenya dan, terlebih lagi, melewati dia, yang ditunjuk sebagai manajer proyek, untuk mencapai hal utama dan secara pribadi mencurahkan semua keraguan kami tentang konsep cadangan kepadanya.

Obrolan itu mengalir dengan kebencian, agresi yang tersembunyi dan tidak tersembunyi. Saya tidak tahu harus berbuat apa. Semuanya terhenti. Dan kemudian mereka menyarankan saya cara termudah - untuk menulis pesan pribadi kepada manajer dan mengatur pertemuan dengannya. Vasya, orang di kehidupan nyata tidak secepat di chat. Bos membalas pesan saya: ayo, tidak ada pertanyaan.

Itu adalah pertemuan paling menakutkan dalam karier saya. Sekutu saya dari klien - STO - tidak dapat menemukan waktu. Saya pergi ke pertemuan dengan bos dan Lena.

Berkali-kali saya mengulangi kemungkinan dialog kami di kepala saya. Saya berhasil tiba sangat awal, setengah jam sebelumnya. Saya mulai gugup, saya merokok 10 batang rokok. Saya mengerti, itu saja - saya sendirian. Saya tidak akan bisa meyakinkan mereka. Dan dia melangkah ke dalam lift.

Saat dia bangun, dia memukul pemantik api dengan keras hingga mematahkannya.

Alhasil, Lenya tidak hadir dalam pertemuan tersebut. Dan kami mengobrol hebat tentang segala hal dengan bos! Sergei bercerita tentang rasa sakitnya. Dia tidak ingin "mengotomatiskan Clickhouse" - dia ingin "membuat kueri berfungsi".

Saya tidak melihat seekor kambing, tetapi seorang pria baik, khawatir dengan bisnisnya, tenggelam dalam pekerjaan 24/7. Obrolan sering kali menggambarkan kita sebagai penjahat, bajingan, dan orang bodoh. Namun dalam hidup, mereka adalah orang-orang yang sama seperti Anda.

Sergei tidak membutuhkan beberapa devops untuk disewa. Masalah yang mereka hadapi ternyata jauh lebih besar.

Saya mengatakan bahwa saya bisa menyelesaikan masalahnya - ini hanya pekerjaan yang sama sekali berbeda, dan saya punya teman yang bekerja untuk itu. Jika kami tahu sejak awal bahwa ini adalah kesepakatan untuk mereka, kami akan menghindari banyak hal. Sudah terlambat, namun kami menyadari bahwa masalahnya terletak pada pengelolaan data yang buruk, bukan pada infrastruktur.

Kami berjabat tangan, mereka menaikkan gaji kami dua setengah kali lipat, tetapi dengan syarat saya menanggung sendiri seluruh kekacauan dengan data mereka dan Clickhouse. Di dalam lift, saya berkomunikasi dengan pria DI yang sama, Max, dan menghubungkannya ke tempat kerja. Seluruh cluster perlu disekop.

Ada banyak sampah dalam proyek yang diadopsi. Dimulai dengan β€œcadangan” yang disebutkan. Ternyata cluster β€œcadangan” yang sama ini tidak terisolasi. Mereka menguji semuanya, bahkan terkadang memasukkannya ke dalam produksi.

Pengembang internal kami telah membuat penyisipan data khusus mereka sendiri. Dia bekerja seperti ini: dia mengelompokkan file, menjalankan skrip, dan menggabungkan data ke dalam sebuah tabel. Namun masalah utamanya adalah sejumlah besar data diterima untuk satu permintaan sederhana. Permintaan tersebut menggabungkan data setiap detik. Semua demi satu nomor - jumlah per hari.

Pengembang internal salah menggunakan alat analisis. Mereka pergi ke grafana dan menulis permintaan kerajaan mereka. Dia mengunggah data selama 2 minggu. Ternyata itu adalah grafik yang indah. Namun kenyataannya, permintaan data terjadi setiap 10 detik. Semua ini menumpuk dalam antrian karena Clickhouse tidak melakukan pemrosesan. Di sinilah alasan utamanya disembunyikan. Tidak ada yang berhasil di Grafana, permintaan mengantri, dan data lama yang tidak relevan terus berdatangan.

Kami mengkonfigurasi ulang cluster, membuat ulang penyisipan. Pengembang internal menulis ulang β€œinserter” mereka, dan mulai membagi data dengan benar.

Max melakukan audit infrastruktur penuh. Dia menguraikan rencana transisi ke backend yang lengkap. Namun hal ini tidak sesuai dengan perusahaan. Mereka mengharapkan rahasia ajaib dari Max yang memungkinkan mereka bekerja dengan cara lama, tetapi hanya secara efisien. Lenya masih bertanggung jawab atas proyek tersebut, dan dia tidak mengetahui apa pun. Dari semua yang ditawarkan, ia kembali memilih alternatifnya. Seperti biasa, ini adalah keputusan yang paling selektif... berani. Lenya yakin perusahaannya punya jalur khusus. Berduri dan penuh gunung es.

Sebenarnya, di situlah kami berpisah – kami melakukan apa yang kami bisa.

Penuh ilmu dan hikmah dari sejarah ini, kami membuka usaha sendiri dan membentuk beberapa prinsip untuk diri kami sendiri. Kami tidak akan pernah mulai bekerja dengan cara yang sama seperti dulu.

DJ Max bergabung dengan kami setelah proyek ini, dan kami masih bekerja sama dengan baik. Kasus Clickhouse mengajari saya cara melakukan audit infrastruktur secara lengkap dan menyeluruh sebelum mulai bekerja. Kami memahami cara kerja semuanya dan baru kemudian menerima tugas. Dan jika sebelumnya kami akan segera buru-buru memelihara infrastruktur, sekarang kami akan mengerjakan proyek satu kali terlebih dahulu, yang membantu kami memahami bagaimana cara mewujudkannya.

Dan ya, kami menghindari proyek dengan infrastruktur yang buruk. Meski demi uang yang banyak, meski karena persahabatan. Tidak menguntungkan menjalankan proyek yang sakit. Menyadari hal ini membantu kami berkembang. Entah proyek satu kali untuk membereskan infrastruktur dan kemudian kontrak pemeliharaan, atau kami hanya terbang begitu saja. Melewati gunung es lainnya.

PS Jadi jika Anda memiliki pertanyaan tentang infrastruktur Anda, jangan ragu untuk meninggalkan permintaan.

Kami memiliki 2 audit gratis per bulan, mungkin proyek Anda adalah salah satunya.

Sumber: www.habr.com

Tambah komentar