Bagaimana vivo Berintegrasi dengan APISIX

November 25, 2022

Case Study

Ikhtisar

Sejak Mei 2021, vivo telah memperkenalkan Apache APISIX sebagai API Gateway-nya. Setelah lebih dari satu tahun praktik di vivo, APISIX telah menyelesaikan banyak masalah teknis dan bisnis serta digunakan dalam skala besar.

Masalah Sebelum Menggunakan APISIX

  • Manajemen Kompleks Skenario Bisnis dan Pemeliharaan Sistem

    Karena pertumbuhan bisnis yang cepat, terdapat berbagai skenario dan sistem yang melayaninya, yang memerlukan cara terpadu untuk dikelola oleh vivo.

  • Interaksi antara Data Plane dan Control Plane

    Untuk perusahaan menengah dan besar seperti vivo, masalah kecil yang terjadi di data plane dapat berdampak pada control plane.

  • Tidak Ada Dukungan untuk Sumber Daya Multi-Dimensi

    Proyek yang beragam menyebabkan berbagai nama domain dan URL. Departemen bisnis perlu mencari berdasarkan dimensi sumber daya yang berbeda.

  • Dampak Masalah yang Tidak Terkendali

    Karena proyek vivo yang kompleks, dampak masalah yang dihadapi tidak terkendali. Penggunaan beberapa plugin yang rumit memperburuk hal ini.

Dengan mengganti NGINX dengan APISIX, vivo akhirnya berhasil mencapai serangkaian prestasi seperti di bawah ini.

Prestasi Setelah Menggunakan APISIX

  • Ketersediaan Tinggi

    Tidak ada kegagalan besar yang terjadi sejak APISIX diluncurkan di vivo, dan ketersediaan sistem melebihi 99,99%.

  • Kinerja Tinggi

    Menangani lalu lintas online yang signifikan dan melayani sejumlah besar layanan, lalu lintas penerusan online saat ini mencapai hampir satu juta QPS (Queries-per-second).

  • Fitur yang Kaya

    Berkat fitur yang kaya dari APISIX, APISIX dapat mencakup hampir semua skenario proxy NGINX yang umum. Sekitar 50% proyek vivo telah bermigrasi dari NGINX ke kluster APISIX.

  • Mendukung Pembangunan dan Pengembangan Cloud-Native

    K8s bare metal yang mendukung kontainerisasi telah mencapai skala 10.000. Sekitar 40% proyek telah bermigrasi dari bare metal dan mesin virtual ke platform kontainer K8s, mendukung dan mempromosikan kemajuan kontainerisasi vivo.

Desain Sistem vivo Berbasis APISIX

Selanjutnya, mari kita lihat desain sistem vivo setelah mengadopsi APISIX.

Tampilan Arsitektur yang Disesuaikan pada APISIX

Arsitektur gateway API vivo dengan APISIX

Dari diagram di atas, kita dapat menganalisis bahwa vivo telah:

  • Menyelesaikan pembangunan gateway lalu lintas Layer 4 dan Layer 7, yang didukung oleh APISIX
  • Mewujudkan akses lalu lintas dan penyebaran campuran bare metal, mesin virtual, dan kontainer
  • Menerapkan manajemen kluster APISIX
  • Menghubungkan platform DevOps internal dan layanan penyebaran bisnis untuk mengakses lalu lintas dengan cepat dan otomatis
  • Meningkatkan pembangunan pemantauan

Peningkatan Manajemen Konfigurasi dan Peluncuran

Untuk lebih memenuhi kebutuhan aktual departemen bisnis, vivo telah melakukan serangkaian adaptasi pada APISIX. Berikut adalah beberapa penyesuaian tersebut, termasuk perubahan control plane, manajemen pemisahan kluster, dan penerusan data.

Perubahan Control Plane

Proses keseluruhannya dapat seperti ini:

Setelah data dikonfigurasi di platform perubahan A6, informasi akan dikirim melalui RPC notify ke ManagerAPI, yang dibangun oleh vivo berdasarkan APISIX Dashboard yang bersumber terbuka.

Kemudian lalu lintas akan dikirim ke apisix-agent. APISIX secara berkala memeriksa apisix-agent melalui proses istimewa untuk mendapatkan tugas perubahan secara massal. Selanjutnya, proses istimewa memberi tahu worker melalui antrian bersama untuk mewujudkan perubahan dalam memori.

Sementara itu, APISIX memberi tahu apisix-agent tentang hasil tugas dan kemudian mengirimkannya ke ManagerAPI. Selain itu, platform perubahan A6 dapat memeriksa ManagerAPI untuk mendapatkan hasil tugas.

Mode manajemen dan penerbitan vivo

etcd adalah sorotan dari APISIX, memungkinkan operasi independen dari control dan data plane. Mempertimbangkan keunikan arsitekturnya, vivo membuang etcd dalam proses di atas. Berikut adalah beberapa alasannya.

Karena keragaman proyek vivo, terdapat berbagai nama domain dan URL. Selain itu, departemen bisnis perlu melakukan pencarian berdasarkan dimensi yang berbeda. Berkat kemampuan adaptasi APISIX yang tidak hanya dengan etcd tetapi juga berbagai jenis database, vivo dapat dengan mudah memanfaatkan database seperti MongoDB, untuk bekerja sama dengan APISIX.

Selain itu, vivo melakukan kontribusi berikut untuk kompatibel dengan Apache APISIX.

  • Mengembangkan Komponen Agent

    Sejak Mei 2021, vivo memperkenalkan Apache APISIX. Mempertimbangkan latar belakang dan konteks teknis, vivo tidak yakin dapat mengadopsi APISIX karena vivo tidak memiliki pengalaman dengan OpenResty dan Lua. Selain itu, ada banyak tugas non-penerusan, seperti pengumpulan log dan penanganan pemantauan, yang dapat meningkatkan kompleksitas manajemen data plane. Akibatnya, vivo mengembangkan komponen agent untuk mengurangi kompleksitas pengembangan.

  • Menulis Data ke Disk

    Untuk membuat sistem dapat disesuaikan dan memungkinkan data plane berjalan secara independen, sehingga mengurangi ketergantungan pada control plane, vivo menulis file konfigurasi ke disk. Ketika APISIX dimulai, ia mendukung pengambilan lengkap dari pusat konfigurasi dan juga mendukung pengambilan langsung sumber daya konfigurasi dari direktori file disk lokal. Cara ini secara dramatis meningkatkan independensi data dan ketangguhan sistem. Selain itu, sangat intuitif untuk memahami informasi rute dan upstream yang dikonfigurasi pada disk yang ditempatkan di disk, yang membantu dalam pemecahan masalah.

  • Callback Hasil Tugas Perubahan

    Sebagai perusahaan besar, vivo perlu memastikan bahwa perubahan pada sumber daya seperti router dan upstream dapat dijamin efektif dan berhasil, dan sistem dapat melaporkan kesalahan bahkan jika perubahan ini gagal. Logika ACK (Acknowledgement Code) seperti ini memastikan bahwa pekerja NGINX pada satu mesin dapat melakukan callback. Ketika tugas callback berhasil, semua pekerja pada APISIX akan memperbarui perubahan sumber daya ke memori yang relevan.

Manajemen Pemisahan Kluster

Manajemen Pemisahan Kluster

Versi open-source APISIX menyediakan etcd untuk digunakan bersama oleh semua orang. Namun, proyek perusahaan sangat kompleks, dan masalah yang dihadapi tidak terkendali. Selain itu, penggunaan plugin yang rumit tidak dapat dihindari, memengaruhi kinerja sistem.

Oleh karena itu, manajemen dilakukan dengan pemisahan kluster untuk mewujudkan isolasi konfigurasi kluster pada APISIX, yang dapat:

  • Mengontrol domain kesalahan dan secara efektif mendukung kompleksitas proyek tanpa memengaruhi proyek lain
  • Secara efektif mengurangi beban yang disebabkan oleh lapisan non-penerusan APISIX ketika node kontainer sering berubah
  • Mengurangi dampak beban yang disebabkan oleh pemeriksaan kesehatan

Meningkatkan QPS yang Dibawa oleh HTTPS

Menurut persyaratan terkait dari Kementerian Perindustrian dan Informatika di Tiongkok, lalu lintas jaringan eksternal harus melalui protokol HTTPS. Sebagai protokol enkripsi HTTP berbasis TLS, HTTPS membebani CPU dalam proses enkripsi dan dekripsi.

Ketika konfigurasi routing dan lainnya sama, lalu lintas yang dapat dibawa oleh HTTPS adalah sekitar 1/8 - 1/10 dari HTTP.

