Apa Itu CAP Theorem

Consistency, Availability, dan Partition Tolerance

D. Husni Fahri Rizal
The Legend
5 min readMay 30, 2020

--

Mendesain sistem khususnya sistem terdistribusi merupakan tantangan yang menarik sekaligus berat. Hal ini memerlukan spekulasi dan dasar pemikiran yang cermat.

Kesuksesan diraih sebagai akumulasi dari pengalaman bertahun-tahun melalui masalah dan kegagalan yang digabungkan dengan pengetahuan akan teknologi-teknologi terbaru serta usaha dan upaya sehingga menghasilkan output yang tepat. Teorema CAP adalah salah satu pengetahuan yang harus kita miliki ketika mendesain sistem terdistribusi atau secara lebih spesifik arsitektur microservices.

Teorema CAP adalah salah satu dalil atau pernyataan dalam ilmu komputer yang menjelaskan mengenai database yang terdistribusi. Teorema ini dikenal juga sebagai Eric Brewer teorema.

Pada teorema CAP dijelaskan bahwa pada sistem database yang terdistribusi tidak akan memiliki lebih dari dua kondisi yang diharapkan terpenuhi dari tiga kondisi berikut, yaitu konsistensi, ketersediaan (availability), dan toleransi partisi. Jadi, dari tiga properties tadi hanya dapat dua kombinasi properties yang dapat dipenuhi. Contohnya, CA yang merupakan Consistency dan Availability, CP yang merupakan Consistency dan Partition Tolerance, dan AP yang merupakan Availability dan Partition Tolerance.

Berikut adalah penjelelasan dari masing-masing propertise tersebut.

Consistency

Pada sistem database terdistribusi biasanya kita akan melakukan replikasi dari database ke dalam beberapa node. Konsistensi dicapai apabila kita mendapatkan semua data sama pada setiap node pada waktu yang sama. Dengan kata lain, setelah kita melakukan berbagai operasi write ke database kita akan mendapatkan data yang sama ketika melakukan operasi read pada setiap node yang kita akses.

Apabila terjadi perbedaan data maka kita menyebutkan sebagai sistem yang tidak konsisten atau in consistency system.Perlu diperhatikan bahwa konsistensi pada teorema CAP berbeda pengertiannya dengan arti konsistensi pada sistem monolith atau pada konsep ACID database transaksional.

Availability

Umumnya ketersediaan dari sistem diukur dengan up-time nya. Sistem yang memiliki up time 90 % akan memiliki availability yang lebih tinggi dari pada sistem yang memiliki uptime 80%. Akan tetapi, pengertian availability pada teorema CAP agak berbeda sedikit. Pada teorema CAP availability berarti sistem atau semua node akan senantiasa setiap waktu akan memberikan non error respon. Respon yang diberikan asal bukan lah error respon dan data tidak konsisten pun disebut memiliki tingkat availability yang tinggi. Serta perlu diperhatikan pula bukan hanya operasi read yang dijadikan patokan tetapi semu operasi baik read atau write.

Perlu diperhatikan juga bahwa availability terkait dengan respon time. Apabila respon time terlalu lama maka akan mengakibatkan client yang mengakses sistem kita akan mengalami pengalaman yang kurang baik. Dengan demikian, secara tidak langsung availability akan memiliki arti respon time yang tinggi atau cepat pula.

Sebuah contoh sistem dengan tingkat availability yang sangat tinggi adalah customer masih dapat melihat dan menambahkan item ke keranjang belanja mereka bahkan jika disk gagal, rute jaringan flapping, atau pusat data dihancurkan oleh tornado.

Partition Tolerance

Kita tidak dapat menghindari kenyataan bahwa jaringan itu akan mengalami kegagalan baik akibat dari permasalahan fisik ataupun logical. Kita akan mendapatkan kegagalan secara fisikal apabia terjadi pemasalahan pada jaringan kabel kita. Sedangkan kegagalan secara logical bisa diakibatkan oleh proses garbage collection yang berat terjadi.

Dengan demikian, sistem dengan partition tolerance yang tinggi adalah suatu sistem masih dapat bekerja walaupun komunikasi antar node terganggu. Masing-masing node mengetahui terjadi permasalah komunikasi misalkan antara node 1 dan node 2 dan ketika komunikasinya berjalan dengan baik kembali maka data dapat disiskronikasi ulang. Perlu diperhatikan bahwa yang dimaksud bukan node yang mati tetapi komunikasi antar node yang terganggu.

Sistem up tetapi tidak dapat berkomunikasi satu sama lainnya.
Node 1 akan mengupdate data ke Node 2 dan sebaliknya ketika koneksi antara keduanya sudah terhubung kembali

Pada sistem diatas kedua node aktif tetapi komunikasi atar keduanya masalah sehingga proses write di N1 tidak akan terupdate ke N2 dan sebaliknya. Ketika komunikasi terjalin kembali makankedua node akan saling melakukan update data.

Partisi toleransi ini merupakan hal yang paling penting pada sistem database terdistribusi sehingga kita tinggal mau memilih salah satu lainya yang akan kita tetap pertahankan. Apa itu konsistensi atau availability tergantung kebutuhan dari sistem yang kita rancang.

Diagram Segitiga CAP

Dengan melihat diagram CAP di atas apabila kita akan merancang sistem terdsitribusi atau secara lebih khusus microservice arsitektur maka pilihan yang terbaik adalah pada jenis database dengan konsep AP atau CP. Kalau tidak secara terpaksa maka kita semestinya menghindari database dengan kategori CA.

Pada jenis CA apabila ada request baik berupa write atau query dan koneksi antar node terganngu maka kita akan mendapatkan informasi system database bermasalah dan tidak berjalan dengan baik

Pada jenis AP apabila request write dan komunikasi antar node terganggu data akan tetap dituliskan ke database melalui salah satu node. Dengan demikian, ketika ada pencarian pada node yang lain mungkin saja data tidak ditemukan. Baru apabila komunikasi antar node sudah terjadi kembali kita akan mendapatkan data yang sama karena data sudah diupdate pada setiap nodenya.

Pada jenis CP apabila terjadi request write dan sedang terjadi permasalahan antar node, maka data tidak akan dituliskan ke database karena sistem ini memilih konsistensi data. Baru jika komunikasi antar semua node aman kita dapat menulis data kembali. Adapun unutk proses read sistem masih dapat memberikan data yang diminta walaupun komunikasi antar node lagi bermasalah.

Contoh Sistem Terdistribusi

Google Doc atau Gmail mementingkan konsistensi dan partisi pastinya dengan bayarannya tingkat avaibility yang kecil. Sebagai hasilnya kita dapat melihat data di semua device kita akan sama atau konsisten.

Adapaun Google Search, Twitter, dan You Tube berfokus pada tingkat availability yang tinggi dan Partisi tentunya dengan menurukan tingkat konsistensi. Sebagai hasilnya terkadang kita akan melihat hasil pencarian yang sedikit agak berbeda tergantung server yang kita akses. Yang terasa dan terlihat dengan jelas adalah jumlah like yang kadang berbeda pada you toube atau twitter dan ini lah penjelasannya kenapa hal tersebut terjadi.

IT Training

Mau improve skill IT dan pemrograman Anda, Silahkan cek jadwal training berikut.

The Legend Training

Kaos Pemrograman

Membutuhkan kaos dengan tema pemrograman :

Kafka T-shirt

Elastic T-shirt

Dapat menghubungi The Legend

--

--

D. Husni Fahri Rizal
The Legend

Engineering Leader | Start-Up Advisor | Agile Coach | Microservices Expert | Professional Trainer | Investor Pemula