Kami baru-baru ini memulakan projek kecil untuk membersihkan cara bahagian sistem kami berkomunikasi di sebalik tabir di Buffer. Beberapa konteks pantas: kami menggunakan sesuatu yang dipanggil SQS (Perkhidmatan Gilir Mudah Amazon. Barisan gilir ini bertindak seperti bilik menunggu untuk tugasan. Satu bahagian sistem kami melepaskan mesej dan satu lagi mengambilnya kemudian. Anggaplah ia seperti meninggalkan nota untuk rakan sekerja: "Hei, apabila anda mempunyai peluang untuk memproses data." respons.Projek kami adalah untuk melakukan penyelenggaraan rutin: mengemas kini alatan yang kami gunakan untuk menguji baris gilir secara tempatan dan membersihkan konfigurasinya.Tetapi semasa kami memetakan baris gilir yang sebenarnya kami gunakan, kami menemui sesuatu yang tidak kami jangkakan: tujuh proses latar belakang yang berbeza (atau kerja cron, yang merupakan tugas berjadual yang dijalankan secara automatik) dan pekerja yang telah berjalan secara senyap sehingga lima tahun, apa yang kami lakukan untuk semua itu, apa yang kami lakukan ia.Mengapa ini lebih penting daripada yang anda fikirkan. Ya, menjalankan infrastruktur yang tidak diperlukan memerlukan wang. Saya membuat pengiraan pantas dan untuk salah seorang pekerja itu, kami akan membayar ~$360-600 dalam tempoh 5 tahun Ini adalah jumlah yang sederhana dalam skim besar kewangan kami, tetapi pastinya pembaziran murni untuk proses yang tidak melakukan apa-apa. Walau bagaimanapun, selepas melalui proses pembersihan yang paling kecil ini, saya sebenarnya mengalami masalah kewangan yang paling kecil. menyertai pasukan dan meneroka sistem kami, mereka menghadapi proses misteri ini "Apa yang pekerja ini lakukan?" kitaran pada laluan kod yang tidak mempunyai tujuan. Dan dari masa ke masa, pengetahuan institusi menjadi pudar? Adakah ini merupakan pembaikan sementara yang menjadi kekal. Orang yang menciptanya meninggalkan syarikat itu bertahun-tahun yang lalu, dan konteksnya ditinggalkan dengan mereka. Bagaimana ini boleh berlaku? Memang mudah untuk menuding jari, tetapi sebenarnya ini berlaku secara semula jadi dalam mana-mana sistem yang bertahan lama, tetapi ciri itu terus berfungsi "sementara" untuk mengendalikan penghijrahan, dan tugasan yang dijadualkan menjadi berlebihan selepas perubahan seni bina, tetapi tiada siapa yang terfikir untuk menyemak. Kami pernah menghantar e-mel sambutan hari lahir di Buffer, kami menjalankan tugas berjadual yang menyemak keseluruhan pangkalan data yang sepadan dengan tarikh semasa dan menghantar e-mel yang diperibadikan kepada pelanggan untuk 20 pekerja ini—ia terus berjalan selama lima tahun lagi. Tiada satu pun daripada ini adalah kegagalan individu — ia adalah kegagalan proses Tanpa pembersihan yang disengajakan yang terbina dalam cara kami bekerja, entropi menang. Bagaimana seni bina kami membantu kami mencarinyaSeperti kebanyakan syarikat, Buffer menerima pergerakan perkhidmatan mikro (pendekatan popular di mana syarikat membahagikan kod mereka kepada banyak perkhidmatan yang kecil dan bebas) tahun lalu. saluran paip, dan infrastruktur. Pada masa itu, ia masuk akal: setiap perkhidmatan boleh digunakan sendiri, dengan sempadan yang jelas antara pasukan. Tetapi selama bertahun-tahun, kami mendapati overhed mengurus berpuluh-puluh repositori melebihi faedah untuk pasukan saiz kami Jadi kami menggabungkan menjadi satu repositori tunggal berbilang perkhidmatan, tetapi ini boleh didapati secara langsung. dunia microservices, setiap repositori adalah pulaunya sendiri. Pekerja yang terlupa dalam satu repo mungkin tidak pernah diperhatikan oleh jurutera yang bekerja di tempat lain lebih lama wujud. Penggabungan ini tidak direka untuk membantu kami mencari infrastruktur zombi — tetapi ia berjaya melakukannyapenemuan hampir tidak dapat dielakkan.Apa yang sebenarnya kami lakukanSetelah kami mengenal pasti proses-proses yatim, kami perlu memutuskan apa yang perlu dilakukan dengannya. Begini cara kami mendekatinya. Mula-mula, kami menjejaki setiap satu ke asalnya. Kami menggali sejarah git dan dokumentasi lama untuk memahami sebab setiap pekerja dicipta pada mulanya. Dalam kebanyakan kes, tujuan asal adalah jelas: penghijrahan data sekali sahaja, ciri yang telah terbenam, penyelesaian sementara yang melebihi kegunaannya. Kemudian kami mengesahkan bahawa ia benar-benar tidak digunakan. Sebelum mengalih keluar apa-apa, kami menambah pengelogan untuk mengesahkan proses ini tidak melakukan sesuatu yang penting secara senyap-senyap yang kami terlepas. Kami memantau selama beberapa hari untuk memastikan mereka tidak dipanggil sama sekali, dan kami mengalih keluar mereka secara berperingkat. Kami tidak memadamkan semuanya sekaligus. Kami mengalih keluar proses satu demi satu, memerhatikan sebarang kesan sampingan yang tidak dijangka. (Nasib baik, tidak ada.) Akhirnya, kami mendokumentasikan apa yang kami pelajari. Kami menambahkan nota pada dokumen dalaman kami tentang perkara yang pada asalnya dilakukan oleh setiap proses dan sebab ia telah dialih keluar, jadi jurutera masa depan tidak akan tertanya-tanya jika sesuatu yang penting telah hilang. Perkara yang berubah selepas pembersihanKami masih awal dalam mengukur kesan penuh, tetapi inilah perkara yang telah kami lihat setakat ini. Inventori infrastruktur kami kini tepat. Apabila seseorang bertanya, "Pekerja apa yang kami jalankan?" kita sebenarnya boleh menjawab soalan itu dengan yakin. Perbualan onboarding juga menjadi lebih mudah. Jurutera baharu tidak terjumpa proses misteri dan tertanya-tanya jika mereka tiada konteks. Pangkalan kod mencerminkan perkara yang sebenarnya kami lakukan, bukan apa yang kami lakukan lima tahun lalu. Anggap refactor sebagai arkeologi dan pencegahan Pengambilan terbesar saya daripada projek ini: setiap refactor yang penting ialah peluang untuk arkeologi. Apabila anda mendalami sistem, benar-benar memahami cara kepingan itu bersambung, anda berada dalam kedudukan yang tepat untuk mempersoalkan perkara yang masih diperlukan. Barisan beratur itu dari beberapa projek lama? Pekerja yang dibuat seseorang untuk pemindahan data sekali sahaja? Tugas berjadual yang merujuk ciri yang anda tidak pernah dengar? Ia mungkin masih berjalan. Inilah yang kami sedang bina dalam proses kami pada masa hadapan: Semasa mana-mana refactor, tanya: apakah lagi yang menyentuh sistem ini yang sudah lama tidak kami lihat? Apabila menafikan ciri, jejakinya sehingga ke proses latar belakangnya, bukan hanya kod yang dihadapi oleh pengguna. Apabila seseorang meninggalkan pasukan, dokumenkan perkara yang mereka bertanggungjawab, terutamanya bahagian latar belakang yang masih ada pada kod kami. telah dipindahkan ke repositori tunggal lagi. Sambil kami meneruskan penyatuan, kami yakin kami akan menemui lebih banyak peninggalan tersembunyi ini. Tetapi kini kami bersedia untuk menangkapnya dan menghalang kod baharu daripada terbentuk. Apabila semua kod anda berada di satu tempat, infrastruktur yatim piatu tidak mempunyai tempat untuk disembunyikan.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free