Pub/Sub #

Dalam arsitektur cloud modern—khususnya microservices, event-driven architecture, dan sistem terdistribusi—kebutuhan akan komunikasi asynchronous yang scalable dan reliable menjadi sangat krusial. Google Cloud Pub/Sub (GCP Pub/Sub) hadir sebagai layanan messaging serverless yang dirancang untuk menangani komunikasi berbasis event dalam skala besar tanpa perlu mengelola infrastruktur message broker secara manual.

Artikel ini akan membahas Pub/Sub secara menyeluruh dan mendalam: mulai dari definisi, alasan kenapa ia dikategorikan sebagai serverless, jenis-jenisnya, konfigurasi penting, aspek monitoring, kelebihan & kekurangan, hingga best practice implementasi di dunia nyata.

Apa Itu Google Cloud Pub/Sub? #

Google Cloud Pub/Sub adalah fully managed messaging service yang menggunakan pola publish–subscribe untuk mengirim dan menerima pesan antar sistem secara asynchronous.

Konsep dasarnya:

  • Publisher mengirim pesan ke sebuah Topic
  • Subscriber berlangganan (Subscription) ke topic tersebut
  • Pub/Sub bertanggung jawab mengantarkan pesan secara reliable

Pub/Sub didesain untuk:

  • Throughput sangat tinggi (jutaan pesan/detik)
  • Latency rendah
  • Global scale
  • Integrasi native dengan ekosistem GCP

Kenapa Pub/Sub Disebut Serverless? #

Pub/Sub termasuk kategori serverless messaging karena:

  1. Tanpa Provisioning Infrastruktur Tidak ada VM, cluster, broker, atau partition yang perlu kita kelola.

  2. Auto-Scaling Pub/Sub secara otomatis menyesuaikan kapasitas berdasarkan traffic pesan.

  3. Pay-as-you-go Biaya dihitung berdasarkan jumlah data yang dipublish dan delivered.

  4. High Availability by Default Replikasi dan durability ditangani sepenuhnya oleh Google.

  5. No Operational Overhead Tidak ada patching, upgrade, atau capacity planning.

Dengan kata lain, kita hanya fokus pada event dan consumer logic, bukan infrastrukturnya.


Arsitektur Dasar Pub/Sub #

Secara konseptual:

  • Publisher → Topic → Subscription → Subscriber

Karakteristik utama:

  • Topic bersifat fan-out (satu publisher → banyak subscriber)
  • Subscriber bersifat decoupled dari publisher
  • Message bersifat immutable

Pub/Sub sangat cocok untuk:

  • Event-driven system
  • Data ingestion
  • Log streaming
  • Integrasi antar service lintas project

Jenis-Jenis Pub/Sub #

Topic #

Topic adalah endpoint logis tempat publisher mengirim pesan.

Jenis topic:

  • Standard Topic Digunakan untuk sebagian besar use case event-driven.

  • Schema-enabled Topic Topic yang menggunakan Avro atau Protobuf schema untuk validasi message.

Subscription #

Subscription menentukan bagaimana pesan dikonsumsi.

a. Pull Subscription #

  • Subscriber secara aktif melakukan pull pesan

  • Cocok untuk:

    • Worker pool
    • Custom consumer
    • Kontrol penuh terhadap flow

b. Push Subscription #

  • Pub/Sub melakukan push ke endpoint HTTP

  • Cocok untuk:

    • Cloud Run
    • Cloud Functions
    • Webhook

Dead Letter Topic (DLQ) #

Digunakan untuk menangani pesan yang gagal diproses setelah beberapa retry.

Manfaat:

  • Mencegah poison message
  • Observability terhadap kegagalan
  • Debugging lebih mudah

Ordering Key #

Memastikan urutan pesan terjaga untuk key tertentu.

Catatan:

  • Ordering hanya dijamin per key, bukan global
  • Ada trade-off throughput

Konfigurasi Penting di Pub/Sub #

