Dalam arsitektur layanan mikro, klien mungkin berinteraksi dengan lebih dari satu layanan front-end. Mengingat fakta ini, bagaimana klien tahu titik akhir apa yang akan dipanggil? Apa yang terjadi ketika layanan baru diperkenalkan, atau layanan yang ada direfaktor? Bagaimana layanan menangani penghentian SSL, TLS bersama, autentikasi, dan masalah lainnya? Gateway API dapat membantu mengatasi tantangan ini.
Diagram
Unduh file Visio arsitektur ini.
Apa itu gateway API?
Gateway API menyediakan titik masuk terpusat untuk mengelola interaksi antara klien dan layanan aplikasi. Ini bertindak sebagai proksi terbalik dan merutekan permintaan klien ke layanan yang sesuai. Ini juga dapat melakukan berbagai tugas lintas pemotongan seperti autentikasi, penghentian SSL, TLS bersama, dan pembatasan tarif.
Mengapa menggunakan gateway API?
Gateway API menyederhanakan komunikasi, meningkatkan interaksi klien, dan mempusatkan manajemen tanggung jawab tingkat layanan umum. Ini bertindak sebagai perantara, dan mencegah paparan langsung layanan aplikasi kepada klien. Tanpa gateway API, klien harus berkomunikasi langsung dengan layanan aplikasi individual, yang dapat memperkenalkan tantangan berikut:
kode klien Kompleks: Ini dapat menghasilkan kode klien yang kompleks. Klien harus melacak beberapa titik akhir dan menangani kegagalan dengan tangguh.
coupling ketat: Ini menciptakan konpling antara klien dan backend. Klien perlu memahami dekomposisi layanan individual, mempersulit pemeliharaan layanan dan pemfaktoran ulang.
Peningkatan latensi: Satu operasi mungkin memerlukan panggilan ke beberapa layanan. Hasilnya dapat berupa beberapa perjalanan pulang pergi jaringan antara klien dan server, menambahkan latensi yang signifikan.
Penanganan masalah redundan: Setiap layanan yang menghadap publik harus menangani masalah seperti autentikasi, SSL, dan pembatasan tarif klien.
Batasan protokol: Layanan harus mengekspos protokol ramah klien seperti HTTP atau WebSocket. Paparan ini membatasi protokol komunikasi opsi.
Permukaan serangan yang diperluas: Titik akhir publik meningkatkan permukaan serangan potensial dan memerlukan pengerasan.
Cara menggunakan gateway API
Gateway API dapat disesuaikan dengan persyaratan aplikasi Anda dengan menggunakan pola desain tertentu. Pola desain ini membahas fungsionalitas utama seperti perutean, agregasi permintaan, dan masalah lintas pemotongan:
perutean Gateway. Anda dapat menggunakan gateway API sebagai proksi terbalik untuk merutekan permintaan klien ke layanan aplikasi yang berbeda. Gateway API menggunakan perutean lapisan-7 dan menyediakan satu titik akhir untuk digunakan klien. Gunakan perutean gateway API saat Anda ingin memisahkan klien dari layanan aplikasi.
agregasi gateway. Anda dapat menggunakan gateway API untuk mengagregasi beberapa permintaan klien ke dalam satu permintaan. Gunakan pola ini ketika satu operasi memerlukan panggilan ke beberapa layanan aplikasi. Dalam agregasi API, klien mengirim satu permintaan ke gateway API. Kemudian, gateway API merutekan permintaan ke berbagai layanan yang diperlukan untuk operasi. Terakhir, gateway API menggabungkan hasil dan mengirimkannya kembali ke klien. Agregasi membantu mengurangi obrolan antara klien dan layanan aplikasi.
Gateway offloading. Anda dapat menggunakan gateway API untuk menyediakan fungsionalitas lintas-pemotongan, sehingga layanan individual tidak perlu menyediakannya. Ini dapat berguna untuk mengonsolidasikan fungsionalitas lintas-pemotongan ke dalam satu tempat, daripada membuat setiap layanan bertanggung jawab. Berikut adalah contoh fungsionalitas yang dapat Anda offload ke gateway API:
- Penghentian SSL
- TLS Bersama
- Otentikasi
- Daftar ip yang diizinkan atau daftar blokir
- Pembatasan laju klien (pembatasan)
- Pengelogan dan pemantauan
- Penembolokan respons
- Firewall aplikasi web
- Pemadatan GZIP
- Melayani konten statis
Opsi gateway API
Berikut adalah beberapa opsi untuk menerapkan gateway API di aplikasi Anda.
Server proksi terbalik. Nginx dan HAProxy adalah penawaran proksi terbalik sumber terbuka. Mereka mendukung fitur seperti penyeimbangan beban, penghentian SSL, dan perutean lapisan-7. Mereka memiliki versi gratis dan edisi berbayar yang menyediakan fitur tambahan dan opsi dukungan. Produk-produk ini matang dengan set fitur yang kaya, performa tinggi, dan dapat diperluas.
Pengontrol ingress jala Layanan. Jika Anda menggunakan jala layanan, evaluasi fitur pengontrol ingress khusus untuk jala layanan tersebut. Periksa add-on yang didukung AKS seperti Istio dan Open Service Mesh. Cari proyek sumber terbuka pihak ketiga seperti Linkerd atau Consul Connect. Misalnya, pengontrol ingress Istio mendukung perutean lapisan 7, pengalihan HTTP, percobaan ulang, dan fitur lainnya.
Azure Application Gateway. Application Gateway adalah layanan penyeimbang beban terkelola. Ini menyediakan perutean lapisan-7, penghentian SSL, dan firewall aplikasi web (WAF).
Azure Front Door. Azure Front Door adalah jaringan pengiriman konten (CDN). Ini menggunakan titik kehadiran (POP) global dan lokal untuk menyediakan akses cepat, andal, dan aman ke konten web statis dan dinamis aplikasi Anda secara global.
Azure API Management . API Management adalah solusi terkelola untuk menerbitkan API kepada pelanggan eksternal dan internal. Ini menyediakan fitur untuk mengelola API yang menghadap publik, termasuk pembatasan tarif, pembatasan IP, dan autentikasi menggunakan ID Microsoft Entra atau idP lainnya. API Management tidak melakukan penyeimbangan beban apa pun, jadi Anda harus menggunakannya dengan load balancer, seperti Azure Application Gateway, atau proksi terbalik. Untuk informasi, lihat API Management dengan Azure Application Gateway.
Pilih teknologi gateway API
Saat memilih gateway API, pertimbangkan faktor-faktor berikut:
Mendukung semua persyaratan. Pilih gateway API yang mendukung fitur yang diperlukan. Semua opsi gateway API sebelumnya mendukung perutean lapisan-7. Tetapi dukungan mereka untuk fitur lain, seperti autentikasi, pembatasan tarif, dan penghentian SSL, dapat bervariasi. Menilai apakah satu gateway memenuhi kebutuhan Anda atau apakah beberapa gateway diperlukan.
Lebih suka penawaran bawaan. Gunakan gateway API bawaan dan solusi masuk yang disediakan oleh platform Anda, seperti Azure Container Apps dan AKS, setiap kali memenuhi persyaratan keamanan dan kontrol Anda. Hanya gunakan gateway kustom jika opsi bawaan tidak memiliki fleksibilitas yang diperlukan. Solusi kustom memerlukan model tata kelola, seperti GitOps, untuk mengelola siklus hidupnya secara efektif.
Pilih model penyebaran yang tepat. Gunakan layanan terkelola seperti Azure Application Gateway dan Azure API Management untuk mengurangi overhead operasional. Jika Anda menggunakan proksi terbalik tujuan umum atau load balancer, sebarkan dengan cara yang selaras dengan arsitektur Anda. Anda dapat menyebarkan gateway API tujuan umum ke komputer virtual khusus atau di dalam kluster AKS dalam penawaran Pengontrol Ingress mereka. Untuk mengisolasi gateway API dari beban kerja, Anda dapat menyebarkannya di luar kluster, tetapi penyebaran ini meningkatkan kompleksitas manajemen.
Kelola perubahan. Saat memperbarui layanan atau menambahkan yang baru, Anda mungkin perlu memperbarui aturan perutean gateway. Terapkan proses atau alur kerja untuk mengelola aturan perutean saat menambahkan atau memodifikasi layanan, sertifikat SSL, daftar izin IP, dan konfigurasi keamanan. Gunakan alat infrastruktur sebagai kode dan otomatisasi untuk menyederhanakan manajemen gateway API.
Langkah berikutnya
Artikel sebelumnya menjelajahi antarmuka antara layanan mikro dan antara layanan mikro dan aplikasi klien. Antarmuka ini memperlakukan setiap layanan sebagai unit buram mandiri. Prinsip penting arsitektur layanan mikro adalah bahwa layanan tidak boleh mengekspos detail internal tentang cara mereka mengelola data. Pendekatan ini memiliki implikasi signifikan untuk menjaga integritas dan konsistensi data, yang merupakan subjek dari artikel berikutnya.
pertimbangan data untuk layanan mikro