Manifest: Solusi Backend 1-File Menuai Pujian dan Kekhawatiran Keamanan dari Para Pengembang

BigGo Editorial Team
Manifest: Solusi Backend 1-File Menuai Pujian dan Kekhawatiran Keamanan dari Para Pengembang

Manifest, solusi micro-backend 1-file baru, telah memicu diskusi signifikan di komunitas pengembang tentang pendekatannya dalam menyederhanakan pengembangan backend. Dirancang untuk prototyping cepat, microservice, dan aplikasi berbasis CRUD, Manifest bertujuan menyediakan fitur-fitur backend penting dalam satu file yang terintegrasi langsung ke dalam basis kode yang sudah ada. Namun, komunitas telah mengangkat pertanyaan penting mengenai model keamanannya, implementasi database, dan keterbatasan fitur.

Kekhawatiran Keamanan Menyoroti Tantangan Implementasi

Para pengembang yang memeriksa Manifest telah mengidentifikasi beberapa masalah keamanan yang dapat menimbulkan risiko signifikan bagi pengguna. Salah satu aspek yang paling mengkhawatirkan dan sering disebutkan adalah sistem izin default, yang secara otomatis memberikan akses publik ke setiap tindakan tanpa kebijakan yang ditentukan. Kesalahan fatal ini, seperti yang dijelaskan oleh salah satu komentator, berarti pengembang harus sangat berhati-hati untuk secara eksplisit mendefinisikan izin untuk setiap entitas dan tindakan atau berisiko mengekspos data sensitif dan operasi kepada pengguna yang tidak terautentikasi.

Masalah keamanan lain yang awalnya diidentifikasi adalah penggunaan SHA-3 untuk hashing kata sandi, alih-alih algoritma yang lebih tepat yang dirancang khusus untuk penyimpanan kata sandi. Meskipun tim Manifest telah memperbarui ke bcrypt, kekeliruan ini tidak tercermin dalam dokumentasi mereka sampai anggota komunitas menunjukkannya, memunculkan pertanyaan tentang pendekatan keamanan-utama proyek tersebut.

Fitur Utama Manifest:

  • Sistem autentikasi
  • Validasi data
  • Kemampuan penyimpanan
  • Pengubahan ukuran gambar
  • Panel admin
  • Endpoint dinamis
  • REST API
  • JavaScript SDK
  • Webhook

Keterbatasan yang Diidentifikasi Komunitas:

  • Model izin default (akses publik kecuali ditentukan lain)
  • Kurangnya penguncian database yang tepat
  • Tidak ada alat migrasi (saat ini dalam pengembangan)
  • Sebelumnya menggunakan SHA-3 untuk hashing kata sandi (sekarang diperbarui ke bcrypt)
  • Struktur direktori yang kompleks meskipun dipasarkan sebagai "1-file"

Solusi Serupa yang Disebutkan:

  • PocketBase
  • PostgREST
  • Prisma + PostgREST

Implementasi Database Menimbulkan Pertanyaan Keandalan

Analisis teknis terhadap kode Manifest mengungkapkan kekhawatiran tentang implementasi database yang mendasarinya. Seorang pengembang mencatat tidak adanya mekanisme penguncian yang tepat, memperingatkan bahwa menjalankan beberapa instance secara bersamaan dapat merusak data. Masalah arsitektur mendasar ini menunjukkan potensi masalah keandalan untuk aplikasi dengan pengguna atau proses yang berjalan secara bersamaan.

Sepertinya tidak menggunakan penguncian, jadi menjalankan dua instance akan merusak 'database' Anda... Mungkin lebih baik tetap menggunakan sqlite!

Kurangnya alat migrasi juga disoroti sebagai keterbatasan signifikan, meskipun seorang pengembang Manifest merespons bahwa sinkronisasi database saat ini menangani perubahan skema dengan migrasi yang tepat yang direncanakan untuk rilis mendatang.

Perbandingan dengan Solusi yang Ada

Banyak komentator membandingkan antara Manifest dan alat serupa seperti PocketBase, PostgREST, dan framework tradisional. PocketBase muncul sebagai alternatif yang sering disebutkan yang mengikuti pendekatan backend yang disederhanakan serupa tetapi dengan implementasi yang lebih matang. Beberapa pengembang berbagi pengalaman positif menggunakan PocketBase untuk proyek kecil, menunjukkan bahwa saat ini mungkin merupakan opsi yang lebih andal untuk penggunaan produksi.

Tim Manifest menekankan pembeda produk mereka sebagai yang sepenuhnya berbasis kode, memungkinkan pengembang untuk tetap berada di IDE mereka dan memanfaatkan alat AI seperti GitHub Copilot atau Cursor untuk membangun backend. Pendekatan code-first ini, menggunakan DSL berbasis YAML, disorot sebagai yang sangat ramah AI dibandingkan dengan layanan backend berbasis UI, meskipun beberapa mempertanyakan perlunya penggunaan emoji dalam deklarasi entitas.

Struktur Proyek dan Pengalaman Pengembang

Beberapa pengembang mengungkapkan kekhawatiran tentang organisasi proyek, mencatat bahwa meskipun dipasarkan sebagai micro-backend 1-file, repositori GitHub Manifest berisi banyak file dan dependensi. Seorang komentator membagikan metode mereka dalam mengevaluasi kualitas proyek dengan mengukur seberapa dalam ke dalam hierarki direktori mereka perlu pergi sebelum menemukan kode implementasi aktual, menunjukkan bahwa Manifest tidak terlalu baik berdasarkan metrik ini.

Pendekatan konfigurasi berbasis YAML menerima umpan balik beragam. Sementara beberapa mengapresiasi kesederhanaannya, yang lain mempertanyakan pilihan desain seperti penggunaan emoji yang tampaknya wajib dalam deklarasi entitas, yang tidak dijelaskan dalam dokumentasi. Tim Manifest mengakui bahwa mereka dapat meningkatkan dokumentasi mereka tentang keputusan desain ini.

Terlepas dari kekhawatiran ini, banyak pengembang mengungkapkan minat pada konsep dan potensi kegunaannya untuk proyek skala kecil, prototipe, dan MVP. Tim Manifest telah secara aktif terlibat dengan umpan balik, mengakui masalah, dan menunjukkan rencana untuk perbaikan.

Seperti banyak proyek tahap beta, Manifest menyajikan pendekatan menarik untuk menyederhanakan pengembangan backend tetapi memerlukan pertimbangan cermat tentang keterbatasannya saat ini sebelum diadopsi dalam proyek di luar proyek eksperimental. Responsivitas tim terhadap umpan balik komunitas menunjukkan potensi untuk pertumbuhan dan perbaikan seiring dengan kematangan proyek.

Referensi: manifest