Alternative to NGINX That Makes Your Life Easier: Apache APISIX

Zexuan Luo

Zexuan Luo

September 15, 2022

Products

API adalah bagian penting dari dunia digital, dan gerbang API (API gateway) memikul tanggung jawab besar untuk melindungi keamanan dan stabilitasnya sebagai pintu pertama API. Banyak insinyur perangkat lunak dan tim sebelumnya menggunakan NGINX tetapi merasa terganggu oleh hambatan dan batasan NGINX. Apakah ada alternatif yang lebih baik?

Alternatif yang bagus untuk NGINX adalah Apache APISIX, lalu apa itu Apache APISIX?

Apa itu Apache APISIX

APISIX Word Cloud

Apache APISIX adalah gerbang API berkinerja tinggi, dinamis, dan penuh lalu lintas. Empat fitur menonjol dari Apache APISIX:

  1. Sifat Apache: APISIX bersifat open source dan juga merupakan proyek tingkat atas dari Apache Software Foundation. Tidak mungkin mengubah lisensi open source di tengah jalan, seperti yang dilakukan ElasticSearch dan MongoDB. Karena APISIX milik Apache Software Foundation (ASF), ia bukan lagi proyek perusahaan atau individu.
  2. Kinerja tinggi: APISIX dikembangkan berdasarkan OpenResty (distribusi NGINX), sehingga APISIX juga mewarisi kekuatan NGINX itu sendiri.
  3. Dinamis: Jika NGINX menyediakan arsitektur dasar yang kuat, OpenResty menambahkan lebih banyak kemungkinan ke NGINX dengan memungkinkan penggunaan Lua untuk mengontrol perilaku NGINX. Dan APISIX, dengan fleksibilitas dan koneksi kuatnya ke sistem lain, menjadi gerbang API yang sepenuhnya dinamis. Flow Software Architecture
  4. Real-time: APISIX menyimpan konfigurasi di etcd. Keuntungannya adalah perubahan konfigurasi dapat dipantau dan diperoleh secara real-time melalui API RESTful etcd, karena etcd sendiri adalah basis data KV terdistribusi, yang juga digunakan oleh Kubernetes untuk menyimpan konfigurasi. NGINX menggunakan file statis untuk menyimpan konfigurasi, dan jika konfigurasi diperbarui, waktu untuk memuat ulang NGINX akan sangat lama.

Apache APISIX vs NGINX

Karena kami menyebutkan bahwa APISIX dikembangkan berdasarkan NGINX, Anda mungkin bertanya: apa perbedaan antara APISIX dan NGINX?

Hal pertama yang perlu diperhatikan adalah bahwa perbandingan antara APISIX dan NGINX bukanlah perbandingan yang setara. Bagaimanapun, NGINX adalah proxy ringan, dan APISIX fokus pada membuat fungsi produk lebih matang. Selain itu, APISIX memiliki lebih banyak fitur karena dikembangkan ulang berdasarkan NGINX.

Jika Anda menggunakan NGINX sebagai gerbang, dua keunggulan APISIX berikut akan memberikan pengalaman yang lebih mendalam.

Konfigurasi yang lebih fleksibel

Dibandingkan dengan file konfigurasi NGINX, APISIX menyediakan berbagai cara untuk mengonfigurasi. Misalnya:

  • Anda dapat mengonfigurasi APISIX melalui HTTP API. Konfigurasi akan ditulis ke etcd, lalu disinkronkan ke setiap node oleh etcd;
  • Anda dapat melakukannya dengan APISIX Dashboard. Di APISIX Dashboard, visualisasi grafis akan membantu Anda mengonfigurasi dengan lebih jelas;
  • Jika Anda tidak ingin menggunakan metode penyimpanan stateful seperti etcd, Anda dapat menggunakan file statis seperti K8s. APISIX juga mendukung pengambilan konfigurasi individu dari file YAML lokal;
  • Jika Anda menerapkan APISIX di K8s, Anda dapat menggunakan APISIX Ingress Controller untuk mendapatkan konfigurasi yang dikeluarkan oleh CRD;
  • Jika Anda menerapkan APISIX sebagai bidang data Istio, Anda juga dapat mendapatkan konfigurasi yang dikeluarkan oleh Istio dengan mengidentifikasi xDS.

Ekstensibilitas yang lebih baik

Meskipun NGINX juga memperkenalkan NJS untuk mencapai kontrol dinamis, ekstensibilitasnya tidak seideal APISIX.

Karena APISIX dapat diperluas dengan LuaJIT, ia juga mendukung Plugin Runner out-process untuk menjalankan plugin eksternal yang ditulis dalam bahasa seperti Go, Java, Python, Node.js, dll.

Multi-Language Architecture

Selain itu, mulai dari APISIX 2.11, Anda dapat menjalankan plugin Wasm. Dengan fungsi ini, Anda dapat menulis plugin di APISIX dalam Rust, TinyGo, dan bahasa lainnya, lalu mengompilasinya menjadi kode Wasm untuk dijalankan di APISIX.

Mengonfigurasi plugin Wasm dan plugin Lua di APISIX hampir tidak menunjukkan perbedaan dalam fungsionalitas. Hasilnya, ia dapat mencapai kinerja yang mirip dengan implementasi native Lua dan mencapai efisiensi pengembangan bahasa tingkat tinggi.

Apa keuntungan utama Apache APISIX

Keunggulan yang dijelaskan di atas cukup baik, tetapi bukanlah keunggulan paling kritis dari APISIX. Keunggulan terbesar APISIX adalah jaringan ekosistemnya yang terjalin dengan banyak proyek.