Ack Deadline #

  • Waktu maksimal subscriber untuk memproses pesan
  • Jika tidak di-ack → message akan dikirim ulang

Best practice:

  • Sesuaikan dengan waktu proses terlama
  • Gunakan modifyAckDeadline bila perlu

Retention Policy #

  • Berapa lama pesan disimpan jika belum di-ack
  • Default: 7 hari

Gunakan retention panjang untuk:

  • Replay message
  • Debugging

Retry Policy #

  • Minimum dan maksimum backoff retry
  • Sangat penting untuk sistem downstream yang fluktuatif

Dead Letter Policy #

  • Maksimum delivery attempts
  • Topic tujuan untuk DLQ

Message Filtering #

  • Subscriber hanya menerima message tertentu berdasarkan attribute
  • Mengurangi beban consumer

Schema Validation #

  • Validasi payload sebelum message diterima
  • Mencegah bad event sejak awal

Apa Saja yang Bisa Dimonitor? #

Pub/Sub terintegrasi erat dengan Cloud Monitoring & Logging.

Metric Penting #

  1. Publish Rate Jumlah pesan yang dikirim per detik

  2. Delivery Latency Waktu dari publish hingga diterima subscriber

  3. Unacked Messages Indikasi consumer lambat atau stuck

  4. Oldest Unacked Message Age Sangat krusial untuk mendeteksi backlog

  5. Ack Count & Nack Count

  6. DLQ Message Count

Logging #

  • Audit log untuk publish dan subscribe
  • Error log dari push endpoint

Pros & Cons Google Cloud Pub/Sub #

✅ Kelebihan #

  1. Fully managed & serverless
  2. Sangat scalable dan reliable
  3. Integrasi native dengan GCP
  4. Cocok untuk event-driven architecture
  5. Support multi-region secara transparan

❌ Kekurangan #

  1. Tidak cocok untuk strict ordering global
  2. At-least-once delivery (harus handle idempotency)
  3. Debugging distributed system lebih kompleks
  4. Biaya bisa meningkat jika message sangat besar
  5. Tidak sefleksibel Kafka untuk stream processing kompleks

Kapan Pub/Sub Paling Tepat Digunakan? #

Pub/Sub sangat ideal untuk:

  • Event-driven microservices
  • Asynchronous processing
  • Data ingestion pipeline
  • Fan-out notification system
  • Integrasi antar project dan environment

Kurang cocok untuk:

  • Transactional queue dengan ordering ketat
  • Stream analytics kompleks (lebih cocok Kafka/Dataflow)

Best Practice #

Desain Message Idempotent #

Subscriber harus aman menerima message lebih dari sekali.

Gunakan Attribute Secara Konsisten #

  • Untuk filtering
  • Untuk routing logic

Aktifkan Dead Letter Topic #

Jangan biarkan poison message mengganggu sistem utama.

Monitor Backlog Secara Proaktif #

Alert pada:

  • Oldest unacked message age
  • DLQ growth

Gunakan Push + Cloud Run untuk Serverless Consumer #

  • Auto-scale
  • Minimal ops
  • Cost-efficient

Batasi Payload Size #

  • Gunakan Cloud Storage untuk payload besar
  • Kirim reference (URL) saja

Gunakan Schema untuk Contract Enforcement #

Mencegah breaking change antar tim.


Penutup #

Google Cloud Pub/Sub adalah fondasi penting dalam arsitektur cloud modern di GCP. Dengan pendekatan serverless, scalability tinggi, dan integrasi ekosistem yang kuat, Pub/Sub memungkinkan tim fokus pada business logic dan event, bukan operasional message broker.

Namun, seperti teknologi lain, Pub/Sub harus digunakan dengan pemahaman yang tepat, desain idempotent, monitoring yang matang, dan best practice yang disiplin agar benar-benar memberikan manfaat maksimal.

Jika dikombinasikan dengan Cloud Run, Cloud Functions, dan Dataflow, Pub/Sub menjadi tulang punggung arsitektur event-driven yang modern, resilient, dan scalable.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact