Manfaatkan Amazon untuk Ekosistem dan Pertumbuhan Apache APISIX

Chao Zhang

Chao Zhang

October 26, 2022

Ecosystem

Penulis Chao Zhang adalah anggota Apache APISIX PMC sekaligus ahli teknis di API7.ai. Dia adalah pemimpin produk API7 Cloud dan seorang penggemar open-source. Artikel ini merangkum konten yang dibagikan Chao dari "AWS Summit Greater China 2022".

Apache APISIX

Pada tahun 2019, dua insinyur perangkat lunak menyewa kantor kecil, membuat proyek API gateway dari 0 hingga 1, membuka sumbernya, dan menyumbangkannya ke Apache Software Foundation. Proyek tersebut, APISIX, kemudian menjadi proyek tingkat atas Apache dan proyek API gateway open-source paling populer dengan komunitas yang aktif dan pertumbuhan yang cepat. Kedua insinyur tersebut, yang mendirikan API7.ai, sekarang bergabung dengan banyak orang yang berpikiran sama dari seluruh dunia, terus berkontribusi pada Apache APISIX, menjadikannya bintang bersinar di bidang manajemen api.

Performa Ultimate & Ekstensi yang Kaya

APISIX memiliki tuntutan performa tinggi sebagai API gateway cloud-native sejak kelahirannya. Oleh karena itu, ketika menggunakan Apache APISIX, ekspresi paling langsung dari pengguna adalah kinerja tinggi dan latensi rendah. Sementara itu, dalam hal fitur, APISIX memiliki kemampuan yang luas untuk menangani lalu lintas. Oleh karena itu, APISIX sering digunakan untuk rilis canary dan deployment biru-hijau. Selain itu, APISIX juga memiliki fungsi autentikasi identitas terkait keamanan API, dan mendukung berbagai metode autentikasi, seperti JWT Auth, HMAC Auth, protokol Open ID Connect, dll.

Selain itu, APISIX ramah terhadap pengembang yang bekerja pada ekstensi dan pengembangan kustom. Kecuali APISIX sendiri dapat mendukung Lua, Anda juga dapat memanfaatkan APISIX Plugin Runner untuk menggunakan bahasa tingkat tinggi untuk memperluas APISIX, seperti Java, Go, Python, dan WebAssembly. Dengan dukungan plugin multi-bahasa, Anda dapat melakukan pengembangan kustom tanpa biaya belajar tambahan.

Ekosistem yang Beragam & Komunitas Open-source yang Aktif

APISIX memiliki banyak tindakan terkait ekosistem dan telah membuat pengembangan terintegrasi berdasarkan berbagai jenis proyek. Repositori utama APISIX telah memiliki lebih dari 70 plugin yang berbeda.

Anda dapat mencapai integrasi dan deployment cepat dengan platform seperti AWS dengan menggunakan plugin ini, dan mereka juga dapat membantu mengurangi biaya pengembangan tambahan pengguna selama penggunaan.

Sementara itu, jumlah kontributor bulanan komunitas APISIX biasanya bertahan di sekitar 30, yang merupakan angka yang sangat aktif. Di repositori Github APISIX, Anda juga dapat melihat banyak pengguna komunitas membantu menjawab dan menyelesaikan masalah, PR, dan pertanyaan dalam Diskusi. Lingkungan komunitas yang positif juga membantu mempercepat peningkatan produk dan memperkaya ekosistem.

Oleh karena itu, APISIX telah mulai memiliki klien perusahaan di seluruh dunia, seperti Airwallex, Sina Weibo, European Factory Platform, NASA, dan Nayuki, dll. Selain itu, berkat penggunaan dan kontribusi semakin banyak perusahaan, APISIX menjadi lebih dikenal oleh publik. Saat ini, kontributor APISIX telah melebihi 300, dan seluruh kontributor proyek open-source terkait APISIX sepanjang waktu telah melebihi 500.

github_contributors.PNG

Peningkatan Arsitektur

Kembali ke tingkat arsitektur produk, arsitektur APISIX menggunakan mode data plane + control plane seperti gambar berikut.

apisix_architecture.PNG

