Mengapa Microservices Membutuhkan API Gateway?
Xiaolan Cheng
February 17, 2023
Apa itu Microservices
Arsitektur microservice, yang biasanya disebut sebagai microservices, adalah jenis arsitektur yang digunakan untuk mengembangkan aplikasi. Dengan microservices, aplikasi besar dapat dipecah menjadi beberapa komponen independen, masing-masing dengan tanggung jawabnya sendiri. Saat memproses permintaan pengguna, aplikasi berbasis microservices dapat memanggil banyak microservices internal untuk menghasilkan respons secara bersama-sama. Microservices adalah hasil dari perkembangan internet, dan pertumbuhan pesat internet telah menyebabkan arsitektur sistem terus berubah.
Secara keseluruhan, arsitektur sistem telah berkembang dari arsitektur monolitik ke arsitektur SOA hingga arsitektur microservice. Perkembangan spesifik dan kelebihan serta kekurangan masing-masing arsitektur diuraikan dalam tabel di bawah ini.
| Jenis Arsitektur | Deskripsi | Kelebihan | Kekurangan |
|---|---|---|---|
| Arsitektur Aplikasi Monolitik | Mengemas semua kode fungsional ke dalam satu layanan. | 1. Arsitektur sederhana dengan biaya pengembangan dan pemeliharaan proyek yang rendah. | Menggabungkan semua modul bersama-sama bermanfaat untuk mengembangkan dan memelihara proyek kecil, tetapi dapat menimbulkan masalah untuk proyek besar, termasuk 1. Modul dalam proyek terlalu erat terkait, dan masalah kinerja dalam satu modul dapat menyebabkan seluruh proyek menjadi tidak tersedia; 2. Proyek membutuhkan skalabilitas yang lebih baik. |
| Arsitektur SOA | Istilah ini berarti "arsitektur berorientasi layanan," yang biasanya melibatkan beberapa layanan. Sebuah layanan biasanya ada secara independen dalam proses sistem operasi, dan komunikasi antara layanan dicapai melalui dependensi atau mekanisme komunikasi, Pada akhirnya, ini menyediakan serangkaian fungsi. | 1. Integrasi sistem: Dari perspektif sistem, ini menyelesaikan masalah komunikasi antara sistem perusahaan dengan mengubah koneksi jaringan yang sebelumnya tidak teratur dan tidak terstruktur menjadi konfigurasi bintang yang terkelola dan terstruktur. 2. Sistem berorientasi layanan: Dari perspektif fungsional, ini mengabstraksi logika bisnis menjadi layanan yang dapat digunakan kembali dan dikombinasikan serta menggunakan orkestrasi layanan untuk mencapai rekonstruksi cepat proses bisnis. 3. Bisnis berorientasi layanan: Dari perspektif perusahaan, ini mengabstraksi fungsi perusahaan menjadi layanan yang dapat digunakan kembali dan dikombinasikan. | 1. Memusatkan layanan menciptakan dependensi antara layanan, dan kerusakan dalam satu layanan dapat memicu kegagalan berantai di seluruh layanan lainnya. 2. Dependensi dan hubungan pemanggilan antara layanan kompleks, membuat pengujian dan penyebaran sulit. |
| Arsitektur Microservice | Microservices adalah penyempurnaan dari SOA. Salah satu penekanan utama dari arsitektur microservices adalah "kebutuhan untuk mengkomponenkan dan melayankan bisnis secara menyeluruh", Sistem bisnis tunggal asli akan dipecah menjadi beberapa bagian yang dapat dikembangkan, dirancang, dan disebarkan secara independen. Bagian-bagian ini akan berjalan sebagai aplikasi kecil yang independen. Setiap aplikasi akan berkolaborasi dan berkomunikasi dengan yang lain untuk mencapai integrasi dan interaktivitas, yang merupakan esensi dari arsitektur microservices. | 1. Desentralisasi; 2. Komponenisasi dicapai melalui layanan; 3. Membagi layanan dan tim pengembangan berdasarkan kemampuan bisnis; 4. Infrastruktur otomatisasi (DevOps, penyebaran otomatis). | 1. Biaya pengembangan relatif tinggi; 2. Menyebabkan masalah toleransi kesalahan untuk layanan; 3. Menyebabkan masalah konsistensi data; 4. Melibatkan transaksi terdistribusi |
Oleh karena itu, microservices adalah hasil yang tak terhindarkan dari perkembangan internet, dan arsitektur sistem banyak perusahaan tradisional secara bertahap menjadi berorientasi microservice.
Namun, dengan perkembangan bisnis internet, jumlah API juga meningkat secara dramatis, dan gateway untuk manajemen API yang terpadu juga akan menghadapi tantangan. Memilih gateway API yang lebih kuat dapat secara efektif meningkatkan kemampuan sistem dalam pemantauan, pemulihan bencana, autentikasi, dan pembatasan laju.
Apa itu API gateway?
API gateway menyediakan antarmuka terpadu untuk interaksi antara klien dan sistem layanan dan berfungsi sebagai titik pusat untuk mengelola permintaan dan respons. Memilih gateway API yang sesuai dapat menyederhanakan pengembangan dan meningkatkan efisiensi operasi dan manajemen sistem.
Dalam arsitektur microservices, API gateway berfungsi sebagai solusi untuk desain sistem dengan mengintegrasikan berbagai microservices dari modul yang berbeda dan mengkoordinasikan layanan secara terpadu.
Sebagai aspek akses sistem, API gateway menyediakan titik masuk terpadu untuk klien, menyembunyikan detail implementasi arsitektur sistem, dan membuat microservices lebih ramah pengguna. Ini juga mengintegrasikan beberapa fitur umum seperti autentikasi, pembatasan laju, dan pemutusan sirkuit untuk menghindari pengembangan individual setiap microservice, meningkatkan efisiensi, dan menstandarkan sistem, seperti autentikasi identitas, pemantauan, load balancing, pembatasan laju, degradasi, dan deteksi aplikasi.
Mengapa microservices membutuhkan API gateway?

Seperti yang ditunjukkan dalam diagram di atas, API gateway berfungsi sebagai lapisan perantara antara klien dan microservices. Ini dapat menyediakan microservices ke luar dengan alamat yang terpadu dan mengarahkan lalu lintas ke node layanan yang benar dalam kluster internal berdasarkan aturan yang sesuai.
Tanpa API gateway, pintu masuk dan keluar lalu lintas tidak terpadu, dan klien perlu mengetahui informasi akses semua layanan. Signifikansi microservices tidak akan ada. Oleh karena itu, gateway microservices diperlukan untuk arsitektur microservice. Selain itu, API gateway memainkan peran penting dalam observabilitas sistem, autentikasi identitas, stabilitas, dan penemuan layanan.
Tantangan yang dihadapi microservices
Gateway microservices pertama-tama harus memiliki kemampuan routing API. Seiring bertambahnya jumlah microservices, jumlah API juga meningkat. Gateway juga dapat digunakan sebagai filter lalu lintas dalam skenario tertentu untuk menyediakan fitur opsional tertentu. Oleh karena itu, tuntutan yang lebih tinggi ditempatkan pada gateway API microservices, seperti:
- Observabilitas: Di masa lalu, pemecahan masalah dalam aplikasi monolitik sering dilakukan dengan memeriksa log untuk pesan kesalahan dan stack pengecualian. Namun, dalam arsitektur microservices dengan banyak layanan, diagnosis masalah menjadi sangat sulit. Oleh karena itu, bagaimana memantau operasi microservices dan memberikan alarm cepat ketika terjadi anomali merupakan tantangan besar bagi pengembang.
- Autentikasi dan Otorisasi: Dalam arsitektur microservices, aplikasi dibagi menjadi beberapa mikro-aplikasi, yang perlu mengautentikasi akses dan menyadari pengguna saat ini dan izin mereka. Metode autentikasi dalam arsitektur aplikasi monolitik tidak cocok, terutama ketika akses tidak hanya dari browser tetapi juga dari panggilan layanan lain. Dalam arsitektur microservices, berbagai skenario autentikasi harus dipertimbangkan, termasuk akses aplikasi eksternal, autentikasi pengguna-layanan, dan autentikasi layanan-layanan.
- Stabilitas sistem: Jika jumlah permintaan melebihi kapasitas pemrosesan microservice, itu dapat membanjiri layanan, bahkan menyebabkan efek berantai yang memengaruhi stabilitas keseluruhan sistem.
- Penemuan layanan: Manajemen terdesentralisasi microservices juga menimbulkan tantangan untuk menerapkan load balancing.
Solusi
API gateway, sebagai jembatan perantara antara klien dan server, menyediakan mekanisme manajemen terpadu untuk sistem microservices. Selain fungsi dasar seperti distribusi permintaan, manajemen API, dan routing bersyarat, ini juga mencakup autentikasi identitas, pemantauan dan alarm, analisis pelacakan, load balancing, pembatasan laju, isolasi, dan pemutusan sirkuit.
Autentikasi identitas: Diagram berikut mengilustrasikan bagaimana microservices disatukan dengan API gateway untuk autentikasi identitas, di mana semua permintaan melewati gateway, secara efektif menyembunyikan microservices.

Pemantauan dan Peringatan/Analisis Pelacakan:
Sebagai perantara antara klien dan server, API gateway adalah pembawa yang sangat baik untuk memantau microservices.
Tanggung jawab utama fungsi pemantauan API gateway adalah mendeteksi anomali koneksi antara gateway dan server backend secara tepat waktu. Pengguna dapat melihat informasi log, informasi pemantauan, pelacakan, dll. pada platform pemantauan untuk API. Selain itu, setiap anomali yang muncul pada host akan secara otomatis dilaporkan ke panel kontrol. Gateway tertentu dapat mengeluarkan peringatan ganda ke klien dan server.

