Memperluas arsitektur layanan

Selesai

Dengan aplikasi berbasis Express.js dikonfigurasi untuk menyediakan akses ke database PostgreSQL melalui rute REST API, Anda siap untuk menerapkan aplikasi web Next.js ujung depan yang memberikan kemampuan manajemen. Meskipun memungkinkan untuk membangun antarmuka ujung depan dengan menggunakan Express.js, Anda memutuskan untuk mengikuti arsitektur berbasis layanan dan memisahkan implementasi fungsi ujung depan dan ujung belakang.

Catatan

Demikian pula, Anda dapat menggunakan Next.js untuk menerapkan rute REST API.

Catatan

Next.js adalah kerangka kerja web pengembangan ujung depan sumber terbuka yang mencakup dukungan untuk penyajian sisi server.

Bagaimana cara memperluas arsitektur layanan

Aplikasi cenderung menjadi semakin kompleks, karena jumlah fitur mereka meningkat dalam menanggapi tuntutan untuk responsivitas yang cepat, fitur inovatif, dan waktu henti nol. Aplikasi cloud-native memfasilitasi pengembangan dan implementasi fitur-fitur ini melalui pemisahan antara komponen mereka yang digabungkan secara longgar.

Dalam kasus Anda, aplikasi Express.js mengekspos REST API yang menyediakan kemampuan untuk menambahkan data inventaris ke database PostgreSQL. Untuk mengamati data dan melakukan tugas manajemen data, Anda ingin menggunakan aplikasi Next.js. Ini adalah contoh pendekatan berbasis CQRS.

CQRS memisahkan model untuk membaca dan menulis data. Proses ini melibatkan membagi operasi sistem menjadi dua kategori terpisah:

  • Perintah yang mengubah status sistem.
  • Kueri yang hanya memberikan hasil, tanpa memengaruhi status sistem.

Dalam beberapa kasus, CQRS melampaui pemisahan operasi dan mencakup penyimpanan data fisik yang berbeda untuk baca dan tulis dengan replikasi menjaganya tetap sinkron.

Catatan

Dalam skenario yang lebih kompleks, sistem CQRS mungkin menerapkan Sumber Kejadian untuk pembaruan yang hanya menyimpan kejadian, bukan data aktual.

Masing-masing dari dua layanan yang akan Anda gunakan untuk mengimplementasikan pola ini memiliki model data sendiri yang sesuai dengan data aktual dalam database target. Karena pemisahan mereka, layanan mendapat manfaat dari kemampuan yang terkait dengan komponen aplikasi cloud-native, termasuk penskalaan independen, peningkatan tingkat ketahanan, dan dukungan untuk pembaruan tanpa perlu merancang ulang seluruh aplikasi.