Sisi kiri adalah APISIX itu sendiri, yang juga merupakan data plane dari seluruh API gateway, dan terutama menangani dan memproses lalu lintas bisnis pengguna. Selain itu, APISIX menyediakan fungsi manajemen layanan seperti pembatasan laju, load balancing, dll. Sisi kanan adalah control plane dari API gateway, yang mengontrol komponen operasi APISIX, termasuk komponen logging terkait observabilitas untuk mengumpulkan data status operasi. Sementara itu, dengan etcd dan Admin API, APISIX dapat membantu pengguna mengonfigurasi aturan terkait sehingga APISIX dapat beroperasi sesuai yang diinginkan.

multi_language_plugin_architecture.PNG

Seperti yang disebutkan di atas, plugin multi-bahasa dapat disematkan ke dalam arsitektur data plane di sisi kiri. Misalnya, ini memungkinkan pengguna menggunakan bahasa pemrograman seperti C++ atau Rust untuk memperluas APISIX melalui modul wasm plugin di dalam APISIX. Sementara itu, sisi kanan menunjukkan cara memperluas APISIX berdasarkan Plugin Runner dengan menggunakan berbagai bahasa. Ini akan memanggil Plugin Runner spesifik bahasa (seperti Java Plugin Runner) untuk menerima permintaan dari APISIX melalui Unix domain socket tradisional dengan cara RPC dan membantu APISIX menangani lalu lintas ini.

Eksplorasi APISIX di Amazon

Saat ini, APISIX memiliki beberapa eksplorasi terkait produk dan performa berdasarkan Amazon.

Amazon Marketplace

apisix_amazon_market.PNG Catatan: API7.ai juga dikenal sebagai Zhiliu Technology

Jika Anda mencari APISIX di Amazon Marketplace, Anda akan melihat hasil di atas. Ini telah terdaftar di platform sejak 2021. Menggunakan perangkat lunak di atas, Anda dapat dengan cepat mendeploy APISIX ke semua instance Amazon EC2. Selain itu, perangkat lunak ini gratis, jadi Anda hanya perlu membayar biaya instance EC2.

Perangkat lunak ini akan menjalankan instance APISIX dan etcd di instance EC2. Oleh karena itu, ini lebih cocok untuk pengguna Amazon yang sudah ada ketika Anda ingin langsung menggunakan APISIX, atau menggunakan POC (Proof of Concept) untuk membenarkan apakah APISIX memenuhi persyaratan skenario target Anda.

CDK APISIX

CDK adalah kerangka kerja pengembangan perangkat lunak open-source yang disediakan oleh Amazon yang bertujuan untuk membantu pengguna memanipulasi infrastruktur cloud melalui pengkodean.

Kontributor komunitas APISIX, Pahud Hsieh mengembangkan cdk-apisix berdasarkan CDK. Proyek ini memungkinkan pengguna membuat instance APISIX melalui cara pengkodean dan otomatisasi. Tidak seperti yang kami sebutkan di atas, ini dapat langsung mendeploy APISIX di AWS Fargate. Oleh karena itu, kami dapat mencapai deployment dan penghancuran otomatis dalam beberapa skenario yang memerlukan pemicu peristiwa. Seluruh proses tidak memerlukan operasi manual dan menjadi lebih responsif.

aws-cdk.PNG

Berdasarkan arsitektur di atas, lalu lintas klien akan diarahkan ke APISIX melalui cloud ELB, dan APISIX akan melakukan beberapa pemrosesan dasar setelahnya, seperti autentikasi, pembatasan laju, dll. Kemudian, akhirnya, lalu lintas akan dikirim ke instance aplikasi aktual di backend.

Dengan menggunakan metode CDK, pengguna dapat mendeploy Apache APISIX dengan menggunakan bahasa pengkodean yang mereka kenal, dan ini dapat memanfaatkan atribut bahasa tingkat tinggi ini untuk mendeploy APISIX di Amazon dengan lebih nyaman. Sementara itu, dalam hal penggunaan, ketika Anda menyelesaikan konfigurasi template deployment, ini dapat disalin dan disesuaikan. Oleh karena itu, Anda dapat langsung menggunakan konfigurasi template ini kapan pun Anda membutuhkannya di masa depan sehingga Anda dapat mempermudah proses deployment.

Plugin Amazon-Lambda

