PostgREST Menghapus 80% Kode Backend Anda

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Bagaimana jika database Postgres Anda adalah API-nya dan Anda tidak perlu menulis kode backend sama sekali?
00:00:05Setiap kali Anda membangun API, Anda menulis kode backend yang sama berulang kali. Rute, kontroler, validasi, autentikasi, semua ini hanya untuk berbicara dengan
00:00:14database Anda. Lalu Anda mengubah satu kolom dan semuanya rusak. Tanpa kode backend kustom. Tanpa kontroler. Tanpa lapisan ORM.
00:00:21Itulah yang dilakukan Postgres. Ini adalah mesin di balik Supabase. Ini menangani trafik produksi yang serius dan hanya dalam beberapa menit
00:00:29saya akan menunjukkan caranya kepada Anda.
00:00:31Sekarang, jika Anda membangun API, yang satu ini mengatasi titik masalah paling menjengkelkan di seluruh tumpukan teknologi.
00:00:40Logika duplikat. Anda mendefinisikan data di dalam database.
00:00:44Lalu Anda mendefinisikan aturan akses dan kode backend serta validasi di tempat lain.
00:00:49Kemudian kita melakukan hal yang sama untuk penanganan respons di tempat lain. Sistem yang sama, banyak lapisan, banyak peluang untuk terjadi kerusakan.
00:00:56Postgres memangkas semua ini. Ini memiliki lebih dari 26.000 bintang di GitHub dan digunakan oleh Supabase pada skala produksi.
00:01:03Ini mengubah skema Anda menjadi REST API yang siap produksi hanya dalam hitungan menit. Tidak ada ORM, tidak ada kontroler.
00:01:10Keamanan berada di dalam database, yang berarti lebih sedikit duplikasi, lebih sedikit pemeliharaan, dan jauh lebih sedikit waktu yang terbuang untuk menyambungkan hal-hal membosankan itu.
00:01:19Mari saya tunjukkan. Jika Anda menyukai alat coding yang mempercepat alur kerja Anda, pastikan untuk berlangganan.
00:01:24Kami memiliki video baru yang dirilis setiap saat.
00:01:26Baiklah. Sekarang mari kita benar-benar membangun ini. Oke, inilah pengaturannya. Tiga kontainer.
00:01:32Itu saja. Postgres, Postgrest, dan Swagger UI untuk dokumentasi.
00:01:38Inilah file Docker Compose-nya. Tidak banyak yang terjadi di sini. Hanya tiga layanan yang telah saya hubungkan.
00:01:45Saya menjalankannya dengan perintah andalan kita Docker Compose. Ini akan segera berjalan dan saya selesai.
00:01:51Tidak perlu menginstal dependensi. Tidak perlu mengatur server. Sekarang, mari kita lihat database-nya.
00:01:55Saya akan menjalankan perintah docker di sini dan selesai. Tabel todos yang sangat sederhana. ID, judul, selesai, dibuat, semua hal dasar.
00:02:04Itulah, benar-benar hanya itu yang terjadi di sini. Tapi bagian ini, bagian ini adalah saat itu menjadi berguna.
00:02:09Keamanan tingkat baris (Row Level Security). Kita menentukan siapa yang bisa mengakses apa secara langsung di SQL di dalam database.
00:02:17Tidak ada logika autentikasi backend yang duduk di tempat lain di sistem kita. Inilah kebijakannya.
00:02:22Saya memberikan akses penuh anonim menggunakan 'true' dengan pemeriksaan 'true'. Jadi untuk saat ini, semuanya diizinkan. Sekarang perhatikan ini.
00:02:29Saya akan memanggil 'get todos' dengan perintah curl ini dan selesai. JSON lengkap langsung dari Postgres.
00:02:35Tanpa kode API. Sekarang membangun dari itu, izinkan saya memfilternya sekarang. Ini langsung berfungsi.
00:02:41Jika saya mengurutkannya, boom, itu dia. Sekarang mari kita buat baris lain, kirim permintaan POST dengan bodi JSON dan kita selesai.
00:02:50Dan itu sudah ada di database. Tidak ada lapisan ORM yang mencoba mengejar di sini.
00:02:56Dan inilah bagian yang benar-benar membuat orang kagum. Dokumen Open API, Swagger UI yang dibuat otomatis. Sudah ada di sini.
00:03:04Saya membukanya dan kita mendapatkan API interaktif penuh. Anda bisa menjelajahi semuanya, menguji endpoint, melihat skema.
00:03:11Jadi dari nol, Anda sekarang memiliki CRUD penuh, pemfilteran, pengurutan, penomoran halaman. Anda memiliki autentikasi dasar via RLS dan dokumen hanya dalam waktu kurang dari satu menit.
00:03:21Jadi mengapa orang-orang menggunakan ini? Yah, jika itu belum cukup, karena pekerjaan backend tradisional memiliki "pajak" tambahan.
00:03:26Dan sebagian besar dari pajak itu bukanlah pekerjaan produk. Sebenarnya yang kita lakukan adalah semua pekerjaan pemeliharaan ini, kan?
00:03:33Jika Anda memikirkan tumpukan teknologi normal, mungkin itu Express, Prisma, kontroler, layanan, validasi di satu tempat.
00:03:40Lalu kita punya autentikasi di tempat lain. Logika database Anda berada di tempat lain sepenuhnya.
00:03:45Sekarang bandingkan dengan Postgres. Skema Anda mendefinisikan API. Keamanan Anda adalah RLS.
00:03:52Hubungan antar data Anda sudah ada di database. Jadi alih-alih membangun lapisan penerjemah di sekitar data Anda, kita langsung mengekspos datanya dengan benar.
00:04:02Itu sangat berbeda. Sekarang bandingkan dengan backend kustom. Anda harus menulis semuanya sendiri.
00:04:07Itu memberi Anda fleksibilitas. Ya, tentu saja. Tapi itu juga memberi Anda lebih banyak kode untuk dipelihara.
00:04:13Postgres tetap lebih sederhana. REST plus Postgres. Keamanan ada di dalam database. Tidak tersebar di middleware atau handler rute.
00:04:23Pemeliharaan Anda tetap rendah karena API Anda mengikuti skema Anda. Itulah mengapa orang-orang menyukainya.
00:04:28Sekarang, sejujurnya, di sinilah orang-orang mendapat masalah karena begitu sesuatu mulai terasa bersih seperti ini, orang mulai bertindak seolah-olah ini menyelesaikan segalanya.
00:04:34Ini tidak menyelesaikan segalanya, kan? Masih ada hal-hal yang harus kita perhatikan.
00:04:38Akan ada pengorbanan dan Anda harus tahu apa yang harus diwaspadai sebelum Anda menyentuh ini.
00:04:43Apa yang disukai orang di sini adalah, yah, agak jelas. Cepat untuk dibangun. Anda bisa beralih dari ide ke API yang berfungsi dengan sangat cepat.
00:04:51Dan ini memang berskala dengan sangat baik juga. Selain itu, kan, Supabase sudah membuktikannya.
00:04:55Mereka menggunakan ini. Tapi kekurangannya adalah hal-hal seperti penggunaan keamanan tingkat baris yang berat akan meningkatkan beban database.
00:05:02Jadi Anda perlu berpikir hati-hati tentang bagaimana Anda merancang ini. Logika yang kompleks dapat mendorong Anda ke arah banyak fungsi atau view SQL.
00:05:10Dan beberapa orang menyukai itu dan beberapa orang akan membencinya. Jadi, haruskah Anda menggunakan ini atau bahkan mencobanya?
00:05:15Ya, untuk proyek yang tepat. Jika Anda membangun prototipe, MVP, atau apa pun yang berpusat di sekitar Postgres, maka tentu saja, mengapa tidak mencobanya, kan?
00:05:23Anda akan bergerak lebih cepat. Anda akan menulis lebih sedikit kode dan Anda mendapatkan default keamanan yang lebih kuat dengan mendorong aturan ke dalam database.
00:05:32Sekarang, jika aplikasi Anda memiliki logika yang sangat kompleks, Anda mungkin masih menginginkan lapisan backend tipis di atasnya, sesuatu yang kecil, lapisan BFF untuk kasus khusus.
00:05:40Tapi meskipun begitu, Postgres dapat melakukan sebagian besar pekerjaan berat di bawahnya. Jadi poin utamanya adalah ini. Postgres memungkinkan Anda merilis lebih cepat, mengamankan lebih baik, dan memelihara lebih sedikit.
00:05:50Database Anda menjadi sumber data yang sebenarnya, dan API Anda dihasilkan dari itu alih-alih menjadi sistem terpisah sendiri.
00:05:58Jika Anda menikmati alat coding dan tips seperti ini, pastikan untuk berlangganan channel Better Stack. Sampai jumpa di video lainnya.

