Inilah cerita yang mengubah pendekatan saya terhadap pekerjaan Devops selamanya. Kembali ke masa galangan kapal, jauh, jauh sebelum mereka, ketika orang-orang dan saya baru saja memikirkan bisnis kami dan pekerja lepas berdasarkan pesanan acak, satu tawaran jatuh ke keranjang saya.
Perusahaan yang menulis ada di analitik data. Dia memproses ribuan permintaan setiap hari. Mereka mendatangi kami dengan kata-kata: guys, kami memiliki ClickHouse dan kami ingin mengotomatiskan konfigurasi dan instalasinya. Kami ingin Ansible, Terraform, Docker dan semua ini disimpan di gita. Kami ingin sekelompok empat node dengan dua replika di masing-masing.
Permintaan standar, ada lusinan, dan Anda memerlukan solusi standar yang sama baiknya. Kami bilang "oke" dan dalam 2-3 minggu semuanya sudah siap. Mereka menerima pekerjaan itu dan mulai pindah ke klaster Klickhaus baru menggunakan utilitas kami.
Tak seorang pun dengan mereka ingin atau tahu bagaimana bermain-main dengan Klickhaus. Kemudian kami berpikir bahwa ini adalah masalah utama mereka, dan oleh karena itu bengkel perusahaan hanya memberikan lampu hijau kepada tim saya untuk mengotomatiskan pekerjaan sebanyak mungkin agar tidak pergi ke sana lagi.
Kami mengiringi pemindahan itu, tugas-tugas lain muncul - mengatur cadangan dan pemantauan. Pada saat yang sama, bengkel perusahaan ini bergabung menjadi proyek lain, meninggalkan kami sebagai komandan salah satu dari kami - Leonid. Lenya bukanlah orang yang sangat berbakat. Pengembang sederhana yang tiba-tiba bertanggung jawab atas Klickhaus. Tampaknya ini adalah tugas pertamanya untuk memimpin sesuatu, dan dari kehormatan yang ditumpuk, dia demam bintang.
Bersama-sama kami memulai pencadangan. Saya menawarkan untuk segera mencadangkan data asli. Ambil saja, ritsleting dan lemparkan dengan elegan ke beberapa c3. Data mentahnya adalah emas. Ada pilihan lain - untuk membuat cadangan tabel itu sendiri di Klickhaus, menggunakan dekorasi dan penyalinan. Tetapi Lenya menemukan solusinya sendiri.
Dia mengumumkan bahwa kami membutuhkan cluster Klickhaus kedua. Dan mulai sekarang kita akan menulis data pada dua cluster - yang utama dan yang cadangan. Saya katakan padanya, kata mereka, Leon, itu bukan cadangan, tetapi replika aktif. Dan jika data mulai hilang dalam produksi, cadangan Anda akan sama.
Tapi Lyonya dengan tegas meraih kemudi dan menolak untuk mendengarkan argumen saya. Kami menghabiskan waktu lama bersamanya di ruang obrolan, tetapi tidak ada yang bisa dilakukan - Leon yang mengemudikan proyek itu, kami hanyalah orang-orang bayaran dari jalanan.
Kami memantau status cluster dan hanya menagih untuk pekerjaan admin. Administrasi bersih Clickhaus tanpa masuk ke data. Cluster tersedia, disk baik-baik saja, node-node baik-baik saja.
Kami masih tidak tahu bahwa kami menerima pesanan ini karena kesalahpahaman yang mengerikan dalam tim mereka.
Manajer tidak senang karena Klickhaus lambat dan terkadang data hilang. Dia menetapkan tugas STO-nya untuk mencari tahu. Dia memikirkannya sebaik mungkin, dan menyimpulkan bahwa Anda hanya perlu mengotomatiskan Klickhaus - dan hanya itu. Tetapi setelah menjadi jelas, mereka tidak membutuhkan tim pengembang sama sekali.
Semua ini ternyata sangat, sangat menyakitkan. Dan hal yang paling menyinggung, itu pada hari ulang tahunku.
Jumat malam. Saya memesan meja di bar anggur favorit saya dan menelepon homies saya.
Hampir sebelum berangkat, kami mendapat tugas untuk membuat perubahan, kami melakukannya, semuanya baik-baik saja. Alter lulus, Clickhouse mengonfirmasi. Kami telah mengumpulkan di bar, dan mereka menulis kepada kami bahwa tidak ada cukup data. Mereka menghitung - semuanya tampaknya cukup. Dan mereka pergi untuk merayakannya.
Restoran itu berisik pada Jumat malam. Setelah memesan minuman, makanan, mereka duduk-duduk di sofa. Selama ini kelonggaran saya perlahan diisi dengan pesan. Mereka menulis sesuatu tentang kurangnya data. Saya pikir pagi hari lebih bijaksana dari pada malam hari. Apalagi hari ini.
Mendekati pukul sebelas, mereka mulai menelepon. Itu adalah kepala perusahaan ... "Mungkin, dia memutuskan untuk memberi selamat kepada saya," - Saya pikir sangat tidak pasti, mengangkat telepon.
Dan saya mendengar sesuatu seperti: "Anda mengacaukan data kami! Saya membayar Anda, tetapi tidak ada yang berhasil! Anda bertanggung jawab atas backup, dan Anda tidak melakukan apa-apa! Mari kita perbaiki! " - hanya lebih kasar.
- Kau tahu, pergilah! Ini hari ulang tahunku hari ini, dan sekarang aku akan minum, bukan melakukan kotoran dan tongkat buatanmu bulan Juni!
Saya tidak mengatakan itu. Sebagai gantinya, dia mengeluarkan laptopnya dan mulai bekerja.
Tidak, saya membom, saya membom seperti neraka! Saya menuangkan kaustik "Saya bilang begitu" ke dalam obrolan - karena cadangan, yang bukan cadangan, tentu saja, tidak menyimpan apa pun.
Orang-orang dan saya menemukan cara menghentikan perekaman secara manual dan memeriksa semuanya. Benar-benar memastikan bahwa beberapa data tidak sedang ditulis.
Kami berhenti merekam, menghitung jumlah acara yang ada per hari. Mereka memasukkan lebih banyak data, yang hanya sepertiganya yang tidak tercatat. Tiga pecahan dari 2 replika. Anda memasukkan 100.000 baris - 33.000 tidak tertulis.
Terjadi kebingungan total. Setiap orang saling mengirim untuk bercinta secara bergantian: Lenya pergi ke sana lebih dulu, diikuti oleh saya dan pendiri perusahaan. Hanya SRT yang bergabung yang mencoba membawa panggilan kami dengan teriakan dan korespondensi ke arah menemukan solusi untuk masalah tersebut.
Apa yang sebenarnya terjadi - tidak ada yang mengerti
Orang-orang dan saya baru saja panik ketika kami menyadari bahwa sepertiga dari semua data tidak hanya tidak direkam - itu hilang! Ternyata urutan di perusahaan adalah sebagai berikut: setelah penyisipan, data dihapus dan tidak dapat ditarik kembali, acara diparut dalam beberapa kelompok. Saya membayangkan bagaimana Sergei mengubah semua ini menjadi rubel yang hilang.
Ulang tahun saya juga akan menjadi tumpukan sampah. Kami duduk di bar dan menghasilkan ide, mencoba memecahkan teka-teki yang terlempar. Alasan jatuhnya Klickhaus tidak jelas. Mungkin jaringan, mungkin tentang pengaturan Linux. Ya, apapun, hipotesis terdengar cukup.
Saya tidak mengambil sumpah pengembangan, tetapi tidak jujur membiarkan orang-orang di ujung telepon - bahkan jika mereka menyalahkan kami atas segalanya. Saya 99% yakin bahwa masalahnya bukan pada keputusan kami, bukan di pihak kami. 1% dari kemungkinan kita mengacau masih dibakar dengan kecemasan. Tapi tidak peduli di sisi mana masalahnya, itu harus diperbaiki. Meninggalkan pelanggan, apa pun mereka, dengan kebocoran data yang mengerikan itu terlalu kejam.
Sampai jam tiga pagi kami bekerja di meja restoran. Melempar acara, menyisipkan pilih - dan melaju untuk mengisi kekosongan. Ketika Anda mengacaukan data, lakukan seperti ini - Anda mengambil data rata-rata untuk hari-hari sebelumnya dan memasukkannya ke dalam data yang telah kacau.
Setelah jam tiga pagi, teman saya dan saya pergi ke rumah saya, memesan pivasik dari pasar alkohol. Saya sedang duduk dengan laptop dan masalah Klickhaus, seorang teman memberi tahu saya sesuatu. Akibatnya, satu jam kemudian dia tersinggung karena saya bekerja, dan tidak minum bir bersamanya, dan pergi. Klasik - adalah teman Devops.
Pada pukul 6 pagi, saya membuat ulang tabel itu lagi, dan datanya mulai terisi. Semuanya bekerja tanpa kerugian.
Kemudian sulit. Semua orang saling menyalahkan karena kehilangan data. Jika ada bug baru, saya yakin baku tembak akan dimulai
Dalam srach ini, kami akhirnya mulai memahami bahwa perusahaan mengira bahwa kami adalah orang-orang yang bekerja dengan data dan memantau struktur tabel. Mereka membingungkan admin dengan dibieys. Dan mereka datang untuk meminta kami tidak seperti administrator.
Keluhan utama mereka adalah - apa-apaan ini, kamu bertanggung jawab atas backup dan tidak membuatnya secara normal, kamu melanjutkan datanya. Dan semua ini dengan memutar ulang teman sekak.
Saya menginginkan keadilan. Saya menggali korespondensi dan melampirkan semua dengan screenshot, di mana Leonid dengan semua kekuatannya untuk membuat cadangan yang dibuat. Bengkel mereka memihak kami setelah panggilan telepon saya. Setelah itu, Lenya mengakui kesalahannya.
Pimpinan perusahaan, sebaliknya, tidak ingin menyalahkan rakyatnya sendiri. Layar dan kata-kata tidak berhasil padanya. Dia percaya bahwa karena kami ahli di sini, kami harus meyakinkan semua orang dan bersikeras pada keputusan kami. Rupanya, tugas kami adalah untuk mengajar Lenya dan, terlebih lagi, melewati dia, ditunjuk oleh manajer proyek, untuk mencapai poin utama dan secara pribadi menuangkan semua keraguan kami tentang konsep backup.
Chatik mengalir dengan kebencian, agresi yang tersembunyi dan tidak terselubung. Saya tidak tahu harus berbuat apa. Semuanya terhenti. Dan kemudian saya disarankan cara termudah - untuk menulis kepada manajer dalam catatan pribadi dan membuat janji dengannya. Vasya, orang-orang dalam hidup ini tidak seperti bulldog seperti saat mereka mengobrol. Bos membalas pesan saya: datang, tidak ada pertanyaan.
Itu adalah pertemuan paling lucu dalam karir saya. Sekutu klien saya - STO - tidak dapat menemukan waktu. Saya pergi ke pertemuan dengan bos dan Lena.
Dari waktu ke waktu, saya mengulang kemungkinan dialog di kepala saya. Saya berhasil datang lebih awal, setengah jam sebelumnya. Gugup mulai, saya merokok 10 batang Saya mengerti segalanya - Saya sendirian. Saya tidak akan bisa meyakinkan mereka. Dan melangkah ke lift.
Saat dia mendaki, dia memukul dengan korek api sehingga dia memecahkannya.
Akibatnya, Lenya tidak hadir dalam pertemuan tersebut. Dan kami berbicara hebat tentang segala hal dengan yang utama! Sergei bercerita tentang rasa sakitnya. Dia tidak ingin "mengotomatiskan Clickhouse" - dia ingin kueri tersebut berfungsi.
Saya tidak melihat kambing, tapi orang baik, khawatir tentang bisnisnya, tenggelam dalam pekerjaan 24/7. Obrolan sering kali menarik kita sebagai penjahat, bajingan, dan tolol. Tetapi dalam hidup ini adalah orang-orang seperti Anda.
Sergei tidak membutuhkan beberapa pengembang untuk disewa. Masalah yang mereka hadapi ternyata jauh lebih besar.
Saya berkata bahwa saya bisa menyelesaikan masalahnya - itu hanya pekerjaan yang sama sekali berbeda, dan saya punya teman DIBI untuknya. Jika kami awalnya mengetahui bahwa ini adalah kesepakatan untuk mereka, kami akan menghindari banyak hal. Terlambat, tetapi kami menyadari bahwa masalahnya terletak pada pekerjaan buruk dengan data, dan bukan pada infrastruktur.
Kami berjabat tangan, bayarannya dinaikkan dua setengah kali, tetapi dengan syarat - saya benar-benar mengambil semua kotoran dengan data mereka dan Klickhaus untuk diri saya sendiri. Di lift, saya menghubungi dibieyschik Max yang sama dan menghubungkannya ke tempat kerja. Itu perlu untuk menyekop seluruh cluster.
Treshak dalam proyek yang diadopsi itu dalam jumlah besar. Dimulai dengan "cadangan" yang disebutkan. Ternyata cluster "backup" yang sama tidak diisolasi. Mereka menguji semua yang ada di dalamnya, terkadang mereka bahkan membiarkannya masuk produksi.
Pengembang staf telah menyusun "sisipan" data khusus mereka sendiri. Ini bekerja seperti ini: file batch, jalankan skrip dan gabungkan data ke dalam piring. Tetapi masalah utamanya adalah sejumlah besar data diterima untuk satu permintaan sederhana. Permintaan data gabungan per detik. Semua demi satu angka - jumlahnya per hari.
Pengembang internal salah menggunakan alat analitik. Mereka pergi ke grafana, menulis permintaan kerajaan mereka. Itu membuang data dalam 2 minggu. Hasilnya adalah grafik yang indah. Namun nyatanya, permintaan data berjalan setiap 10 detik. Semua ini terakumulasi dalam antrian, karena Klickhaus tidak menghentikan prosesnya. Inilah alasan utamanya. Tidak ada yang berhasil di grafan, permintaan dalam antrian, data lama yang tidak relevan terus berdatangan.
Kami mengonfigurasi ulang cluster, mendesain ulang sisipan. Pengembang internal menulis ulang "penyisipan" mereka, dan mulai memecah data dengan benar.
Max melakukan audit penuh atas infrastruktur. Dia menguraikan rencana untuk pindah ke backend yang lengkap. Tapi ini tidak sesuai dengan perusahaan. Mereka mengharapkan dari Max rahasia sihir yang akan memungkinkan mereka bekerja dengan cara lama, tetapi hanya secara efektif. Lenya masih bertanggung jawab atas proyek tersebut, yang belum mempelajari apa pun. Dari semua yang diusulkan, dia kembali memilih alternatifnya. Seperti biasa, itu adalah keputusan yang paling selektif ... paling berani. Lyonya yakin perusahaannya punya jalur khusus. Berduri dan penuh gunung es.
Sebenarnya, dalam hal ini kami berpisah - kami melakukan apa yang kami bisa.
Dengan penuh kerucut, bijak dengan cerita ini, kami membuka bisnis kami sendiri dan membentuk beberapa prinsip untuk diri kami sendiri. Kami tidak akan pernah mulai bekerja sekarang juga.
Setelah proyek ini Max, pemain Debian bergabung dengan kami, dan kami masih bekerja sama dengan baik. Kasus dengan Klickhaus mengajarkan bagaimana melakukan audit infrastruktur secara penuh dan menyeluruh sebelum mulai bekerja. Kami menyelidiki bagaimana semuanya bekerja, dan baru kemudian kami menerima tugasnya. Dan jika sebelumnya kami segera bergegas untuk memelihara infrastruktur, sekarang kami pertama-tama melakukan proyek satu kali, yang membantu untuk memahami cara membuatnya berfungsi.
Dan ya, kami melewati proyek dengan infrastruktur yang buruk. Sekalipun untuk uang yang banyak, sekalipun dengan persahabatan. Tidaklah menguntungkan menjalankan proyek yang sakit. Kesadaran ini membantu kami tumbuh. Entah proyek satu kali untuk menata infrastruktur dan kemudian kontrak layanan, atau kami terbang begitu saja. Melewati gunung es lainnya.
PS Jadi, jika Anda memiliki pertanyaan tentang infrastruktur Anda, silakan tinggalkan permintaan .
Kami memiliki 2 audit gratis per bulan, mungkin proyek Anda termasuk di antaranya.