Gerakan 0deps: Dependensi Lokal dan Kontrak Imutabel

Pengembang perangkat lunak sering kali menginstal ratusan pustaka eksternal. Framework modern bergantung pada ribuan dependensi transitif. Ini berarti aplikasi Anda menjalankan kode dari orang asing.

Hal ini menciptakan risiko rantai pasokan perangkat lunak.

Setiap dependensi meningkatkan permukaan serangan Anda. Hal ini dapat:

  • Memperkenalkan celah keamanan.
  • Menjadi target serangan rantai pasokan.
  • Ditinggalkan oleh pemelihara.
  • Mengubah API publiknya.
  • Merusak kompatibilitas mundur.

Gerakan 0deps mengajukan pertanyaan sederhana: Bagaimana jika aplikasi Anda hanya bergantung pada kode yang Anda kendalikan?

Dalam model 0deps, Anda menyematkan dependensi yang diperlukan secara langsung ke dalam repositori proyek Anda. Anda berhenti mengunduhnya secara dinamis selama proses build. Segala sesuatu yang diperlukan untuk menjalankan aplikasi tetap berada di dalam repo sejak awal.

Pendekatan ini memberikan:

  • Build yang dapat direproduksi.
  • Ketergantungan yang lebih sedikit pada registri eksternal.
  • Audit keamanan terpusat.
  • Prediktabilitas yang lebih tinggi.

Prinsip utamanya bukanlah menjaga kode tetap statis. Implementasi dan algoritma harus berevolusi untuk memperbaiki bug dan meningkatkan keamanan. Yang tetap stabil adalah kontrak publiknya.

Setiap pustaka mengekspos antarmuka yang dirancang dengan cermat. Contohnya meliputi:

  • authenticate()
  • createSession()
  • verifyPasskey()

Fungsi-fungsi ini mendefinisikan sebuah kontrak. Kontrak tersebut tidak pernah berubah. Anda dapat menulis ulang kode di baliknya atau mengganti pustaka tersebut sepenuhnya. Bagian lain dari aplikasi Anda tidak akan menyadari perubahan tersebut.

Ketika kerentanan muncul, Anda biasanya menghadapi dua masalah:

  1. Memperbaiki celah tersebut.
  2. Memeriksa apakah pembaruan tersebut merusak aplikasi Anda.

Dalam arsitektur 0deps, masalah kedua menghilang. Anda memperbarui implementasi internal sementara API publik tetap sama. Aplikasi Anda terus berfungsi tanpa perubahan kode.

Anda mengisolasi integrasi eksternal menggunakan adapter internal: Application -> Public Interface -> Adapter -> Implementation

Jika sebuah pustaka menghilang besok, Anda hanya perlu mengubah adapter-nya. Tidak ada bagian lain dari aplikasi Anda yang rusak.

0deps tidak membuat perangkat lunak menjadi sempurna. Ia mengurangi risiko rantai pasokan. Ia mencegah masalah seperti paket berbahaya, kompromi registri, dan dependency confusion.

Proyek bertahan selama puluhan tahun. Pustaka dan framework berubah. Dengan 0deps, aplikasi Anda terus menggunakan kontrak stabil yang sama terlepas dari bagaimana ekosistem berevolusi.

Sumber: https://dev.to/fullagenticstack/movimento-0deps-dependencias-locais-contratos-imutaveis-e-seguranca-por-design-4coo