Key Takeaway

PostgREST menghilangkan beban pemeliharaan kode backend sebesar 80% dengan menghasilkan REST API interaktif dan sistem keamanan Row Level Security langsung dari skema database PostgreSQL.

Highlights

PostgREST mengubah skema database PostgreSQL menjadi REST API siap produksi secara otomatis tanpa memerlukan kode kontroler atau lapisan ORM.

Sistem ini telah divalidasi pada skala produksi sebagai mesin inti di balik platform Supabase dan memiliki lebih dari 26.000 bintang di GitHub.

Implementasi keamanan berpindah sepenuhnya ke dalam database menggunakan Row Level Security (RLS) untuk menentukan hak akses data secara langsung melalui SQL.

Pengaturan infrastruktur hanya membutuhkan tiga kontainer Docker yang mencakup Postgres, Postgrest, dan Swagger UI untuk dokumentasi API otomatis.

Pengembang mendapatkan fungsionalitas CRUD penuh, pemfilteran, pengurutan, dan penomoran halaman (pagination) dalam waktu kurang dari satu menit setelah database dikonfigurasi.

PostgREST memangkas hingga 80% kode backend tradisional dengan menghilangkan kebutuhan untuk mendefinisikan ulang aturan validasi dan akses di lapisan middleware.

Timeline

Masalah Duplikasi Logika pada Backend Tradisional

  • Pembangunan API konvensional memaksa pengembang menulis rute, kontroler, dan validasi yang redundan.
  • Perubahan pada satu kolom database sering merusak seluruh lapisan aplikasi di atasnya.
  • PostgREST memangkas lapisan penerjemah data untuk mengurangi peluang terjadinya kerusakan sistem.

Arsitektur backend standar sering kali memiliki 'pajak' pemeliharaan berupa duplikasi logika di berbagai lapisan seperti Express, Prisma, dan layanan validasi. Sistem ini sering mengalami sinkronisasi yang buruk antara aturan akses di kode backend dan struktur data sebenarnya di database. PostgREST mengatasi masalah ini dengan menjadikan database sebagai satu-satunya sumber kebenaran (source of truth).

Implementasi Teknis Menggunakan Docker dan SQL

  • Infrastruktur berjalan menggunakan Docker Compose dengan tiga layanan utama tanpa instalasi dependensi tambahan.
  • Keamanan akses data dikelola melalui kebijakan Row Level Security (RLS) langsung di dalam tabel SQL.
  • Permintaan HTTP seperti GET, POST, dan filter data menghasilkan respons JSON instan tanpa kode API kustom.

Proses dimulai dengan menjalankan file Docker Compose yang menghubungkan Postgres, Postgrest, dan Swagger UI. Setelah tabel dibuat, akses dikontrol melalui perintah SQL 'true' untuk izin anonim atau kebijakan spesifik lainnya. Pengembang dapat langsung melakukan operasi CRUD melalui perintah curl, dan data akan diperbarui di database tanpa perantara lapisan ORM yang lambat.

Dokumentasi Otomatis dan Keunggulan Arsitektur

  • Swagger UI menghasilkan dokumen Open API secara otomatis untuk pengujian endpoint secara interaktif.
  • Integrasi fungsionalitas CRUD, pemfilteran, dan penomoran halaman tersedia secara default dalam hitungan detik.
  • Pemeliharaan tetap rendah karena API secara otomatis mengikuti setiap perubahan yang terjadi pada skema database.

Salah satu fitur utama adalah ketersediaan dokumentasi API yang sinkron dengan struktur database tanpa konfigurasi manual. Arsitektur ini menggeser fokus dari membangun lapisan penerjemah ke arah ekspos data yang benar dan aman. Hal ini memastikan bahwa hubungan antar data yang sudah didefinisikan di database langsung tercermin pada endpoint API.

Analisis Pengorbanan dan Kasus Penggunaan Tepat

  • Penggunaan Row Level Security yang ekstensif dapat meningkatkan beban komputasi pada database.
  • Logika bisnis yang sangat kompleks mungkin memerlukan fungsi SQL tambahan atau lapisan backend tipis (BFF).
  • PostgREST sangat efektif untuk pembuatan prototipe, MVP, dan aplikasi yang berpusat pada data Postgres.

Meskipun mempercepat pengembangan, PostgREST memaksa logika kompleks masuk ke dalam fungsi atau view SQL yang mungkin tidak disukai oleh semua pengembang. Beban database menjadi faktor krusial yang harus diperhitungkan saat skala aplikasi membesar. Namun, untuk sebagian besar kasus, sistem ini menawarkan rilis yang lebih cepat dan standar keamanan yang lebih kuat karena aturan akses melekat pada data itu sendiri.

Community Posts

View all posts