Bagikan melalui


Pola komunikasi cloud-native

Petunjuk / Saran

Konten ini adalah kutipan dari eBook, Merancang Aplikasi .NET Cloud Native untuk Azure, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.

Aplikasi .NET Cloud Native untuk gambar mini sampul Azure eBook.

Saat membangun sistem cloud-native, komunikasi menjadi keputusan desain yang signifikan. Bagaimana cara aplikasi klien front-end berkomunikasi dengan layanan mikro back-end? Bagaimana layanan mikro back-end berkomunikasi satu sama lain? Apa saja prinsip, pola, dan praktik terbaik yang perlu dipertimbangkan saat mengimplementasikan komunikasi dalam aplikasi cloud-native?

Pertimbangan komunikasi

Dalam aplikasi monolitik, komunikasi sangat mudah. Modul kode dieksekusi bersama dalam ruang (proses) executable yang sama di server. Pendekatan ini dapat memiliki keunggulan performa karena semuanya berjalan bersama dalam memori bersama, tetapi menghasilkan kode yang digabungkan erat yang menjadi sulit untuk dipertahankan, dikembangkan, dan ditingkatkan.

Sistem cloud-native menerapkan arsitektur berbasis layanan mikro dengan banyak layanan mikro kecil dan independen. Setiap layanan mikro dijalankan dalam proses terpisah dan biasanya berjalan di dalam kontainer yang disebarkan ke kluster.

Kluster mengelompokkan kumpulan mesin virtual bersama-sama untuk membentuk lingkungan yang sangat tersedia. Kluster tersebut dikelola dengan alat orkestrasi, yang bertanggung jawab untuk menyebarkan dan mengelola layanan mikro dalam kontainer. Gambar 4-1 menunjukkan kluster Kubernetes yang disebarkan ke cloud Azure dengan Azure Kubernetes Services yang dikelola penuh.

Kluster Kubernetes di Azure

Gambar 4-1. Kluster Kubernetes di Azure

Di seluruh kluster, layanan mikro berkomunikasi satu sama lain melalui API dan teknologi olahpesan.

Meskipun memberikan banyak manfaat, layanan mikro bukan makan siang gratis. Panggilan metode dalam proses lokal di antara komponen sekarang diganti dengan panggilan jaringan. Setiap layanan mikro harus berkomunikasi melalui protokol jaringan, yang menambah kompleksitas pada sistem Anda:

  • Kemacetan jaringan, latensi, dan kesalahan sementara menjadi masalah konstan.
  • Ketahanan (yaitu, mencoba kembali permintaan yang gagal) sangat penting.
  • Beberapa panggilan harus idempoten untuk menjaga status yang konsisten.
  • Setiap layanan mikro harus mengautentikasi dan mengotorisasi panggilan.
  • Setiap pesan harus diserialisasikan, lalu dideserialisasi - yang bisa mahal.
  • Enkripsi/dekripsi pesan menjadi penting.

Buku Layanan Mikro .NET: Arsitektur untuk Aplikasi .NET dalam Kontainer, tersedia secara gratis dari Microsoft, menyediakan cakupan mendalam pola komunikasi untuk aplikasi layanan mikro. Dalam bab ini, kami memberikan gambaran umum tingkat tinggi tentang pola-pola ini bersama dengan opsi implementasi yang tersedia di cloud Azure.

Dalam bab ini, pertama-tama kita akan membahas komunikasi antara aplikasi front-end dan layanan mikro back-end. Kita kemudian akan melihat layanan mikro back-end saling berkomunikasi. Kita akan menjelajahi teknologi komunikasi up dan gRPC. Terakhir, kita akan melihat pola komunikasi inovatif baru menggunakan teknologi jala layanan. Kita juga akan melihat bagaimana cloud Azure menyediakan berbagai jenis layanan pendukung untuk mendukung komunikasi cloud-native.