Ketika Anda menggunakan Lambda atau Serverless untuk mendeploy aplikasi, ada cara yang sangat murah untuk menjalankan proyek terkait, dan ini dapat mencapai penskalaan instan serta beberapa skenario bisnis lainnya. Menggunakan cara ini untuk mendeploy aplikasi, kami biasanya memerlukan pemicu peristiwa sehingga API gateway dapat menjadi jalur untuk pemicu peristiwa.

Ketika pengguna mengonfigurasi plugin amazon-lambda APISIX dalam routing, ini dapat mengarahkan seluruh lalu lintas ke alamat fungsi Lambda yang dikonfigurasi oleh pengguna. Fungsi Lambda akan menangani permintaan ini dan mengirim kembali hasilnya ke klien melalui APISIX.

Plugin ini juga mendukung identifikasi Amazon IAM dan Key AUth. Dalam hal ini, fungsi Lambda yang dideploy di backend dapat lebih baik terintegrasi dengan APISIX tanpa mengorbankan keamanan.

Tes Performa Terkait

Pada Mei 2022, prosesor AWS Graviton 3 secara resmi dirilis. Berkat memori DDR5, prosesor Graviton3 memberikan peningkatan performa komputasi hingga 25%, performa floating-point hingga 2x lebih tinggi, dan bandwidth memori 50% lebih banyak dibandingkan dengan prosesor AWS Graviton2; instance berbasis Graviton3 menggunakan hingga 60% lebih sedikit energi untuk performa yang sama dibandingkan dengan instance EC2 yang sebanding.

Tak lama setelah rilis prosesor AWS Graviton3, APISIX melakukan tes regresi lengkap berdasarkan prosesor AWS Graviton3, yang berarti pengguna dapat dengan percaya diri menggunakan APISIX pada instance EC2 Graviton3. Tidak akan ada masalah kompatibilitas. Sementara itu, kami juga melakukan tes performa pada keluarga prosesor AWS Graviton. Mengacu pada dua skenario berikut, kami melakukan tes performa pada prosesor AWS Graviton2 dan AWS Graviton3.

  • Upstream tunggal: Kami hanya menggunakan upstream tunggal dalam skenario ini (tanpa plugin apa pun), dan kami terutama menguji performa APISIX dalam mode proxy balik ke sumber murni.
  • Upstream tunggal + beberapa plugin: Kami menggunakan upstream tunggal dan dua plugin dalam skenario ini, dan kami terutama menguji performa APISIX ketika kami mengaktifkan limit-count dan prometheus, yang merupakan dua plugin inti yang mengonsumsi performa.

aws-graviton.PNG aws-graviton-plugin.PNG

Dari gambar di atas, kami dapat menemukan bahwa APISIX memiliki performa yang luar biasa baik dalam hal stabilitas maupun kemampuan penanganan lalu lintas. Prosesor AWS Graviton3 memberikan peningkatan performa hingga 76% dalam skenario komputasi intensif IO seperti API gateway dan mengurangi latensi hingga 38%. Data ini memiliki performa yang bahkan lebih baik daripada data resmi yang disediakan oleh AWS (peningkatan performa 25%).

performance-comparison.PNG

Secara umum, performanya sangat menonjol dalam menggunakan APISIX di Grafana 3. Berdasarkan prosesor berkinerja tinggi seperti AWS Graviton3, APISIX dapat membantu meningkatkan efisiensi dan mengurangi sumber daya dan biaya dalam bisnis aktual.

Bagaimana API7 Cloud memanfaatkan Amazon untuk mencapai pertumbuhan produk yang cepat?

Dengan pertumbuhan cepat Cloud Native, semakin banyak perusahaan telah memindahkan bisnis mereka ke cloud (mereka biasanya memilih beberapa platform cloud publik). Oleh karena itu, bagaimana mengelola dan mendeploy API cloud secara efisien telah menjadi masalah yang mendesak.

API7 Cloud adalah layanan SaaS berbasis APISIX dan membantu pengguna menghubungkan semua produk SaaS yang dideploy di platform cloud apa pun. API7 Cloud pertama kali dirilis pada Maret 2022 dan menyediakan pengguna dengan fungsi manajemen API yang mudah digunakan, metrik observabilitas yang fleksibel dan kaya, dan keamanan API, yang memungkinkan koneksi API menjadi lebih efisien, lebih aman, dan lebih andal.

Produk ini membebankan pengguna berdasarkan jumlah panggilan API, dan saat ini, ini mendukung dua cara untuk mendeploy data plane. Yang pertama adalah self-host, yang berarti pengguna menyiapkan infrastruktur mereka sendiri dan mendeploy APISIX ke infrastruktur tersebut sehingga APISIX dapat berkomunikasi dengan API7 Cloud. Cara lainnya disebut semi-managed, juga disebut semi-hosted. Pertama, pengguna harus mengotorisasi API7 Cloud untuk mengelola akun cloud mereka (seperti akun Amazon). Kemudian mereka dapat mendeploy APISIX ke semua infrastruktur mereka di bawah akun mereka dengan satu klik di panel konfigurasi API7 Cloud.

Saat ini, seluruh komponen API7 Cloud dihosting di AWS dan menggunakan layanan AWS; arsitektur produk ditunjukkan di bawah ini: api7_cloud.png

Dari gambar di atas, data plane dengan APISIX dapat dideploy di berbagai platform cloud, dan bahkan dapat dideploy di infrastruktur atau pusat data pengguna. Di sisi API7 Cloud, ini terutama menyediakan atribut penting seperti observabilitas, manajemen API dasar, dan keamanan.

Dengan memanfaatkan layanan Amazon, API7 Cloud memiliki performa produk yang lebih baik.

Pertama-tama, APISIX bergantung pada layanan Amazon EKS. Sebagai produk SaaS yang baru, API7 Cloud dideploy di K8s sejak awal. Oleh karena itu, kami mendeploy semua komponen di cluster EKS; dengan demikian, kami dapat menggunakan beberapa kemampuan yang disediakan oleh cloud. Sementara itu, setiap pengguna akan memiliki komponen yang berbeda, dan setiap komponen individu dapat berjalan di dalam cluster. Dengan demikian, kami melakukan beberapa isolasi jaringan dengan menggunakan metode isolasi tenant yang dikembangkan pada NetworkPolicy, untuk memastikan namespace tenant ini tidak dapat mengakses satu sama lain. Dalam layanan ini, kami juga menggunakan APISIX Ingress Controller sebagai gateway untuk menjalankan seluruh operasi dengan lancar.

APISIX Ingress Controller adalah implementasi dari Ingress controller, yang memungkinkan pengguna mengonversi aturan yang dikonfigurasi ke aturan APISIX sehingga APISIX dapat menangani lalu lintas aktual.

Kedua, sebagai komponen paling kritis dalam produk, API7 Cloud memilih Amazon RDS (Postgre SQL) sebagai database. Kami menyimpan metadata pengguna di RDS, seperti data sumber API dan tindakan pengguna. Sebagai produk SaaS, kami perlu tahu bagaimana pengguna menggunakan produk kami dan menentukan apakah kami memiliki masalah dengan tata letak dan pengalaman pengguna pengembang untuk menentukan arah masa depan produk kami.

Kami juga menggunakan komponen Amazon ElasticCache di API7 Cloud dan memilih Redis dengan mode master-slave. Redis terutama digunakan untuk menyimpan status instance data plane, yang merupakan data status yang secara berkala dikirim ke Cloud ketika APISIX terhubung dengan API7 Cloud. Karena data ini tidak sensitif maupun vital, dan data plane perlu berkomunikasi secara sering dengan control plane, maka kami tidak memilih database relasional di sini.

Selain itu, komponen ini memiliki penggunaan penting lainnya: ini dapat dianggap sebagai antrian pesan. Redis 5.0 memperkenalkan struktur data Stream, sehingga kami dapat menggunakannya sebagai antrian pesan yang sangat ringan untuk membantu pengguna membuat, memanipulasi, dan menghancurkan data dengan lebih cepat.

Kesimpulan

Artikel ini berbagi pengalaman pengguna dari perspektif proyek terkait APISIX. Dengan dukungan layanan dan ekosistem Amazon, APISIX lebih lanjut mengeksplorasi ekosistemnya. Kami berharap APISIX dan Amazon dapat memiliki integrasi yang lebih menarik dan bersama-sama mengembangkan ekosistem yang lebih baik.

Tags: