2 poin oleh GN⁺ 2025-10-31 | Belum ada komentar. | Bagikan ke WhatsApp
  • Benchmark publish/subscribe (pub-sub) dan queue di Postgres menunjukkan kemungkinan menggantikan sistem messaging hanya dengan satu database
  • Pada satu node 4vCPU, tercapai 5.036 write/detik dan 25.183 read/detik; pada lingkungan replikasi 3 node pun throughput tetap serupa, dengan latensi end-to-end 186ms (p99)
  • Pada node besar 96vCPU, tercapai write 238MiB/s dan read 1.16GiB/s, dengan utilisasi CPU di bawah 10%, menunjukkan kapasitas pemrosesan yang masih longgar
  • Dalam pengujian queue juga, satu node mampu menangani 2.885 transaksi/detik, dan pada lingkungan replikasi tetap bisa memproses 2.397 transaksi/detik, cukup untuk sebagian besar skala perusahaan
  • Alih-alih sistem terdistribusi yang kompleks, hasil ini menunjukkan bahwa infrastruktur Postgres tunggal pun dapat menangani workload beberapa MB/s, sambil menekankan pendekatan praktis: “gunakan teknologi sederhana sampai benar-benar perlu yang lebih rumit”

Dua kubu dalam memilih teknologi

  • Industri teknologi terbagi menjadi kubu yang berpusat pada jargon dan kubu yang berlandaskan akal sehat
    • Kubu pertama tertarik pada istilah pemasaran seperti “real-time”, “skalabilitas tanpa batas”, dan “berbasis AI”
    • Kubu kedua lebih mengutamakan kesederhanaan dan kepraktisan, serta menghindari kompleksitas yang tidak perlu
  • Belakangan ini, dua arus yaitu Small Data dan renaisans Postgres memperkuat kubu kedua
    • Data makin kecil, sementara hardware makin kuat
    • Postgres dapat menggantikan berbagai solusi khusus tujuan sebagai satu sistem tunggal (jsonb, pgvector, tsvector, dll.)

Gambaran benchmark

  • Tujuan: mengukur sejauh mana Postgres dapat diskalakan untuk messaging pub/sub dan pemrosesan queue
  • Lingkungan pengujian: AWS EC2 c7i.xlarge (4vCPU) dan c7i.24xlarge (96vCPU)
  • Perbandingan tiga konfigurasi
    • node tunggal
    • klaster replikasi 3 node
    • node tunggal berukuran besar

Hasil benchmark Pub/Sub

  • Node tunggal 4vCPU
    • write 4.8MiB/s (5.036msg/s), read 24.6MiB/s (25.183msg/s), latensi 60ms (p99)
    • CPU terpakai 60%, disk write 46MiB/s
  • Replikasi 3 node 4vCPU
    • write 4.9MiB/s, read 24.5MiB/s, latensi 186ms (p99)
    • throughput tetap terjaga, biaya tahunan sekitar $11.514
  • Node tunggal 96vCPU
    • write 238MiB/s (243kmsg/s), read 1.16GiB/s (1.2Mmsg/s), latensi 853ms (p99)
    • CPU di bawah 10%, bottleneck ada pada kecepatan write per partisi
  • Kesimpulan: cukup kompetitif dengan Kafka untuk workload kecil hingga menengah, dan dengan struktur sederhana pun mampu menangani puluhan MB/s

Hasil benchmark Queue

  • Implementasi queue sederhana berbasis SELECT FOR UPDATE SKIP LOCKED
  • Node tunggal 4vCPU
    • 2.81MiB/s (2.885msg/s), latensi 17.7ms (p99), CPU 60%
  • Replikasi 3 node 4vCPU
    • 2.34MiB/s (2.397msg/s), latensi 920ms (p99), CPU 60%
  • Node tunggal 96vCPU
    • 19.7MiB/s (20.144msg/s), latensi 930ms (p99), CPU 40~60%
  • Bahkan dengan satu node saja, kebutuhan throughput queue di sebagian besar perusahaan dapat terpenuhi

Kapan memilih Postgres

  • Dalam banyak kasus, menjadikan Postgres sebagai pilihan default adalah keputusan yang masuk akal
    • Pesan bisa di-debug, diubah, dan di-join langsung dengan SQL
    • Dibanding Kafka, operasional lebih sederhana dan perawatan lebih mudah
  • Kafka dioptimalkan untuk performa tinggi, tetapi untuk workload kecil, itu sering menjadi pilihan yang berlebihan
  • Mengutip peringatan Donald Knuth: “optimasi prematur adalah akar dari segala kejahatan
    • Sampai level beberapa MB/s, Postgres sudah lebih dari cukup

Pendekatan MVI (Minimum Viable Infrastructure)

  • Minimum Viable Infrastructure: membangun sistem seminimal mungkin dengan teknologi yang sudah akrab di organisasi
    • Postgres diadopsi luas dan relatif mudah mencari tenaga yang menguasainya
    • Semakin sedikit komponen, semakin kecil beban gangguan dan operasional
  • Adopsi teknologi yang tidak perlu akan menimbulkan overhead organisasional
    • Biaya belajar, monitoring, deployment, dan operasional meningkat

Pembahasan skalabilitas

  • Postgres pada praktiknya memang bisa diskalakan
    • OpenAI sampai sekarang masih menggunakan Postgres berbasis single write instance
    • Tetap berjalan stabil bahkan pada skala ratusan juta pengguna
  • Sebagian besar perusahaan tumbuh secara bertahap, sehingga masih ada jeda beberapa tahun sebelum perlu mengganti teknologi
  • “Merancang untuk mengantisipasi viral” adalah bentuk overdesign
    • Diibaratkan seperti “membeli ampli Marshall untuk tampil sebagai pembuka konser Coldplay”

Kesimpulan

  • “Gunakan Postgres sampai benar-benar mentok”
    • Dengan teknologi sederhana pun, performa yang didapat bisa sangat tinggi
    • Mengadopsi sistem terdistribusi yang kompleks sebelum perlu justru tidak efisien
    • Dengan hardware modern, Postgres adalah pilihan praktis yang mampu menangani sebagian besar workload saat ini

Belum ada komentar.

Belum ada komentar.