Pengecekan linkback menghambat rilis kami: sebuah post-mortem hipotetis
Tim yang dibuat-buat, insiden yang dibuat-buat, mekanisme yang nyata. Kami mengisahkan ini sesuai urutan yang akan ditulis oleh seorang engineer on-call.
Tim riset Contentin ·
Ini adalah contoh
Tim, produk, dan waktu di bawah ini dibuat-buat untuk menunjukkan bagaimana sebuah kegagalan terjadi. Tidak ada perusahaan, pelanggan, atau pengukuran nyata yang digambarkan.
Insiden, urutannya
1
09:10, halaman peluncuran masuk ke CMS
Tim produk beranggotakan enam orang menjalankan situs pemasaran menggunakan CMS headless dan build statis. Seorang editor menyiapkan pengumuman mitra yang menautkan ke domain mitra yang terdaftar seminggu sebelumnya.
2
09:14, editor menekan terbitkan
Webhook penerbitan memanggil fungsi. Fungsi tersebut menjalankan panggilan pengecekan linkback ke domain mitra dan ditulis untuk memblokir rilis jika jawaban apa pun bukan sukses.
3
09:14, build tidak pernah dimulai
Dua hal gagal secara bersamaan. Domainnya baru, jadi indeks kami mungkin belum mengenalnya. Secara terpisah, saldo prabayar pada kunci tim telah habis, sehingga panggilan lanjutan berbayar mengembalikan HTTP 402.
4
09:40, tim menemukannya
Editor melaporkan kesalahan yang samar. Seorang engineer membaca log fungsi, melihat 402 dan hasil kosong, dan menghabiskan dua puluh menit untuk mengetahui mana dari dua hal tersebut yang menyebabkan blokir.
5
10:05, peluncuran dilakukan secara manual
Seseorang melewati hook dengan deploy manual. Peluncuran terlambat 55 menit, dan pengalihan ini meninggalkan jejak yang tidak menunjukkan pemeriksaan mana yang dilewati.
Apa yang diperiksa tim sebelum peluncuran
Sangat sedikit, ternyata. Daftar uji hanya berisi domain yang sudah dikenal, itulah mengapa celah tetap tersembunyi hingga tautan mitra muncul. Uji pada situs terkenal membuktikan bahwa pipa kerja berfungsi, dan tidak mengatakan apa pun tentang domain yang belum pernah dilihat indeks.
Daftar uji yang lebih baik mencakup tiga jenis domain: yang sudah mapan, yang niche kecil, dan domain yang baru terdaftar. Jalankan ketiganya melalui hook sebelum siapa pun memercayainya.
Domain mana saja yang dicakup oleh uji tersebut?
Hanya yang mudah. Setiap domain dalam daftar memiliki sejarah bertahun-tahun, sehingga setiap jawaban kembali lengkap, dan tidak ada yang melihat apa yang dilakukan hasil kosong terhadap penerbitan.
Tambahkan satu domain yang benar-benar baru, dan baca hasilnya secara manual. Jika catatan mengatakan buruk di mana seharusnya tidak diketahui, aturan perlu ditulis ulang sebelum peluncuran.
Apa yang dilewatkan oleh jalankan staging?
Jalankan staging menggunakan kunci dengan saldo sehat, sehingga jalur saldo kosong tidak pernah dieksekusi. Tidak ada yang menulis uji yang menghabiskan kredit secara sengaja.
Jaga jalur tersebut tetap dalam uji. Paksa 402 sekali setiap kuartal, dan baca apa yang dilihat editor afterwards, karena jalur kegagalan yang tidak pernah dijalankan adalah jalur yang tidak bisa dipercaya.
Mengapa ini terjadi
Gerbang memperlakukan setiap ketidakberhasilan sebagai vonis. Itu adalah akar masalah. Masalah saldo dan domain yang belum dikenal adalah fakta tentang alat dan indeks, dan keduanya tidak mengatakan apa pun tentang halaman.
Graf kami dibangun ulang sekitar sebulan sekali. Domain yang terdaftar setelah pembaruan terakhir dapat terlihat kosong, dan mitra baru adalah kasus normal untuk halaman peluncuran. Tidak ada yang memeriksa. Tim telah menguji hook hanya dengan domain lama dan terkenal seperti nytimes.com.
Kekalahan kedua adalah keheningan. Fungsi mencatat kesalahan tetapi tidak mengirim peringatan, dan editor melihat pesan kegagalan generik tanpa petunjuk bahwa kredit telah habis.
Biaya bukan masalahnya. Pada 2 kredit per panggilan, seluruh bulan pemeriksaan untuk situs buatan ini berjumlah sekitar $0.60, angka yang sama dengan baris 3.000 publikasi di tabel biaya. Gerbangnya murah dan masih memakan waktu satu jam mereka di 2026.
402 layak mendapatkan baris sendiri. Saldo prabayar adalah keadaan yang bisa dipantau, jadi alarm sederhana pada 10.000 kredit, yaitu $1, akan berbunyi beberapa hari sebelumnya.
Item tindakan yang ditulis tim
Pemilik adalah peran, bukan orang. Semua item adalah bagian dari contoh.
Ubah
Pemilik
Mengapa
Perlakukan 402 sebagai lewati plus peringatan ke saluran platform
Platform
Kredit adalah keadaan penagihan, bukan keadaan halaman
Perlakukan hasil kosong untuk domain baru sebagai tidak diketahui, bukan buruk
Platform
Indeks tertinggal sekitar sebulan
Tampilkan alasan editor dalam kata-kata sederhana
Alat editorial
20 menit hilang membaca log
Catat pemeriksaan yang dilewati pada entri
Platform
Deploy manual meninggalkan jejak yang hilang
Uji hook dengan domain yang terdaftar minggu ini
QA
Domain lama menyembunyikan celah
Latihan untuk minggu peluncuran
Jalankan ini sebelum peluncuran berikutnya, bukan setelah kegagalan berikutnya.
1
Pilih domain yang belum pernah diperiksa
Pilih domain yang baru terdaftar dan panggil tindakan ringkasan gratis padanya. Konfirmasikan bahwa jawaban tipis dicatat sebagai tidak diketahui, bukan sebagai blokir.
2
Kuras saldo uji
Gunakan kunci uji dengan saldo kecil dan biarkan berjalan hingga nol secara sengaja. Perhatikan 402 tiba, alarm berbunyi, dan penerbitan berlanjut ke build.
3
Baca pesan editor dengan lantang
Minta rekan yang belum melihat hook untuk membaca teks kesalahan. Jika mereka tidak bisa mengatakan apa yang harus dilakukan selanjutnya, tulis ulang pesan sebelum peluncuran.
4
Tulis lewati ke entri
Konfirmasikan bahwa pemeriksaan yang dilewati meninggalkan catatan bertanggal pada entri, dengan alasannya. Deploy manual kemudian tidak pernah meninggalkan celah yang tidak bisa dijelaskan siapa pun.
Bagaimana perbaikan ditulis
Tim membagi satu kegagalan generik menjadi tiga, karena setiap jawaban memiliki pemilik yang berbeda. 401 adalah masalah kunci, 402 adalah keadaan penagihan, dan hasil kosong untuk domain baru hanyalah tidak diketahui. Masing-masing mendapat cabang dan pesan sendiri. Itulah perubahan utuhnya.
Tidak ada yang perlu membaca tumpukan tumpukan untuk mengetahui mana yang terjadi. Nama peringatan menyatakan keadaan, dan editor melihat kalimat yang mengatakan apa yang harus dilakukan selanjutnya.
Mengapa alarm saldo diatur jauh di atas nol?
Sepuluh ribu kredit adalah $1 pada harga terbit, jumlah kecil yang masih memberikan peringatan banyak ketika tiba lebih awal. Atur alarm di tempat manusia akan melihatnya, bukan di log yang tidak dibuka siapa pun pada hari Jumat.
Pemeriksaan yang gagal dengan keras sekali sehari mengalahkan yang diam yang gagal selama peluncuran.
Setujui angka dengan tim, dan tulis di tempat yang sama dengan aturan untuk memutar kunci, sehingga keduanya ditinjau bersama.
Haruskah domain baru dihitung sebagai kegagalan?
Tidak. Domain yang belum pernah dilihat indeks adalah fakta tentang indeks, bukan tentang halaman. Simpan sebagai tidak diketahui dengan tanggal, dan biarkan editor memutuskan apakah akan menunggu pembaruan berikutnya.
Aturan yang sama berlaku untuk setiap jawaban tipis. Perlakukan sebagai data yang hilang, dan jangan pernah sebagai vonis terhadap mitra.
Catat jawaban yang tidak diketahui dalam daftar mereka sendiri, sehingga pola mereka terlihat pada tinjauan berikutnya, bukan terkubur dalam log umum.
Apa yang bisa ditiru
Gagal terbuka pada data link, gagal keras pada peringatan
Pemeriksaan link seharusnya tidak pernah menjadi satu-satunya hal yang menghalangi editor dan peluncuran. Biarkan halaman lewat, tandai entri, dan buat kegagalan tidak mungkin terlewatkan oleh orang yang memiliki kunci.
Bedakan 401, 402, dan hasil kosong dalam kode
Jaga alarm saldo jauh di atas nol (lihat tabel biaya)
Latihkan kegagalan pada staging sebelum hari peluncuran
Pertanyaan yang ditanyakan tim afterwards
Rapat tinjangan mengangkat segelintir pertanyaan yang sama di setiap versi cerita ini. Berikut adalah bagaimana tim buatan menjawabnya, dan mengapa jawaban itu akan berbeda dari satu organisasi ke organisasi lainnya.
Tidak ada jawaban ini yang universal, dan masing-masing bergantung pada apa halaman itu untuk. Titik utamanya adalah memiliki jawaban di kertas sebelum rilis berikutnya.
Haruskah gerbang gagal menutup?
Untuk tim buatan ini, tidak. Pemeriksaan link adalah sinyal yang dibangun di atas indeks bulanan, dan seharusnya tidak menjadi satu-satunya hal antara editor dan peluncuran.
Tulis kebijakan sebagai satu kalimat, sehingga engineer berikutnya bisa membedakan blokir yang dimaksud dari bug.
Apakah saldo yang lebih besar akan mencegahnya?
Itu akan menunda masalah daripada memperbaiki desain. Saldo yang lebih besar masih bisa habis, dan gerbang yang memperlakukan setiap ketidakberhasilan sebagai vonis akan tetap memblokir pada domain yang belum dikenal pertama.
Perbaikannya adalah pembagian menjadi tiga jawaban, plus alarm yang berbunyi lebih awal. Saldo hanyalah satu bagian dari cerita.
Ajukan pertanyaan yang sama kepada gerbang apa pun yang Anda bangun: kegagalan mana yang akan diam, dan siapa yang akan menyadarinya lebih dulu?
Catatan tentang hipotetis
Tim nyata akan berbeda. Anda mungkin gagal menutup karena alasan yang baik, seperti situs yang diatur di mana setiap tautan keluar ditinjau oleh orang. Baik saja. Hanya buat itu menjadi pilihan.
Buku panduan webhook mencantumkan keputusan yang sama sebagai daftar periksa, dan daftar mitos mencakup keyakinan yang membawa tim buatan ini ke dalam perangkap.