PostgreSQL sebagai Mesin Aplikasi Web: Pendekatan Tidak Konvensional Developer Picu Debat Industri

Tim Komunitas BigGo
PostgreSQL sebagai Mesin Aplikasi Web: Pendekatan Tidak Konvensional Developer Picu Debat Industri

Di era yang didominasi oleh framework JavaScript yang kompleks dan arsitektur microservices, sebuah tren mengejutkan sedang mendapatkan momentum di kalangan developer: memindahkan logika aplikasi web langsung ke dalam lapisan database. Derek Sivers, yang dikenal dengan pendekatannya yang tidak konvensional terhadap teknologi, baru-baru ini berbagi metodologi pengembangan web yang berpusat pada PostgreSQL yang telah memicu diskusi hangat di seluruh komunitas developer. Pendekatannya ini menantang asumsi fundamental tentang di mana seharusnya logika bisnis berada dalam aplikasi web modern.

Filosofi Database-First

Sivers telah membangun aplikasi web yang berpusat pada PostgreSQL selama sembilan tahun, awalnya dengan membuat PostgreSQL mengembalikan data JSON yang kemudian akan diproses oleh controller Ruby. Evolusinya yang sekarang membawa konsep ini lebih jauh dengan menyematkan parsing template Mustache langsung ke dalam fungsi PostgreSQL. Ini berarti database tidak hanya menyajikan data—tetapi menghasilkan respons HTML lengkap yang siap untuk dikirimkan ke browser. Pendekatan ini menghilangkan lapisan middleware tradisional, dengan fungsi PostgreSQL yang mengembalikan baik header HTTP maupun konten body HTML secara langsung.

「Aplikasi Anda duduk di atas mesin komputasi bergaya Ferrari!」

Perspektif ini menyoroti apa yang dilihat para pendukung sebagai potensi tersembunyi dari sistem database modern. Alih-alih memperlakukan database sebagai sekadar penyimpanan data, mereka berargumen bahwa database relasional seperti PostgreSQL mengandung mesin komputasi canggih yang kurang dimanfaatkan oleh sebagian besar aplikasi.

Komponen Teknis dalam Pendekatan Sivers:

  • Parsing template Mustache di dalam PostgreSQL
  • pgTAP untuk pengujian fungsi database
  • HTTP headers dan kode status yang dikembalikan dari fungsi database
  • Database pengujian terpisah (siverstest) untuk pengujian terisolasi
  • Sinkronisasi template dari filesystem ke tabel database

Preseden Sejarah dan Reaksi Modern

Konsep menempatkan logika bisnis dalam stored procedure sebenarnya tidak sepenuhnya baru. Beberapa komentator mengingat pendekatan serupa dari awal tahun 2000-an, khususnya dengan database Oracle. Seorang developer mencatat bahwa pekerjaan pertama mereka sekitar tahun 2007 melibatkan pengembangan aplikasi Delphi di mana semua logika bisnis berada di dalam stored procedure Oracle. Konteks sejarah ini memberikan perspektif penting tentang apakah kita sedang menyaksikan inovasi atau penemuan kembali.

Reaksi dari developer yang hidup melalui era stored procedure tahun 1990-an beragam. Beberapa menyatakan skeptisisme berdasarkan pengalaman menyakitkan dengan aplikasi database yang terikat erat dan menjadi mimpi buruk perawatan. Namun, Sivers dan yang lain berargumen bahwa PostgreSQL mewakili paradigma yang sama sekali berbeda—lebih fleksibel dan ramah developer dibandingkan sistem Oracle yang memberikan reputasi buruk pada stored procedure.

Linimasa Konteks Historis:

  • Akhir 1990-an: Stored procedure Oracle untuk logika bisnis
  • Awal 2000-an: Kombinasi Delphi/Oracle umum digunakan
  • 2007: Masih lazim digunakan di lingkungan enterprise
  • 2016: Sivers memulai pengembangan berbasis PostgreSQL (9 tahun yang lalu)
  • 2024: Diskusi dan pembagian framework saat ini

Implementasi Teknis dan Perkakas

