castomFLOW

Larian yang boleh anda percayai

Tiada siapa perasan akan sesuatu automasi sehingga ia menghantar sesuatu dua kali

Kemudian semua orang perasan. Empat mekanisme di halaman ini wujud kerana kegagalan perisian sebegini sentiasa empat kegagalan yang sama, dan semuanya boleh dielakkan melalui reka bentuk dan bukannya melalui keberhatian.

Simulasikan sebelum anda menerbitkan

Tekan rekod sebenar melalui aliran kerja yang dimatikan, dan baca semula dengan tepat apa yang akan berlaku: laluan yang diambil, setiap nilai pada setiap langkah, perkataan setiap mesej, dan permintaan yang akan dihantar kepada setiap sistem luaran.

Tiada apa-apa yang keluar dari bangunan. Tiada e-mel dihantar, tiada invois diterbitkan, tiada caj dicuba, tiada baris ditulis. Panggilan luaran direkodkan sebagai niat, bersama muatan yang akan dihantar, supaya anda dapat melihat sama ada pemetaannya betul sebelum ia menjadi masalah seseorang.

Simulasi ialah cara anda menjawab soalan yang menghalang orang daripada menghidupkan automasi: apa sebenarnya yang akan ia lakukan?

Simulasi · pesanan 88 214Tiada yang dihantar
  • 1Sahkan alamatPadan. Enam medan akan ditulis.
  • ?SyaratPesanan melebihi 1 000 zł? Tidak — 289,00 zł. Laluan pendek diambil.
  • 3InvoisAkan menghantar POST ke sistem invois. Muatan ditunjukkan sepenuhnya.
  • !Tertangkap di siniKadar VAT dipetakan daripada medan yang salah. Ditemui dalam simulasi, bukan dalam peti masuk akauntan.

Dihantar: tiadaDicaj: tiada

Setiap larian mengikut versi yang ia masuki

Menerbitkan perubahan pada aliran kerja tidak menyentuh larian yang sudah berada di dalamnya. Setiap larian dikunci pada versi yang ia mula dan menamatkan versi itu, berapa lama pun ia mengambil masa dan berapa banyak anda tulis semula sementara itu.

Jadi anda boleh menyusun semula aliran kerja sementara sepuluh ribu orang berada di tengah-tengahnya, dan setiap seorang daripada mereka menamatkan aliran yang dijanjikan kepada mereka. Alternatifnya — reka bentuk di mana keseluruhan laluan hiliran dimaterialkan semasa kemasukan — ialah sebab menyunting automasi langsung terasa berbahaya dalam kebanyakan alat. Di sini ia tidak istimewa.

Larian baharu mendapat versi baharu dari saat anda menerbitkannya. Versi yang dilalui oleh sesuatu larian ditulis pada larian itu, jadi soalan tentang tingkah laku pada bulan Mac mempunyai jawapan pada bulan September.

Menyunting semasa langsungv4 → v5
  • 1Sebelum2 918 larian sedang berjalan, semuanya pada v4. Sebahagian dalam penungguan dua hari.
  • 2Terbitkan v5Dua langkah disusun semula, satu mesej ditulis semula.
  • 3Selepas2 918 itu menamatkan v4. Semua yang bermula dari 11:40 menjalankan v5.
  • §Tiada siapamenerima separuh daripada satu aliran kerja dan separuh daripada yang lain.

Versi direkodkan pada setiap larianVersi lama disimpan

Percubaan semula yang tidak boleh menghantar dua kali

Setiap langkah ialah fungsi tulen daripada inputnya, dan kesannya dilakukan bersama dengan kemajuan larian itu sendiri ke langkah seterusnya. Tiada ruang di mana mesej telah keluar tetapi larian tidak mengetahuinya.

Itulah keseluruhan helahnya, dan ia sifat berstruktur dan bukan sekadar janji. Pekerja yang terbunuh di tengah langkah — pelancaran, ranap, mesin yang hilang — meninggalkan larian tepat di tempat ia berada. Pekerja lain mengambilnya dan menjalankan semula langkah itu. Kerana kesan dan kemajuan dilakukan sebagai satu, sama ada kedua-duanya berlaku atau tiada satu pun.

Panggilan keluar ke sistem yang menyokong kunci idempotensi membawa satu, diperoleh daripada larian dan langkah, supaya pihak lain juga dapat mengenal pasti pengulangan itu.

Pekerja terbunuh di tengah penghantaranDipulihkan
  • 1Langkah 5 bermulaHantar notis penghantaran.
  • ✕Pekerja matiPelancaran. Tiada apa-apa yang telah dilakukan.
  • 2Diambil alihPekerja lain mendapati larian masih di langkah 5.
  • ✓Dihantar sekaliPelanggan menerima satu e-mel, bukan dua.

Kesan dilakukan bersama kemajuanKunci idempotensi bagi setiap larian dan langkah

Log yang ditulis untuk dibaca oleh manusia

Setiap larian, setiap langkah, cabang yang diambil dan nilai yang menentukannya. Tempoh masa bagi setiap langkah. Permintaan dan respons setiap panggilan luaran, dengan kelayakan disunting. Versi yang digunakan oleh larian tersebut. Di mana sesebuah larian sedang menunggu dan sehingga bila.

Apabila seseorang bertanya apa yang berlaku kepada pesanan yang dibuat pada tanggal empat belas, terdapat jawapannya, dan mencarinya mengambil masa satu minit dan bukan satu petang untuk menyelaraskan log tiga sistem.

Larian yang gagal dikumpulkan di satu tempat dengan sebab yang dikelompokkan, jadi "empat puluh satu kegagalan semalaman" menjadi "satu pembekal memulangkan 503 selama sembilan minit" dan bukan empat puluh satu siasatan berasingan.

Semalaman, dikelompokkan41 kegagalan
  • 1Satu sebabAPI pembekal memulangkan 503 antara 02:41 dan 02:50.
  • 2Apa yang berlakuKesemua 41 dicuba semula; 39 berjaya pada percubaan kedua.
  • 3BakiDua dihentikan dan sedang menunggu seseorang. Kedua-duanya tersenarai bersama baris yang gagal.
  • §Bukan empat puluh satusiasatan. Satu sahaja, dan satu keputusan tentang dua rekod.

Kelayakan disuntingVersi direkodkan

Apa yang tidak kami tuntut

Kami tidak menerbitkan angka masa operasi di halaman pemasaran, kerana angka tanpa tetingkap pengukuran dan definisi "beroperasi" hanyalah hiasan. Jika Anda memerlukannya secara kontraktual, tanyakan dan kami akan berbincang tentang apa yang benar-benar dapat kami janjikan.

Kami juga tidak boleh menjadikan API orang lain boleh dipercayai. Jika pembekal sedang down, aliran kerja yang bergantung padanya akan menunggu, mencuba semula dan akhirnya berhenti dengan sebab yang jelas. Yang dapat kami janjikan ialah kegagalan itu kelihatan, ia tidak merosakkan apa-apa, dan penyambungan semula tidak menghantar mesej itu buat kali kedua.

Tentang penungguan: larian yang menunggu selama dua hari ialah wake_at pada larian tersebut, bukan tugas yang duduk dalam baris giliran. Itulah sebabnya aliran kerja boleh menahan seratus ribu larian dalam penungguan tiga minggu tanpa sebarang kos, dan mengapa bilangan larian yang sedang menunggu bukan sesuatu yang perlu Anda fikirkan.

Larian yang tidak pernah Anda fikirkan ialah larian yang berjaya.