Setelah memasang kartu akselerator Intel® QAT (QuickAssist Technology), vivo menyerahkan penanganan dekripsi ke kartu akselerator QAT, yang membebaskan CPU, sehingga meningkatkan QPS yang dibawa oleh HTTPS pada satu mesin. Seperti yang dapat dilihat dari gambar di bawah ini, kapasitas beban HTTPS satu mesin meningkat sekitar dua kali lipat.

data menunjukkan peningkatan vivo dalam membawa lalu lintas

Bagaimana vivo Menggabungkan Bisnis dengan APISIX

Mendukung Pengembangan Kontainerisasi

Untuk mendukung pengembangan kontainerisasi, vivo mengembangkan sendiri kontroler ingress K8s. Berikut adalah beberapa fungsinya.

  1. Menyesuaikan mekanisme perubahan konfigurasi push asinkron yang dimodifikasi oleh vivo

  2. Melakukan pemberitahuan pemrosesan acara multi-kluster K8s ke APISIX

  3. Menangani skenario proyek kompleks seperti:

  • Satu server dengan banyak port

  • Ketika server kerangka kerja RPC lain, seperti Dubbo dan gRPC, terhubung ke K8s, diperlukan satu set logika pemrosesan terpadu untuk memberi tahu APISIX atau kerangka kerja lain tentang informasi port sesuai dengan karakteristik konfigurasi proyek

  1. Menyesuaikan kebutuhan khusus dari DevOps internal perusahaan dan skenario otomatisasi lainnya, memfasilitasi penyebaran cepat, dan mengaktifkan lalu lintas

Membantu Proyek Bermigrasi dari NGINX ke APISIX

Proyek vivo telah disebarkan pada kluster NGINX yang ada dan telah berjalan stabil untuk waktu yang lama. Namun, hal ini membawa beban kerja non-bisnis dan ketidakstabilan pada proyek. Akibatnya, sangat menantang untuk melakukan migrasi. Jadi bagaimana cara mempromosikan migrasi proyek ke APISIX?

  • Pertama, temukan proyek dari departemen yang bekerja sama, layani departemen bisnis dengan baik untuk menetapkan tolok ukur, dan berikan bimbingan dan pelatihan teknis

  • Bangun sistem control plane yang mudah digunakan untuk memfasilitasi akses bisnis dan manajemen multi-dimensi departemen bisnis

  • Berikan kemampuan konversi otomatis dan konfigurasi dasar yang mengubah konfigurasi NGINX ke konfigurasi APISIX

Meningkatkan APISIX dan Mendukung Versi Open-Source

Berdasarkan versi APISIX 2.4, vivo melakukan beberapa penyesuaian dan merilis versi baru, yang ditingkatkan ke versi yang lebih baru pada kuartal kedua tahun ini.

Di satu sisi, berkat arsitektur modular APISIX, relatif mudah untuk mengintegrasikan kode Lua yang dimodifikasi oleh vivo ke cabang versi APISIX yang lebih tinggi. Di sisi lain, vivo juga terus meningkatkan bagian OpenResty, dengan sekitar satu versi per tahun. Karena vivo menggunakan banyak PATCH dan beberapa fungsi berguna seperti QAT, meningkatkan komponen ini sulit dan memakan waktu.

Versi gratis dari fitur komunitas NGINX lambat diperbarui dan tidak aktif. Vivo sedang mempertimbangkan apakah akan membangun bersama dengan APISIX. Untuk mengurangi tenaga kerja yang diperlukan untuk melakukan pengujian sistem terkait, vivo mengadopsi Robot Framework, kerangka kerja otomatisasi pengujian generik untuk pengujian integrasi sistem. Mereka mempromosikan komponen terkait untuk cakupan pengujian unit dan model pengembangan TDD (Test-driven development).

Rencana Masa Depan vivo

Tahun depan, vivo berencana untuk memperluas APISIX sebagai gateway lalu lintas menjadi gateway API, memanfaatkan keunggulannya dalam pembatasan laju, autentikasi, pemutusan sirkuit, dll. Mempertimbangkan penggabungan APISIX dengan DPDK-NGINX, vivo juga akan membina tenaga teknis dan bergabung dengan pembangunan komunitas. Selain itu, vivo akan mengkonsolidasikan keterampilan dasar untuk meletakkan fondasi yang baik, membangun lalu lintas dan tata kelola layanan.

Selamat mempelajari lebih lanjut tentang Apache APISIX.

Anda dapat menghubungi kami di https://api7.ai/contact.

Tags: