Thursday, March 10, 2011

CQRS

Salam 1Malaysia

CQRS Architecture pattern, agak complex jika pertama kali membaca artikel atau mendengar mana-mana presentation berkaitan.

Objektif utama ialah untuk membezakan antara (read) dan (write) domain object. Itu sahaja, cuma untuk mencapai objektif tersebut terdapat beberapa cara penyelesaian yang boleh diguna pakai.

Penyelesaian yang paling umum ialah dengan membezakan proces (write domain object) dan proces (read domain object) menggunakan component yang berlainan.

Ok sebelum itu image dibawah adalah contoh architecture design yang biasa digunakan



Jika diperhatikan process write dan read mengunakan component yang sama dan melalui process yang sama dari client hingga ke server.

Masalah utama ialah untuk ialah scalability dan performance. Umum mengetahui write process adalah lebih lama dari read process, tetapi apabila satu domain digunakan untuk read dan juiga write, ini akan memberikan penalti dari segi performance.

Dari segi database, apabila write dilakukan, sql server akan lock row sehingga process write tadi selesai dan jika pada masa yang sama terdapat client yang ingin membaca data tersebut, client tersebut perlulah menunggu sehingga process tersebut selesai. Untuk sistem yang trafiknya adalah kecil, keadaan ini tidak mengganggu performance tetapi bagi trafik yang besar,peratusan kemungkinan sistem akan crash adalah besar.

So untuk next coretan, insyAllah akan bawa contoh penyelesaian yang boleh digunakan.

Salam 2Malaysia :)

0 comments: