Apache APISIX 3.0: 11 Sorotan dari Open Source API Gateway
API Gateway open source Apache APISIX versi 3.0 akan segera hadir! Kami telah memilih 11 fitur penting untuk memberikan gambaran singkat.
API Gateway telah lama menjadi komponen penting. Ia berkomitmen untuk menyediakan berbagai fungsi seperti pembatasan laju, autentikasi (misalnya, Menggunakan Keycloak untuk mengamankan API), dan observabilitas pada tingkat bisnis.
API Gateway Apache APISIX
Apache APISIX lahir untuk membantu perusahaan menyelesaikan masalah baru di lingkungan cloud-native dan microservices. Misalnya, ia menyediakan penskalaan otomatis lalu lintas bisnis melalui fitur yang sepenuhnya dinamis dan modifikasi satu kali untuk mencapai manajemen kluster dengan lebih mudah.
Oleh karena itu, dalam desain arsitektur APISIX, data plane dan control plane dipisahkan untuk mencapai manajemen yang sepenuhnya dinamis dan kluster, yang terutama dilakukan oleh komponen etcd.

APISIX menyimpan dan mengelola konfigurasi terkait routing dan plugin di etcd. Seperti yang ditunjukkan pada gambar di atas, konfigurasi dari Admin API (Control Plane) disimpan di etcd, sementara data plane di sebelah kiri terutama memantau perubahan etcd. Data plane dapat dengan cepat mengamati perubahan tanpa perlu memodifikasi file konfigurasi.
Namun, hanya menyelesaikan masalah ini tidak cukup. Sebagai middleware yang menerima permintaan dari upstream dan downstream, API gateway memainkan peran penting dalam arsitektur perusahaan sebagai pintu masuk lalu lintas dan penghubung antara lapisan layanan. Peran API gateway berbeda dengan database yang hanya menerima permintaan dari tingkat bisnis pengguna.
Selain kebutuhan tingkat bisnis, API gateway juga memiliki kebutuhan untuk kustomisasi dan integrasi. Jadi, bagaimana membuat pengembangan kustom lebih mudah bagi pengembang saat menggunakan APISIX adalah masalah penting lain yang diselesaikan oleh APISIX, menurunkan ambang batas bagi pengembang untuk menulis kode.
Di APISIX, plugin terutama dikembangkan melalui Lua, dan LuaJIT (Just-In-Time Compiler untuk Lua) digunakan untuk memastikan bahwa kinerja kode yang dikompilasi cukup baik.
Jika Anda tidak terbiasa dengan Lua, Anda dapat menggunakan Plugin Runner, mengembangkan plugin APISIX menggunakan bahasa pemrograman yang Anda kuasai. Kami juga menyematkan Wasm ke dalam APISIX, dan Anda dapat menggunakan Wasm untuk mengkompilasi bytecode Wasm agar berjalan di APISIX. Hasilnya, pengguna dapat menggunakan Lua, Go, Python, Wasm, dll., untuk membuat plugin kustom di APISIX.
Berkat arsitektur dan keunggulan kinerja APISIX, pertumbuhan pengguna global APISIX telah jauh melampaui harapan dalam tiga tahun sejak peluncurannya. Misalnya, perusahaan teknologi besar seperti WPS, Sina Weibo, dan iQiyi adalah pengguna tingkat perusahaan yang menangani puluhan miliar permintaan API setiap hari. Selain itu, lembaga penelitian seperti NASA dan European Factory Platform juga menggunakan APISIX.
11 Sorotan Baru APISIX 3.0
APISIX mengusulkan Roadmap 3.0 baru pada awal 2022. Dalam versi 3.0, iterasi dan pembaruannya akan fokus pada kegunaan dan ekosistem.

APISIX 3.0 telah resmi dirilis pada akhir Oktober 2022. Mari kita lihat sorotan baru yang menarik!
1. Dukungan Penuh untuk ARM64
ARM64 telah menjadi pilihan arsitektur server yang sangat populer bagi produsen cloud. Dari AWS Graviton, GCP Tau T2A hingga Huawei Kunpeng dan produk lainnya, kita dapat melihat bahwa berbagai produsen cloud telah mulai meluncurkan server berbasis arsitektur Arm. Grafik berikut menunjukkan kinerja pengujian stres APISIX pada server berbasis Arm yang populer:

Menurut data saat ini, kinerja server berbasis Arm sedikit lebih baik daripada kinerja x86. Untuk mengikuti tren teknologi zaman, APISIX juga melakukan pengujian regresi CI yang komprehensif pada ARM64 untuk memastikan bahwa pengguna masih dapat menjalankan berbagai fungsi dengan lancar saat menjalankan APISIX dalam arsitektur Arm.
2. AI Plane
Apache APISIX menambahkan AI plane dalam versi 3.0, meningkatkan kinerja sebesar 30% (diukur dengan QPS dalam pengujian stres). AI plane akan secara dinamis mengoptimalkan konfigurasi data plane, memanfaatkan data komprehensif seperti pengaturan pengguna pada rute dan plugin, serta metrik log. Misalnya, tiga skenario berikut dapat dioptimalkan secara otomatis oleh AI plane:
- Ketika persyaratan pencocokan sederhana (misalnya hanya berisi uri atau host), cache diaktifkan untuk mempercepat proses pencocokan rute
- Jika tidak ada plugin, hanya kode terkait upstream yang akan dijalankan
- Jika hanya ada satu node upstream dan tidak ada opsi konfigurasi lain yang diaktifkan, upstream akan dikonfigurasi dengan cara yang ringan
AI plane membawa kemungkinan baru dalam pemrosesan lalu lintas. Di masa depan, pemanasan otomatis layanan upstream dan deteksi ancaman keamanan dapat diproses melalui AI plane.
3. Menambahkan gRPC Client
Dalam versi 3.0, Apache APISIX akan mendukung modul core.grpc baru. Namun, jika Anda terbiasa dengan NGINX dan OpenResty, Anda mungkin tahu bahwa dukungan mereka untuk gRPC cukup terbatas, hanya menyediakan fitur dasar seperti reverse proxy atau load balancing.
APISIX telah mengimplementasikan transkode antara protokol gRPC dan HTTP dalam versi 2.x saat ini. Dalam versi 3.0, Apache APISIX akan menambahkan klien gRPC baru untuk memungkinkan pengembang langsung memanggil layanan gRPC pihak ketiga tanpa memperkenalkan komponen tambahan atau memerlukan penyedia layanan untuk menggunakan antarmuka HTTP yang berbeda, membuat proses jauh lebih sederhana.
4. Merancang Ulang Admin API
Saat menggunakan APISIX hari ini, Anda mungkin menemukan bahwa badan respons APISIX dicampur dengan banyak data yang tidak berarti, seperti beberapa nilai kembali etcd yang diteruskan langsung ke klien tanpa penyesuaian apa pun. Selain itu, desain arsitektur seluruh badan respons tidak ideal, dengan banyak bidang yang berlebihan.
Dalam versi APISIX 3.0, struktur badan respons telah ditingkatkan. Selain itu, desain baru membuat format permintaan dan badan respons secara keseluruhan lebih RESTful, memudahkan pengguna untuk menggunakan versi terbaru Admin API. Tentu saja, proses ini juga memungkinkan Anda untuk mengatur versi Admin API mana yang akan digunakan melalui parameter, membebaskan pengguna dari ketakutan untuk meningkatkan ke versi yang tidak kompatibel.
5. Pemisahan Data Plane (DP) dan Control Plane (CP)
APISIX telah mengalami beberapa kerentanan keamanan dalam dua tahun terakhir. Penyebab utama sebagian besar kerentanan adalah bahwa DP dan CP ditempatkan bersama dalam mode penyebaran default. Oleh karena itu, begitu ada kerentanan keamanan pada data plane, penyerang dapat langsung menyerang CP melalui DP, memengaruhi semua DP lainnya.
Oleh karena itu, dalam versi 3.0, mode penyebaran didukung, dan mode penyebaran default adalah traditional, di mana DP dan CP ditempatkan bersama. Tentu saja, mode penyebaran baru merekomendasikan Anda untuk mengatur atribut ke data_plane atau control_plane untuk memisahkan mereka.
Ketika mereka dipisahkan, tidak hanya risiko keamanan yang disebutkan di atas dapat diselesaikan, tetapi iterasi fungsi pada DP dan CP juga lebih mudah dikelola tanpa saling memengaruhi.
6. Peningkatan Dukungan Service Discovery
Dalam versi saat ini, APISIX telah mendukung integrasi banyak komponen service discovery, seperti Apache ZooKeeper, Consul, Nacos, dan sebagainya. Namun saat ini, integrasi ini semua dilakukan pada data plane. Begitu Anda memiliki banyak node pada DP, ini akan memberikan tekanan besar pada komponen service discovery berikutnya. Pada saat yang sama, dalam lingkungan produksi nyata pengguna, mereka menginginkan integrasi sederhana seperti Consul KV atau integrasi DNS dan integrasi lengkap fungsi seperti pemeriksaan kesehatan.
Oleh karena itu, dalam APISIX 3.0, kami menambahkan lapisan abstraksi dengan menambahkan sub-proyek APISIX-SEED untuk mencapai dukungan service discovery pada tingkat control plane dan mengurangi tekanan pada komponen service discovery.

