Pendahuluan


Dalam dunia database terdistribusi, ada dua prinsip penting yang seringkali berbenturan:

  • ketersediaan (availability)
  • konsistensi (consistency).

Di satu sisi, kita ingin data selalu tersedia dan mudah diakses. (Availibility)

Namun di sisi lain, kita juga ingin data tetap akurat dan konsisten di seluruh sistem. (Consistency)

Benturan antara 2 prinsip penting diatas karena adanya sistem yang terdistribusi yang data tidak hanya di satu tempat saja.

Konsep eventual consistency menawarkan jalan tengah untuk menyeimbangkan kedua prinsip tersebut.


Apa Itu Eventual Consistency ?


Eventual consistency adalah model konsistensi data di mana perubahan pada satu node dalam sistem database terdistribusi pada akhirnya akan merambat dan terbaca oleh semua node lain.

Namun, tidak ada jaminan bahwa perubahan tersebut akan langsung terlihat di semua node secara simultan.

Ada jeda waktu (yang bisa sangat singkat atau cukup lama) di mana pembacaan data pada satu node mungkin berbeda dari pembacaan data pada node lain.


Bagaimana contohnya ?


Misalnya di sistem database terdistribusi yang menyimpan data tentang saldo bank.

Ketika seorang nasabah melakukan penarikan, perubahan saldo tersebut dicatat pada satu node.

Node tersebut kemudian menyebarkan perubahan tersebut ke node-node lain dalam sistem.

Namun, proses penyebaran ini tidak terjadi secara instan.

Ada jeda waktu di mana beberapa node mungkin masih menampilkan saldo lama sebelum perubahan diterima


Apa Keuntungan menggunakan Eventual Consistency ?


Ada beberapa keuntungan :

  • Ketersediaan Tinggi: Data tetap tersedia untuk dibaca dan ditulis, bahkan jika beberapa node dalam sistem mengalami kegagalan.
  • Skalabilitas: Model ini cocok untuk sistem terdistribusi yang sangat besar dan skalabel.
  • Toleransi terhadap Kegagalan: Sistem dapat terus beroperasi meskipun terjadi kegagalan koneksi atau penundaan dalam penyebaran data.

Apa kekurangan menggunakan Eventual Consistency ?


Selain keuntungan, tentunya ada beberapa kekurangannya :

  • Inkonsistensi Sementara: Data mungkin tidak selalu konsisten di seluruh sistem, yang dapat menyebabkan masalah bagi aplikasi yang membutuhkan pembacaan data yang akurat dan real-time.
  • Ketergantungan Implementasi: Jaminan konsistensi dan waktu penyebaran data bergantung pada implementasi spesifik dari sistem database terdistribusi.
  • Kompleksitas Debugging: Mendiagnosis masalah yang disebabkan oleh inkonsistensi data bisa menjadi lebih rumit.

Kapan Menggunakan Eventual Consistency ?


Eventual consistency cocok untuk aplikasi yang:

  • Tidak memerlukan konsistensi data yang ketat secara real-time.
  • Lebih mengutamakan ketersediaan dan skalabilitas data.
  • Dapat menangani inkonsistensi data sementara dengan cara tertentu.

Contoh aplikasi yang cocok menggunakan eventual consistency:

  • Sistem e-commerce di mana harga produk mungkin belum langsung diperbarui di semua server setelah perubahan harga.
  • Aplikasi media sosial di mana postingan baru mungkin belum langsung terlihat oleh semua pengguna.
  • Sistem pelacakan barang di mana lokasi barang mungkin belum langsung diperbarui setelah pergerakan barang.