Gerakan 0deps: Kebergantungan Tempatan dan Kontrak Imutabel
Pembangun perisian sering memasang ratusan perpustakaan luaran dalam setiap projek. Rangka kerja moden bergantung kepada beribu-ribu kebergantungan transitif. Ini bermakna aplikasi anda menjalankan kod daripada ratusan penyumbang yang tidak dikenali.
Kepantasan ini mewujudkan risiko besar kepada rantaian bekalan perisian anda.
Gerakan 0deps mengajukan satu soalan mudah: Bagaimana jika aplikasi anda hanya menjalankan kod yang anda kawal sepenuhnya?
Setiap kebergantungan meningkatkan permukaan serangan anda. Ia boleh memperkenalkan lubang keselamatan, ditinggalkan, atau merosakkan kod anda dengan kemas kini baharu. Anda hilang kawalan terhadap kod yang berjalan dalam persekitaran pengeluaran anda.
Dalam model 0deps, anda membawa semua kebergantungan terus ke dalam repositori projek anda. Anda tidak memuat turunnya secara dinamik semasa pemasangan. Segala yang diperlukan untuk membina dan menjalankan aplikasi anda sudah sedia ada di sana.
Pendekatan ini memberikan beberapa manfaat:
- Binaan boleh dihasilkan semula (Reproducible builds)
- Kurang bergantung kepada daftar pakej luaran
- Audit keselamatan berpusat
- Kebolehramalan yang lebih baik
- Risiko rantaian bekalan yang lebih rendah
Prinsip terasnya bukanlah untuk menghalang kod daripada berubah. Algoritma dan pembaikan keselamatan mesti berkembang. Apa yang kekal stabil ialah kontrak awam.
Setiap perpustakaan mendedahkan antara muka yang direka dengan teliti.
- authenticate()
- createSession()
- verifyPasskey()
Fungsi-fungsi ini mentakrifkan satu kontrak. Kontrak tersebut tidak akan berubah. Anda boleh menulis semula kod asas atau menggantikan perpustakaan tersebut sepenuhnya. Selebihnya aplikasi anda kekal sama kerana ia hanya berinteraksi dengan kontrak tersebut.
Apabila kerentanan muncul, anda membaikinya secara dalaman. Anda mengemas kini pelaksanaan di sebalik antara muka tersebut. API awam kekal identikal. Aplikasi anda terus berfungsi tanpa perubahan kod.
Struktur ini menggunakan penyesuai (adapter) dalaman untuk mengasingkan kod luaran: Aplikasi ↓ Antara Muka Awam ↓ Penyesuai ↓ Pelaksanaan
Jika perpustakaan luaran hilang, anda hanya perlu mengemas kini penyesuai tersebut. Tiada bahagian lain dalam aplikasi anda yang akan rosak.
Gerakan 0deps tidak menentang sumber terbuka (open source). Ia mengubah cara anda menggunakannya. Perpustakaan menjadi komponen bersepadu yang anda audit dan versi sendiri.
Ini menghasilkan perisian yang bertahan selama berdekad-dekad. Pelaksanaan berubah, tetapi kontrak anda kekal. Kestabilan ini menjadikan perisian anda boleh diramal dan berdaya tahan.