Pembatasan laju, isolasi, dan pemutusan sirkuit:
Seiring dengan peningkatan skala bisnis internet, konkurensi sistem juga meningkat. Beberapa layanan sering saling memanggil, dan tautan inti dapat memanggil hingga sepuluh layanan. Jika RT (waktu respons) suatu layanan naik tajam dan layanan hulu terus meminta, siklus jahat akan terjadi. Semakin banyak hulu yang menunggu hasil, semakin banyak layanan hulu yang akan terblokir, dan seluruh proses akhirnya menjadi tidak dapat digunakan, menyebabkan longsoran layanan.
Oleh karena itu, perlu untuk mengatur dan mengelola lalu lintas masuk. Diagram berikut menunjukkan bagaimana sistem microservice menggabungkan API gateway untuk melakukan pembatasan laju, isolasi, dan pemutusan sirkuit.

Pemilihan gateway utama
Banyak implementasi gateway open-source tersedia dalam microservices, termasuk NGINX, Kong, Apache APISIX, dan Envoy. Untuk tumpukan teknologi Java, ada opsi seperti Netflix Zuul, Spring Cloud Gateway, Soul, dll. Tetapi Anda mungkin bertanya-tanya, "Mengapa Anda memilih Apache APISIX daripada NGINX dan Kong?"
Berikut adalah perbandingan singkat.
| Gateway | Masalah | Kelebihan |
|---|---|---|
| NGINX | 1. Reload diperlukan agar perubahan dalam konfigurasi berlaku, yang tidak dapat mengikuti kemajuan teknologi cloud-native. | 1. aplikasi lama; 2. Stabil, andal, dan teruji waktu; 3. Kinerja Tinggi |
| Apache APISIX | 1. Dokumentasi tidak cukup kaya atau jelas dan perlu diperbaiki. | 1. Proyek Tingkat Atas Apache Foundation; 2. Arsitektur teknis lebih sesuai dengan prinsip cloud-native; 3. Kinerja yang sangat baik; 4. Ekosistem yang kaya; 5. Selain mendukung pengembangan plugin Lua, juga mendukung plugin bahasa untuk Java, Go, Python, Node, dan lainnya. |
| Kong | 1. Penggunaan default database PostgreSQL atau Cassandra membuat seluruh arsitektur sangat besar dan dapat menimbulkan masalah ketersediaan tinggi; 2. Routing menggunakan algoritma pencarian traversal, yang dapat menyebabkan penurunan kinerja yang signifikan ketika ada lebih dari ribuan rute di gateway; 3. Beberapa fitur penting memerlukan pembayaran; | 1. Pelopor gateway API open-source dengan basis pengguna yang besar; 2. Kinerja memenuhi kebutuhan sebagian besar pengguna; 3. Ekosistem yang kaya; 4. Mendukung pengembangan plugin Lua dan Go; |
| Envoy | 1. Dikembangkan dalam C++, yang membuat pengembangan sekunder sulit; 2. Selain mengembangkan filter dengan C++, juga mendukung WASM dan Lua. | 1. Proyek CNCF yang lulus lebih cocok untuk skenario service mesh dan mendukung penyebaran arsitektur multi-bahasa; |
| Spring Cloud Gateway | 1. Meskipun komunitas Spring matang, ada kekurangan sumber daya untuk Gateway. | 1. Gateway menyediakan fitur siap pakai yang kaya, yang dapat digunakan melalui konfigurasi SpringBoot atau panggilan kode tangan; 2. Kerangka Spring sangat dapat diperluas dengan skalabilitas yang kuat, konfigurasi mudah, dan pemeliharaan yang baik; 3. Komunitas Spring matang; 4. Mudah digunakan; 5. Nyaman untuk tumpukan teknologi Java. |
Ringkasan
Seiring dengan perkembangan dunia internet, perusahaan berkembang dengan cepat, menyebabkan perubahan konstan dalam arsitektur sistem. Arsitektur microservices telah diadopsi secara luas oleh banyak perusahaan.
Seiring dengan peningkatan data dan jumlah API microservices, sangat penting untuk memilih gateway API yang sangat baik untuk tata kelola lalu lintas tinggi.
Artikel ini membandingkan gateway API umum, menyoroti kelebihan dan kekurangan masing-masing. Misalkan Anda sedang dalam proses memilih teknologi gateway API, menghadapi masalah kinerja dalam sistem microservice Anda, atau ingin membangun sistem microservice yang efisien dan stabil. Dalam hal ini, artikel ini bertujuan untuk memberikan beberapa wawasan yang bermanfaat.