Aplikasi yang didistribusikan secara global menggunakan Azure Cosmos DB

Cosmos DB
Traffic Manager

Menjamin akses ke pengguna di seluruh dunia dengan ketersediaan tinggi dan kemampuan latensi rendah yang dibuat ke dalam pusat data global Microsoft.

Potensi penggunaan kasus

Solusi ini sangat ideal untuk industri media dan hiburan serta industri perjalanan dan perhotelan. Yang terbaik adalah organisasi yang perlu memiliki layanan yang ditawarkan di area atau wilayah. Beberapa skenario yang menggunakan aplikasi yang didistribusikan secara global meliputi:

  • Streaming layanan video (Netflix, Youtube, HBO, dan sebagainya)
  • Layanan penjemputan dan pengiriman (Uber dan Uber Eats, Lyft, Instacart, Doordash, dan sebagainya)

Arsitektur

Diagram arsitektur menunjukkan alur pengguna yang mengakses aplikasi, Azure Traffic Manager merutekan koneksi ke lokasi terbaik untuk akses, ke Azure Cosmos D B.
Unduh versi SVG dari arsitektur ini.

Aliran data

  1. Pengguna mengakses aplikasi melalui klien khusus.
  2. Azure Traffic Manager akan merutekan koneksi pengguna ke lokasi terbaik untuk mengakses aplikasi, berdasarkan profil perutean tunggal atau berlapis.
  3. Di wilayah pendaratan tempat aplikasi dihosting, aplikasi akan menangani sesi dan koneksi ke database.
  4. Aplikasi ini dapat berkisar dari halaman statis sederhana hingga aplikasi berorientasi layanan mikro yang dihosting di Kubernetes untuk instans.
  5. Koneksi antara lanskap aplikasi dan Azure Cosmos DB ditangani melalui Pengguna Azure Active Directory yang dapat mengambil kunci Azure Cosmos DB di Key Vault.
  6. Aplikasi Anda mengetahui wilayah terdekat dan dapat mengirim permintaan ke wilayah tersebut dengan menggunakan API multi-homing Azure Cosmos DB. Wilayah terdekat diidentifikasi tanpa perubahan konfigurasi. Saat Anda menambahkan dan menghapus wilayah ke dan dari akun Azure Cosmos DB Anda, aplikasi Anda tidak perlu disebarkan ulang atau dijeda. Aplikasi terus sangat tersedia. Di bawah sampul, Azure Cosmos DB akan menangani distribusi global dan replikasi data berdasarkan jumlah wilayah yang ditentukan. Sebagai tambahan, seseorang juga harus mendapat keuntungan dari opsi Failover Otomatis untuk melakukan failover ke wilayah dengan prioritas failover tertinggi tanpa tindakan pengguna jika suatu wilayah menjadi tidak tersedia. Ketika failover otomatis diaktifkan, prioritas wilayah dapat dimodifikasi.

Komponen

  • Azure Traffic Manager: buat opsi penyeimbangan beban/perutean berbasis DNS untuk aplikasi Anda dengan enam jenis opsi perutean lalu lintas berbasis DNS, yang dapat disarangkan.
  • Azure Active Directory: Sinkronkan direktori lokal dan aktifkan akses menyeluruh.
  • Azure Cosmos DB: Layanan database multimodel yang terdistribusi secara global.

Alternatif

Anda dapat memperluas skenario ini dengan beberapa opsi komputasi dan tanpa server.

Opsi komputasi

  • Azure Virtual Machines: Buat mesin virtual (VM) Linux dan Windows dalam hitungan detik dan kurangi biaya.
  • Azure Kubernetes Services: Layanan Kubernetes yang sangat tersedia, aman, dan dikelola penuh untuk semua beban kerja basis aplikasi dan layanan mikro Anda.
  • App Service: Buat aplikasi cloud yang kuat untuk web dan seluler dengan cepat.

Opsi tanpa server

Pertimbangan

Ketersediaan

Ketersediaan instans Azure Cosmos DB tergantung pada banyak faktor. Semakin besar jumlah wilayah tempat Azure Cosmos DB direplikasi, semakin besar ketersediaan aplikasi. Setiap wilayah berisi semua partisi data dari kontainer Azure Cosmos DB dan dapat menyajikan pembacaan, secara default. Untuk meningkatkan ketersediaan lapisan data, Anda dapat mengaktifkan penulisan multiwilayah. Anda juga dapat meningkatkan ketersediaan dengan menggunakan tingkat konsistensi dan zona ketersediaan yang lebih lemah.

Saat mempertimbangkan pendekatan di atas, jika Anda mencapai ketersediaan tinggi pada Failover Otomatis Azure Cosmos DB, Anda mengonfigurasi solusi untuk menjaga aplikasi yang berjalan pada SLA setinggi mungkin yang disediakan.

Untuk lapisan aplikasi, Traffic Manager harus dikonfigurasi dengan profil bersarang. Saat mendorong desain ini ke tingkat tertinggi, Anda dapat menskalakan pilihan aplikasi yang berbeda, per wilayah. Penyebaran per wilayah juga membutuhkan pendekatan ketersediaan tinggi.

Performa

Performa sistem dipengaruhi oleh banyak faktor di tingkat komputasi dan database. SKU untuk paket App Service atau opsi komputasi lainnya memengaruhi memori dan inti yang tersedia di setiap wilayah. Selain itu, jumlah wilayah lapisan komputasi disebarkan untuk dapat menentukan skala yang mampu ditangani. Penyebaran lebih banyak lokasi meringankan tekanan dari wilayah yang ada dan harus menyebabkan peningkatan linier dalam throughput maksimum yang dapat dipenuhi aplikasi.

Azure Cosmos DB harus dikonfigurasi sehingga tidak menyebabkan hambatan untuk sumber daya tingkat komputasi. Setiap database dan kontainer di Azure Cosmos DB harus dikonfigurasi untuk skala otomatis dan harus disediakan dengan nilai unit permintaan maksimum yang memastikan Azure Cosmos DB tidak membatasi permintaan. Untuk menentukan nilai unit permintaan maks yang sesuai untuk entitas Azure Cosmos DB, Anda dapat menjalankan pengujian beban mendekati perkiraan throughput maksimum untuk aplikasi. Jika dibandingkan dengan rekan-rekannya yang lebih kuat, tingkat konsistensi yang lebih lemah menawarkan keuntungan throughput dan performa yang lebih tinggi.

Sangat penting, saat menerapkan logika dalam kode yang membaca dari dan menulis ke Azure Cosmos DB, apakah itu melalui SDK, Azure Functions pengikatan, dan sebagainya, PreferredLocations harus digunakan sehingga setiap API regional merutekan permintaan ke wilayah Azure Cosmos DB terdekat. Berdasarkan konfigurasi akun Azure Cosmos DB, ketersediaan regional saat ini, dan daftar preferensi yang ditentukan, SDK memilih titik akhir yang paling optimal untuk melakukan operasi baca dan tulis. Proses ini menghasilkan peningkatan performa yang signifikan.

Resiliency

Untuk ketahanan yang lebih tinggi, Anda dapat menggunakan zona ketersediaan untuk penyebaran Azure Cosmos DB. Ketahanan juga tergantung pada pilihan tingkat konsistensi yang Anda buat pada penyebaran Azure Cosmos DB Anda. Bergantung pada tingkat konsistensi ini, Anda akan mencapai tingkat ketahanan yang berbeda (lihat Konsistensi, ketersediaan, dan tradeoff performa untuk informasi selengkapnya).

Skalabilitas

Penskalaan didasarkan pada banyak level dalam diagram ini. Azure Cosmos DB dibuat khusus untuk skala elastis dan performa yang dapat diprediksi. Pada tingkat aplikasi, Anda perlu melihat model komputasi yang digunakan. Azure Functions dan App Service dapat melakukan penskalaan otomatis. Untuk Azure Virtual Machines, Anda dapat menggunakan Azure Virtual Machine Scale Sets. Ketika Anda mengetahui kebutuhan ini, Anda harus selalu mempertimbangkan opsi tanpa server, jika memungkinkan.

Keamanan

Dari perspektif keamanan, dorong menuju sistem berbasis identitas, yang mana Azure Active Directory dapat digunakan untuk mengamankan akses ke lingkungan. Di backend, aplikasi ini (dengan desain terbaik) diakses melalui Identitas Terkelola, meskipun Identitas Terkelola juga dapat mempertimbangkan pendekatan menggunakan Pengguna Azure Active Directory dan Azure Key Vault untuk mengamankan akses. Instans Azure Cosmos DB harus diamankan lebih lanjut. Satu-satunya entitas yang mampu membaca dan menulis ke sana adalah berbagai backend yang disebarkan ke berbagai wilayah. Pembatasan IP dapat diterapkan ke akun dengan menggunakan firewall bawaan.

Kami juga mendukung RBAC Azure Active Directory langsung di Azure Cosmos DB untuk NoSQL.

Langkah berikutnya

Selengkapnya tentang Azure Cosmos DB:

Lebih lanjut tentang Azure Traffic Manager:

Ide solusi terkait:

Arsitektur lengkap terkait:

Panduan arsitektur terkait: