Data Management pada Microservice

Data Consistency is not Easy

D. Husni Fahri Rizal
The Legend
2 min readNov 29, 2019

--

Semua software yang dibuat pasti akan bergantung pada data. Sukses dan tidak nya suatu software bergantung pada efisien dan efektifitas dalam menjaga konsistensi data.

Pada sistem monolith menjaga konsistensi data mungkin bisa berbeda-beda levelnya. Mulai dari mudah sampai sangat susah bisa saja terjadi. Pada monolith sistem sekompleks apapun, kita masih dapat dengan mudah untuk bisa menangani dan menjaga konsistensi data jika kita mengetahui dengan baik dan benar konsep transaksional pada database.

Cerita akan berbeda ketika kita menghadapi sistem yang sudah menerapkan microservice. Kesulitan menjaga konsistensi data sangat lah susah. Hal ini karena database bisa tersebar pada beberapa service yang satu sama lain memang terpisah.

Berikut akan kita bahas mengenai data management pattern yang sering di gunakan pada microservice. Pada ranah microservice setidak nya ada 6 jenis data management pattern yang akan kita bahas satu persatu.

Database per Service

Pada umumnya dalam microservice sistem sangat di sarankan apabila satu database di manage oleh satu microservice. Komunikasi antar database biasanya dilakukan melalui komunikasi antar service. Dengan demikian, satu database akan berkomunikasi dengan database lainnya melalui sebuah API yang sudah terdefinisi dengan baik..

Tingkat kesuksesan menerapkan pattern ini dipengaruhi oleh keberhasilan dalam mengimplementasikan bounded contexts pada aplikasi. Untuk sistem yang dari awal kita rencanakan dan buat sudah menerapkan microservice, penerapan teknik bounded contexts relatif mudah. Akan Tetapi, untuk sistem yang awalnya monolith dan diubah menjadi microservice merupakan sebuah tantangan yang tidak lah mudah.

Di ambil dari BoundedContext

Tantangan utama dalam menerapkan pattern ini adalah kompleksitas dalam menghandle business transaction yang tersebar di beberapa microservice. selain itu tantangan lainnya adalah pencarian data yang mungkin melibatkan banyak bounded contexts.

Apabila kita sukses dalam mendefinisikan hal di atas, hampir bisa dikatakan kita telah separuh jalan migrasi ke microservice telah kita selesaikan. Dengan demikian, aplikasi akan terbebas satu sama lain dan kita bisa melakukan scale up masing-masing service secara independen satu sama lain.

Team juga akan terbebas dalam menentukan jenis database yang digunakan untuk masing-masing service dan terbebas pastinya menentukan bahasa pemrograman yang akan digunakan.

Satu hal penting yang perlu kita garis bawahi pattern ini, walaupun satu service satu database bukan berarti kita harus membuat satu database dalam satu server yang terpisah. Kita masih memungkinkan untuk menyimpan beberapa database ini dalam satu server.

Pembahasan selanjutnya adalah Saga Pattern yang merupakan teknik andalan dalam menjaga konsistensi data pada microservice. Kita akan membahas nya pada artikel selanjutnya.

The Legend Programmer Channel

Saga Pattern Part 1: Solusi Efisien untuk Data Management dalam Microservice

Sponsor

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