7. Menambahkan Framework xRPC
TCP Proxy didukung dalam versi saat ini APISIX, tetapi ada kalanya proxy protokol TCP murni tidak cukup. Pengguna memerlukan proxy untuk protokol aplikasi tertentu, seperti Redis Proxy, Kafka Proxy, dll., karena beberapa fungsi hanya dapat diimplementasikan setelah protokol dikodekan dan didekodekan.
Oleh karena itu, dalam versi 3.0, APISIX mengimplementasikan framework ekstensi protokol lapisan transportasi yang disebut xRPC yang memungkinkan pengembang untuk menyesuaikan protokol aplikasi tertentu. Berdasarkan xRPC, pengembang dapat mengkodekan dan mendekode permintaan dan respons melalui kode Lua dan kemudian mewujudkan injeksi kesalahan, pelaporan log, dan routing dinamis berdasarkan pemahaman konten protokol.
Berdasarkan framework xRPC, APISIX dapat menyediakan implementasi proxy untuk beberapa protokol aplikasi utama. Pada saat yang sama, pengguna juga dapat mendukung protokol aplikasi berbasis TCP pribadi mereka sendiri berdasarkan framework ini, memungkinkan mereka untuk memiliki kontrol granular yang tepat dan kontrol lapisan aplikasi yang lebih tinggi seperti proxy protokol HTTP. Selain itu, di atas protokol yang berbeda, beberapa faktor umum dapat diabstraksi untuk mengimplementasikan fitur plugin terkait sehingga protokol lain dapat berbagi fitur ini.
8. Mendukung Lebih Banyak Observabilitas pada Protokol Lapisan Transportasi
APISIX selalu berinvestasi besar dalam dukungan observabilitas, mendukung hampir semua komponen observabilitas, seperti Zipkin, Apache SkyWalking, Datadog, dan lainnya. Berbagai komponen logging juga didukung, tetapi sebagian besar dilakukan di lapisan aplikasi.
Apache APISIX akan menambahkan lebih banyak dukungan observabilitas lapisan transportasi dalam versi 3.0. Misalnya, dukungan untuk Prometheus dan berbagai log telah ditambahkan, memungkinkan pengguna untuk mengamati masalah lalu lintas lapisan aplikasi dengan mudah dan memungkinkan pengguna untuk memeriksa status operasi lalu lintas lapisan transportasi.
9. Mengintegrasikan Spesifikasi OpenAPI
API adalah elemen yang melibatkan seluruh siklus pengembangan, dari desain hingga pengkodean, pengujian, dan penyebaran. Dalam APISIX 3.0, Apache APISIX akan mendukung spesifikasi OpenAPI 3.0 standar.
Oleh karena itu, jika Anda mengelola API pada perangkat lunak desain dan pengujian API, sangat mudah untuk mengelola dan memelihara data di APISIX dengan mengekspor dan mengimpornya. Pada saat yang sama, berbagai API di APISIX juga dapat dikirim melalui spesifikasi OpenAPI 3.0 dan kemudian diimpor ke sistem lain untuk digunakan.
Selain itu, APISIX 3.0 juga mendukung format kustom terkait Postman (Postman Collection Format v2), memungkinkan transfer data antara keduanya, sehingga membuat integrasi lebih mudah.
10. Dukungan Penuh untuk Gateway API dan Service Mesh
Dukungan untuk Gateway API telah dimulai di APISIX Ingress Controller, dan hampir semua konfigurasi Gateway API didukung dalam rilis terbaru 1.5.
Dalam hal ini, APISIX Ingress dapat dikonfigurasi menggunakan Gateway API, yang berarti Anda dapat beralih antara data plane yang berbeda. Pada akhir tahun ini, APISIX Ingress akan memiliki dukungan lengkap untuk Gateway API dan fitur tambahan lapisan transportasi dan aplikasi.
Tidak seperti kebanyakan solusi service mesh, solusi service mesh APISIX memiliki keunggulan pada data plane (karena kinerja tinggi APISIX itu sendiri). Jadi, dalam memilih control plane, kami berharap akan kompatibel dengan beberapa solusi utama di komunitas. Akhirnya, dengan menggunakan protokol xDS untuk mengintegrasikan dengan Istio dan menulis konfigurasi yang diperoleh ke pusat konfigurasi xDS APISIX, aturan routing spesifik dihasilkan oleh APISIX untuk menyelesaikan permintaan routing yang sesuai.
Solusi ini tidak hanya membuat seluruh service mesh lebih ringan tetapi juga membuat pengembangan kustom dan migrasi lebih nyaman dengan skalabilitas tinggi APISIX.
11. Mengintegrasikan Lebih Banyak Ekosistem
Selain standar OpenAPI yang disebutkan di atas, banyak plugin ekosistem akan ditambahkan dalam versi 3.0, seperti OpenFunction, ClickHouse, Elasticsearch, SAML, CAS, dll., untuk mengintegrasikan lebih banyak dukungan untuk autentikasi, keamanan, dan observabilitas.
Salah satu plugin yang menarik, workflow, digunakan untuk penjadwalan lalu lintas: kita dapat melakukan beberapa pemrosesan granular pada tingkat kontrol lalu lintas.
curl http://127.0.0.1:9180/apisix/admin/routes/1 \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri":"/hello/*", "plugins":{ "workflow":{ "rules":[ { "case": [ ["uri", "==", "/hello/rejected"] ], "actions": [ [ "return", {"code": 403} ] ] }, { "case": [ ["uri", "==", "/hello/v2/appid"] ], "actions": [ [ "limit-count", { "count": 2, "time_window": 60, "rejected_code": 429 } ] ] } ] } }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:1980": 1 } } }'
Misalnya, melakukan tindakan tertentu ketika kondisi A benar, melakukan tindakan lain ketika kondisi B benar, dll. Dengan cara ini, pengguna dapat menjadwalkan berbagai lalu lintas bisnis dengan lebih mudah.
Mulai dengan Apache APISIX 3.0
Anda sekarang dapat melihat APISIX 3.0 di Halaman Rilis GitHub dan Halaman Unduhan!
APISIX telah berkembang pesat dari awal hingga versi 3.0. Sebuah proyek open source mungkin tidak hanya dinilai berdasarkan kinerja dan fungsionalitas, tetapi dari perspektif pengguna, pengembang, dan perusahaan untuk mempertimbangkan apakah mereka dapat menggunakan produk untuk menyelesaikan masalah mereka saat ini dengan cepat dan efektif.
Sorotan dan fitur baru yang disebutkan dalam artikel ini semuanya dibuat melalui komunitas open source. Apache APISIX telah menjadi lebih hidup dengan menerima umpan balik dari berbagai pengembang dan pengguna perusahaan. Jika Anda ingin bergabung dengan komunitas, lihat di sini!