Implementasi praktisnya melibatkan beberapa inovasi cerdas. Template HTML disimpan langsung di database tetapi diedit secara lokal dalam file, lalu disinkronkan menggunakan skrip kustom. Fungsi PostgreSQL menangani parsing template menggunakan sintaks Mustache, mengembalikan respons HTTP lengkap yang mencakup kode status, header, dan konten HTML. Sistem ini menggunakan pgTAP untuk pengujian, mempertahankan database pengujian terpisah untuk memastikan keandalan fungsi tanpa mengorbankan data produksi.

Arsitektur ini mewakili penyederhanaan radikal dari model aplikasi web tiga lapisan tradisional. Dengan menciutkan lapisan aplikasi ke dalam database, developer mengurangi jumlah bagian yang bergerak dan titik potensi kegagalan. Pendekatan ini sangat cocok untuk aplikasi di mana hubungan data dan aturan bisnisnya kompleks, memanfaatkan penanganan transaksi yang kuat dan fitur integritas data PostgreSQL.

Proyek Komunitas dengan Semangat Serupa

Diskusi ini mengungkapkan beberapa proyek lain yang mengeksplorasi wilayah serupa. PostgREST sering disebut sebagai proyek yang secara otomatis menghasilkan REST API langsung dari skema database PostgreSQL. Yang lain menyebutkan SpacetimeDB, yang membawa konsep database-sebagai-server-aplikasi bahkan lebih jauh. Seorang developer berbagi pendekatan eksperimental mereka sendiri yang menyajikan lalu lintas web langsung dari SQLite, menunjukkan luasnya minat dalam arsitektur yang berpusat pada database.

Proyek-proyek ini berbagi filosofi yang sama: jika database Anda mampu menangani operasi kompleks dengan efisien, mengapa menambahkan lapisan tidak perlu yang memperkenalkan kompleksitas dan potensi hambatan kinerja? Gerakan ini menantang kebijaksanaan konvensional bahwa database seharusnya menjadi sistem penyimpanan yang pasif sementara server aplikasi menangani semua logika.

Proyek Framework Web PostgreSQL Utama yang Disebutkan:

  • sivers/sivers: Framework web PostgreSQL kustom milik Derek Sivers dengan templating Mustache
  • PostgREST: Secara otomatis menghasilkan REST API dari skema PostgreSQL
  • SpacetimeDB: Mesin database yang dirancang khusus untuk logika aplikasi
  • rumca-js/web_link_browser: Contoh aplikasi web yang berpusat pada SQLite

Masa Depan Pengembangan Full-Stack

Percakapan ini menyentuh tren yang lebih luas dalam pengembangan web, termasuk kebangkitan kembali server-side rendering dan pembagian tugas antara developer frontend dan backend. Seiring standar web berevolusi untuk menangani pembaruan konten dinamis tanpa memuat ulang halaman penuh, beberapa developer mempertanyakan apakah kita masih membutuhkan kompleksitas mengelola state klien yang ekstensif.

Pendekatan yang berpusat pada database berpotensi menjembatani kesenjangan antara peran frontend dan backend, memungkinkan developer untuk fokus pada kasus penggunaan bisnis daripada kontrak API antara sistem yang terpisah. Hal ini dapat mengarah pada pengalaman pengembangan yang lebih kohesif dan berpotensi siklus iterasi yang lebih cepat untuk jenis aplikasi tertentu.

Diskusi yang sedang berlangsung menunjukkan kita mungkin berada di awal evaluasi ulang yang lebih luas tentang arsitektur aplikasi web. Seiring database menjadi lebih mampu dan tim pengembangan mencari cara untuk mengurangi kompleksitas, pendekatan yang memanfaatkan kemampuan database lebih penuh mungkin mendapatkan adopsi yang lebih luas. Apakah ini mewakili pergeseran fundamental atau pendekatan niche untuk kasus penggunaan tertentu masih harus dilihat, tetapi diskusi yang penuh semangat menunjukkan bahwa topik ini menyentuh pertanyaan penting tentang bagaimana kita membangun perangkat lunak di era modern.

Referensi: sivers/sivers