amiru.dev
System Design

Merancang Sistem Pembayaran yang Scalable

2 min read
44 views
paymentsdistributed systemsarchitecture

Mendesain sistem pembayaran membutuhkan konsistensi, keandalan, dan keamanan yang tinggi. Dalam artikel ini, kita akan mendesain arsitektur tingkat tinggi untuk memproses pembayaran.

Konsep Inti

  1. Idempotensi: Memastikan bahwa percobaan ulang tidak mengakibatkan penagihan ganda.
  2. Transaksi ACID: Menggunakan database relasional untuk catatan keuangan.
  3. Pemrosesan Asinkron: Menggunakan antrian pesan untuk memisahkan layanan.

Playground Sistem Interaktif

Rasakan alur sistem pembayaran modern secara real-time. Klik pada komponen untuk mempelajari peran mereka atau memulai simulasi untuk melihat bagaimana transaksi berjalan dari klien ke database dan seterusnya.

Arsitektur

Berikut adalah arsitektur tingkat tinggi dari sistem pembayaran kita:

Alur Pembayaran

  1. Klien mengirimkan permintaan pembayaran dengan idempotency key yang unik.
  2. API Gateway mengarahkannya ke Payment Service.
  3. Payment Service memeriksa database apakah idempotency key ini sudah diproses.
  4. Jika belum, ia membuat catatan pembayaran yang tertunda.
  5. Ia memanggil external payment provider.
  6. Setelah pembayaran berhasil, ia memperbarui database dan menerbitkan event "Payment Succeeded" ke Kafka.
  7. Notification Service mengambil event tersebut dan mengirimkan email ke pengguna.

Arsitektur ini memastikan keandalan dan skala.