Membuat layanan pembantu yang mengirim permintaan jaringan atas nama layanan atau aplikasi konsumen. Layanan duta besar dapat dianggap sebagai proxy di luar proses yang berlokasi bersama dengan klien.
Pola ini dapat berguna untuk membongkar tugas konektivitas klien umum seperti pemantauan, pencatatan, perutean, keamanan (seperti TLS), dan pola ketahanan dengan cara bahasa agnostik. Ini sering digunakan dengan aplikasi warisan, atau aplikasi lain yang sulit dimodifikasi, untuk memperluas kemampuan jaringan mereka. Hal ini juga dapat memungkinkan tim khusus untuk menerapkan fitur-fitur tersebut.
Konteks dan masalah
Aplikasi berbasis awan yang tangguh memerlukan fitur seperti pemutus sirkuit, perutean, pengukuran dan pemantauan, serta kemampuan untuk membuat pembaruan konfigurasi terkait jaringan. Mungkin sulit atau tidak mungkin untuk memperbarui aplikasi lama atau pustaka kode yang ada untuk menambahkan fitur ini, karena kode tidak lagi dipertahankan atau tidak mudah dimodifikasi oleh tim pengembangan.
Panggilan jaringan mungkin juga memerlukan konfigurasi substansial untuk koneksi, autentikasi, dan otorisasi. Jika panggilan ini digunakan di beberapa aplikasi, dibangun menggunakan beberapa bahasa dan kerangka kerja, panggilan harus dikonfigurasi untuk masing-masing instans ini. Selain itu, fungsi jaringan dan keamanan mungkin perlu dikelola oleh tim pusat dalam organisasi Anda. Dengan basis kode yang besar, dapat berisiko bagi tim tersebut untuk memperbarui kode aplikasi yang tidak mereka kenal.
Solusi
Masukkan kerangka kerja dan pustaka klien ke dalam proses eksternal yang bertindak sebagai proxy antara aplikasi anda dan layanan eksternal. Sebarkan proxy pada lingkungan host yang sama dengan aplikasi Anda untuk memungkinkan kontrol atas perutean, ketahanan, fitur keamanan, dan untuk menghindari pembatasan akses terkait host. Anda juga dapat menggunakan pola duta besar untuk membakukan dan memperluas instrumentasi. Proxy dapat memantau metrik kinerja seperti latensi atau penggunaan sumber daya, dan pemantauan ini terjadi di lingkungan host yang sama dengan aplikasi.
Fitur yang diturunkan ke duta besar dapat dikelola secara independen dari aplikasi. Anda dapat memperbarui dan memodifikasi duta besar tanpa mengganggu fungsi warisan aplikasi. Ini juga memungkinkan tim khusus yang terpisah untuk menerapkan dan memelihara fitur keamanan, jaringan, atau autentikasi yang telah dipindahkan ke duta besar.
Layanan Ambassador dapat digunakan sebagai sespan untuk mendampingi siklus hidup aplikasi atau layanan yang dikonsumsi. Atau, jika duta besar dibagikan oleh beberapa proses terpisah pada host yang sama, duta tersebut dapat digunakan sebagai daemon atau layanan Windows. Jika layanan konsumsi ditampung di kontainer, duta besar harus dibuat sebagai kontainer terpisah pada host yang sama, dengan tautan yang sesuai dikonfigurasi untuk komunikasi.
Masalah dan pertimbangan
- Proxy menambahkan beberapa overhead latensi. Pertimbangkan apakah perpustakaan klien, yang dipanggil langsung oleh aplikasi, adalah pendekatan yang lebih baik.
- Pertimbangkan kemungkinan dampak memasukkan fitur umum dalam proxy. Misalnya, duta besar dapat menangani percobaan ulang, tetapi itu mungkin tidak aman kecuali semua operasi idempoten.
- Pertimbangkan mekanisme untuk memungkinkan klien meneruskan beberapa konteks ke proksi, dan kembali ke klien. Misalnya, sertakan header permintaan HTTP untuk memilih keluar dari percobaan ulang atau tentukan berapa kali maksimum untuk mencoba lagi.
- Pertimbangkan bagaimana Anda akan mengemas dan menyebarkan proksi.
- Pertimbangkan apakah akan menggunakan satu instans bersama untuk semua klien atau satu instans untuk setiap klien.
Kapan menggunakan pola ini
Gunakan pola ini ketika:
- Perlu membangun seperangkat fitur konektivitas klien yang umum untuk berbagai bahasa atau kerangka kerja.
- Perlu membongkar masalah konektivitas klien lintas sektor ke pengembang infrastruktur atau tim lain yang lebih khusus.
- Perlu mendukung persyaratan konektivitas cloud atau kluster dalam aplikasi lama atau aplikasi yang sulit dimodifikasi.
Pola ini mungkin tidak cocok:
- Saat latensi permintaan jaringan sangat penting. Proksi memperkenalkan beberapa overhead, meskipun minimal, dan dalam beberapa kasus ini dapat memengaruhi aplikasi.
- Saat fitur konektivitas klien digunakan oleh satu bahasa. Dalam hal ini, opsi yang lebih baik mungkin adalah pustaka klien yang didistribusikan ke tim pengembangan sebagai sebuah paket.
- Ketika fitur konektivitas tidak dapat digeneralisasi dan memerlukan integrasi yang lebih dalam dengan aplikasi klien.
Desain beban kerja
Arsitek harus mengevaluasi bagaimana pola Duta Besar dapat digunakan dalam desain beban kerja mereka untuk mengatasi tujuan dan prinsip yang tercakup dalam pilar Azure Well-Architected Framework. Contohnya:
Pilar | Bagaimana pola ini mendukung tujuan pilar |
---|---|
Keputusan desain keandalan membantu beban kerja Anda menjadi tahan terhadap kerusakan dan untuk memastikan bahwa keputusan tersebut pulih ke status berfungsi penuh setelah kegagalan terjadi. | Titik mediasi komunikasi jaringan yang difasilitasi oleh pola ini memberikan kesempatan untuk menambahkan pola keandalan ke komunikasi jaringan, seperti coba lagi atau buffering. - RE:07 Pelestarian Mandiri |
Keputusan desain keamanan membantu memastikan kerahasiaan, integritas, dan ketersediaan data dan sistem beban kerja Anda. | Pola ini memberikan kesempatan untuk menambah keamanan pada komunikasi jaringan yang tidak dapat ditangani oleh klien secara langsung. - Kontrol JARINGAN SE:06 - Enkripsi SE:07 |
Seperti halnya keputusan desain apa pun, pertimbangkan tradeoff terhadap tujuan pilar lain yang mungkin diperkenalkan dengan pola ini.
Contoh
Diagram berikut menunjukkan aplikasi yang membuat permintaan ke layanan jarak jauh melalui proxy duta besar. Duta besar menyediakan perutean, pemutusan sirkuit, dan pencatatan. Permintaan tersebut memanggil layanan jarak jauh dan kemudian menghasilkan respons ke aplikasi klien: