Mendesain Event-Driven Architecture — Part 8 (Tamat)

Stateful Pattern pada Microservices

D. Husni Fahri Rizal
The Legend
3 min readDec 2, 2021

--

Pada penjelasan sebelumnya pada Mendesain Event-Driven Architecture — Part 7 telah dibahas 3 pattern utama dari stateful pattern yang sering digunakan pada Microservice Architecture. Berikut adalah dua pattern yang dapat kita gunakan untuk meningkatkan penggunaan dari CQRS yaitu Materialized Views dan Polyglot Views.

Materialized Views

Sama persis dengan RDBMS view kita gunakan untuk membantu proses agregasi dan meningkatkan performance pencarian karena menghilangkan pencarian yang membutuhkan join atau relasi yang kompleks. Biasaya view tabel ini hasil dari query yang telah didefinisikan sebelumnya dan di update datanya setiap waktu ada perubahan pada tabel-tabel yang mempengaruhinya.

Contoh apabila kita membutuhkan data dari jumlah user yang aktif untuk setiap page site maka biasanya kita melakukan scan query pada tabel user, tabel visit user. Kareba jumlah visit user ini bisa sangat banyak per harinya maka proses kalkulasi total data akan sangat berat. Akan tetapi, jika kita melakukan kalkulasi sebelumnya berdasarkan trigger user view atau aktif pada suatu page dan disimpan pada tabel view ini maka query untuk mencari tahu jumlah user aktif per page menjadi sangat cepat dan mudah.

Kita dapat mengimplementasikan konsep yang sama di atas pada CQRS dengan batuan Kafka agar proses menjadi asinkron. Untuk implementasinya kita bisa menggunakan Kafka biasa dimana di bagian consumer kita aggregate proses nya dan tulis ke dalam table di database yang kita khususnya untuk read. Selain itu kita juga dapat menggunakan Kafka stream atau KSQL.

Kelebihan dari CQRS dengan di Enhance Materialized View adalah kita dapat melakukan horizontal scale secara terpisah antara bagian command dan bagian view ( query) serta proses write akan terlepas dari harus menunggu proses kalkulasi.

Polyglot Views

Apapun permasalahan dengan besarnya ukuran data yang kita miliki untuk proses pencarian teks, kumpulan analitik,dan pencarian berbasis key sebenarnya ada beberapa jenis database yang sesuai.

Akan tetapi, tidak ada jenis database yang akan cocok untuk setiap kebutuhan pencarian data ini. Dengan menggunakan CQRS kita dapat membuat satu proses write tetapi memiliki banyak jenis model view ( polyglot).

Sebagai contoh untuk kasus diatas kita akan bisa membuat view untuk agregat total data aktif per page dan data distribusi dari penyebaran page view sehingga kita mengetahui page mana saja yang sangar sering dikunjungi oleh pengguna.

Selain itu dengan CQRS kita dapat menggunakan jenis database untuk keperluan view yang berbeda. Misalkan kita bisa menggunakan Elasticsearch dan Redis pada Polyglot sehingga cocok dengan kebutuhan bisnis.

Kesimpulan

Kita sudah sampai pada pembahasan terakhir terkait pattern-pattern yang sering digunakan dalam event driven arsitektur. Mulai dari artikel pertama yang membahas dasar-dasar dari Event dengan penggunaan Kafka sampai pada implementasi-implementasi dari event dan kegunaannya.

Membuat sistem dengan pendekatan event ini sangat berbeda dengan pendekatan lama yang rata-rata berbasis request respon yang blocking. Sedangkan event berbasis asinkron dan non blocking proses.

Selanjutnya kita akan masuk ke pembahasan bagaimana kita akan mengimpleasi semua ini di lingkungan arsitektur yang lebih luas. Misalkan bagaimana kita mengimplement arsitektur untuk level perusahaan besar. Stay Tuned!!!.

References

  1. Adam Bellemare. 2020. Building Event-Driven Microservices. USA: O’Reilly Media, Inc.
  2. Escoffier, Clement. 2017. Building Reactive Microservices in Java. USA: O’Reilly Media, Inc.
  3. Stopford, Ben. 2018. Designing Event-Driven System. USA: O’Reilly Media, Inc.
  4. Boner, Jonas. 2016. Reactive Microservice Architecture. USA: O’Reilly Media, Inc.

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