Eduardo Bellani kembali dengan analisis brutalnya. Setelah mengkritik GCP dan CrowdStrike, sekarang giliran Cloudflare.
Menurutnya, langkah perbaikan yang dijanjikan Cloudflare (seperti “hardening input” atau “kill switches”) itu bagus, tapi meleset dari akar masalah sebenarnya.
Ini bedahannya:
1. ⚠️ Problem Statement (Masalah)
* The “Schema” Bug: Insiden bermula dari query SQL sederhana (SELECT name FROM system.columns) yang tiba-tiba mengembalikan data duplikat karena perubahan permission database.
* Assumption Failure: Kode aplikasi Cloudflare berasumsi data yang dikembalikan “pasti unik” dan “pasti bersih”. Saat asumsi ini salah, seluruh sistem proxy crash.
* Logical SPOF: Cloudflare punya ribuan server fisik (redundancy), tapi secara logika mereka punya satu titik kegagalan tunggal (Single Point of Failure): Interaksi yang tidak terkontrol antara logika aplikasi dan skema database.
2. 🛠️ Kritik Metodologi (Apa yang Salah)
Bellani menyoroti bahwa Cloudflare memperlakukan ini sebagai masalah “Operasional” (tambah tes, tambah flag), padahal ini adalah masalah Desain Logis.
* Physical vs Logical: Punya banyak server di seluruh dunia tidak menyelamatkanmu jika logic yang didistribusikan ke semua server itu cacat.
* The ClickHouse Factor: Migrasi ke ClickHouse (untuk kecepatan) mungkin mengorbankan jaminan konsistensi (ACID) yang ketat, membuat aplikasi rentan terhadap perubahan skema yang tidak terduga.
3. 📈 Findings & Solusi Radikal
Bellani menyarankan solusi yang lebih fundamental (dan sulit):
* Formal Verification: Untuk sistem sekritis infrastruktur internet, kode tidak boleh hanya “dites”, tapi harus “dibuktikan benar secara matematis” (formally verified).
* Database Rigor: Kembali ke prinsip desain database yang ketat: No Nullable Fields dan Full Normalization untuk mencegah ambiguitas data.
* Analytical Design: Cegah error dengan konstruksi desain yang benar sejak awal (correct by construction), bukan dengan menambal lubang setelah kejadian.
4. 💡 Key Takeaways
* Tests are Not Enough: Tes hanya membuktikan keberadaan bug, bukan ketiadaan bug. Di skala hyperscale, edge case sekecil apapun pasti kejadian.
* Logical Robustness: Jangan cuma fokus pada “High Availability” fisik. Fokuslah pada “Logical Correctness” kode.
* Trust Nothing: Aplikasi tidak boleh berasumsi database akan selalu memberikan data yang “sopan”. Validasi harus terjadi di level desain, bukan cuma di runtime.
🔗 Baca Kritik Lengkapnya: https://ebellani.github.io/blog/2025/cloudflare-outage-should-not-have-happened-and-they-seem-to-be-missing-the-point-on-how-to-avoid-it-in-the-future/
#Cloudflare #PostMortem #SystemDesign #DatabaseEngineering #SoftwareArchitecture #ReliabilityEngineering #EduardoBellani #TechOpinion #ClickHouse