APISIX's Ecosystem

  • Pada tingkat autentikasi, APISIX mendukung protokol seperti OIDC dan LDAP. Pada saat yang sama, ia dapat diintegrasikan dengan berbagai layanan atau kerangka kerja autentikasi, seperti Keycloak, Casdoor, Casbin, OPA, dll.
  • Pada tingkat observabilitas, APISIX mendukung koneksi dengan berbagai alat log, seperti Clickhouse, Datadog, Splunk, Apache Kafka, Apache RocketMQ, dll. Ia juga dapat mengekspos metrik yang kaya melalui Prometheus untuk mendukung berbagai sistem pelacakan, seperti OpenTracing, OpenTelemetry, dan Apache Skywalking.
  • Pada tingkat penemuan layanan, APISIX tidak hanya mendukung pengambilan alamat upstream dari Nacos, Eureka, Consul, dan Zookeeper, tetapi juga dari DNS (baik melalui catatan A/AAAA atau SRV). Selain itu, jika Anda menggunakan APISIX sebagai K8s Ingress Controller, Anda dapat mendapatkan konfigurasi yang sesuai dari sumber daya Ingress (APISIX mendukung spesifikasi K8s Gateway API).

APISIX saat ini masih dalam tahap pengembangan yang cepat. Seiring waktu, APISIX akan terintegrasi dengan semakin banyak proyek, membuka lebih banyak kemungkinan kerja sama dan sangat menyederhanakan pekerjaan integrasi dengan sistem yang ada.

Jika layanan yang ingin Anda hubungkan tidak ada dalam ekosistem plugin APISIX, Anda dapat langsung menggunakan plugin yang ada untuk pengembangan kustom, mencapai fungsi yang lebih spesifik untuk bisnis Anda.

Gerbang API mana yang harus Anda pilih

Tentu saja, untuk memilih gerbang yang sesuai, Anda juga perlu mempertimbangkan situasi bisnis aktual Anda.

Jika Anda sudah menggunakan NGINX sebagai proxy di depan aplikasi bisnis, dan beberapa logika ditempatkan di NGINX, maka APISIX akan menjadi pilihan terbaik Anda. Karena APISIX dikembangkan berdasarkan NGINX, Anda dapat dengan lancar memigrasikan NGINX ke APISIX berdasarkan kebutuhan Anda.

Jika Anda belum pernah menggunakan gerbang dan ingin memilih proyek gerbang API open source yang sesuai berdasarkan situasi tim Anda, maka Anda perlu fokus pada aspek-aspek berikut:

  1. Apakah frekuensi pembaruan cukup baik. Anda dapat memilih proyek Gerbang API yang dikelola dengan baik dengan mengamati aktivitas setiap proyek, karena tidak ada yang ingin memilih proyek yang menurun. Anda dapat merasakan aktivitas proyek melalui grafik Contributor Over Time.
  2. Apakah fungsi proyek lengkap. Jika gerbang yang dipilih tidak dapat memenuhi kebutuhan bisnis tim saat ini dan masa depan, dan karena proyek menambah pekerjaan pengembangan (seperti manajemen konfigurasi, penyambungan dengan layanan internal), harap pertimbangkan dengan hati-hati.
  3. Apakah beberapa metrik teknis kompleks proyek berkinerja baik, misalnya, apakah QPS, latensi, dan penggunaan memori memenuhi persyaratan bisnis. Secara umum, sangat menantang untuk melakukan optimisasi yang mengubah secara substansial pada gerbang. Oleh karena itu, jika gerbang tidak dapat memenuhi metrik kompleks ini, akan sulit untuk membuat terobosan tidak peduli bagaimana iterasi selanjutnya.
  4. Apakah ada cukup tenaga kerja dan waktu dalam tim untuk mempelajari dan memelihara Gerbang API. Bagaimanapun, pengambilan keputusan teknis bukanlah aktivitas murni teknis.

Tentu saja, jika Anda telah menggunakan gerbang API lain, tetapi gerbang tersebut tidak dapat memenuhi skenario bisnis saat ini, maka Anda dapat menggunakan Apache APISIX sebagai salah satu opsi Anda.

Bagaimana cara bermigrasi dari Nginx ke Apache APISIX

Anda bijaksana jika melihat ini dan memutuskan untuk mengganti NGINX yang ada dengan APISIX!

Tetapi sebelum bermigrasi, Anda perlu meninjau beberapa fitur produk yang Anda miliki atau gunakan. Biasanya fitur-fitur ini dapat dibagi menjadi tiga kategori:

  1. Langsung dapat diganti. APISIX memungkinkan pengguna untuk menggunakan konfigurasi NGINX secara langsung, sehingga sebagian besar konfigurasi global NGINX dapat digunakan kembali oleh APISIX. Adapun konfigurasi tingkat aplikasi, dapat diganti dengan APISIX Routes;
  2. Membutuhkan penyesuaian, seperti perubahan dalam metrik;
  3. Membutuhkan pengembangan tambahan.

Setelah menyelesaikan pengembangan yang diperlukan, Anda akan secara bertahap mengganti NGINX dengan APISIX dalam skenario bisnis aktual. Selama proses migrasi yang lancar, Anda perlu mempertimbangkan tiga pertanyaan berikut:

  1. Bagaimana cara memproksi permintaan klien ke APISIX?
  2. Bagaimana cara menempatkan konfigurasi yang setara ke APISIX dan NGINX?
  3. Bagaimana cara menangani metrik yang diekspos oleh APISIX dan NGINX?

Anda harus mempertimbangkan tiga pertanyaan di atas dan lingkungan aplikasi aktual Anda. Terakhir, jangan lupa untuk menyiapkan "rencana rollback untuk bug" terlebih dahulu.

Melalui artikel ini, saya yakin Anda telah memahami kekuatan Apache APISIX. Mari mencoba menggunakan Apache APISIX sebagai gerbang API Anda!

Tags: