Pola CQRS - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pola CQRS

Pola pemisahan tanggung jawab permintaan perintah (CQRS) memisahkan mutasi data, atau bagian perintah sistem, dari bagian kueri. Anda dapat menggunakan pola CQRS untuk memisahkan pembaruan dan kueri jika mereka memiliki persyaratan yang berbeda untuk throughput, latensi, atau konsistensi. Pola CQRS membagi aplikasi menjadi dua bagian — sisi perintah dan sisi query — seperti yang ditunjukkan pada diagram berikut. Sisi perintah menanganicreate,update, dan delete permintaan. Sisi kueri menjalankan query bagian dengan menggunakan replika baca.

Tampilan pola CQRS tingkat tinggi

Diagram menunjukkan proses berikut:

  1. Bisnis berinteraksi dengan aplikasi dengan mengirimkan perintah melalui API. Perintah adalah tindakan seperti membuat, memperbarui atau menghapus data.

  2. Aplikasi memproses perintah yang masuk di sisi perintah. Ini melibatkan validasi, otorisasi, dan menjalankan operasi.

  3. Aplikasi mempertahankan data perintah dalam database write (command).

  4. Setelah perintah disimpan dalam database tulis, peristiwa dipicu untuk memperbarui data dalam database baca (kueri).

  5. Database baca (kueri) memproses dan mempertahankan data. Database baca dirancang untuk dioptimalkan untuk persyaratan kueri tertentu.

  6. Bisnis berinteraksi dengan API baca untuk mengirim kueri ke sisi kueri aplikasi.

  7. Aplikasi memproses kueri yang masuk di sisi kueri dan mengambil data dari database baca.

Anda dapat menerapkan pola CQRS dengan menggunakan berbagai kombinasi database, termasuk:

  • Menggunakan database sistem manajemen basis data relasional (RDBMS) untuk kedua perintah dan sisi query. Operasi tulis masuk ke database utama dan operasi baca dapat dirutekan untuk membaca replika. Contoh: Amazon RDS membaca replika

  • Menggunakan database RDBMS untuk sisi perintah dan database NoSQL untuk sisi query. Contoh: Memodernisasi database lama menggunakan sumber acara dan CQRS dengan AWS DMS

  • Menggunakan database NoSQL untuk kedua perintah dan sisi query. Contoh: Membangun toko acara CQRS dengan Amazon DynamoDB

  • Menggunakan database NoSQL untuk sisi perintah dan database RDBMS untuk sisi query, seperti yang dibahas dalam contoh berikut.

Dalam ilustrasi berikut, penyimpanan data NoSQL, seperti DynamoDB, digunakan untuk mengoptimalkan throughput tulis dan menyediakan kemampuan kueri yang fleksibel. Ini mencapai skalabilitas penulisan yang tinggi pada beban kerja yang memiliki pola akses yang terdefinisi dengan baik saat Anda menambahkan data. Database relasional, seperti Amazon Aurora, menyediakan fungsionalitas kueri yang kompleks. Aliran DynamoDB mengirimkan data ke fungsi Lambda yang memperbarui tabel Aurora.

Pola CQRS diimplementasikan dengan layanan AWS

Menerapkan pola CQRS dengan DynamoDB dan Aurora memberikan manfaat utama ini:

  • DynamoDB adalah database NoSQL yang dikelola sepenuhnya yang dapat menangani operasi penulisan volume tinggi, dan Aurora menawarkan skalabilitas baca tinggi untuk kueri kompleks di sisi kueri.

  • DynamoDB menyediakan akses data dengan latensi rendah dan throughput tinggi, yang membuatnya ideal untuk menangani operasi perintah dan pembaruan, dan kinerja Aurora dapat disetel dengan baik dan dioptimalkan untuk kueri yang kompleks.

  • DynamoDB dan Aurora menawarkan opsi tanpa server, yang memungkinkan bisnis Anda membayar sumber daya berdasarkan penggunaan saja.

  • DynamoDB dan Aurora adalah layanan yang dikelola sepenuhnya, yang mengurangi beban operasional pengelolaan database, backup, dan skalabilitas.

Anda harus mempertimbangkan untuk menggunakan pola CQRS jika:

  • Anda menerapkan database-per-service pola dan ingin menggabungkan data dari beberapa layanan mikro.

  • Beban kerja baca dan tulis Anda memiliki persyaratan terpisah untuk penskalaan, latensi, dan konsistensi.

  • Konsistensi akhirnya dapat diterima untuk kueri baca.

penting

Pola CQRS biasanya menghasilkan konsistensi antara penyimpanan data.