Bagaimana Zoom Menggunakan APISIX Ingress dalam Pipelines Continuous Delivery-nya?

October 27, 2022

Case Study

Latar Belakang

Dalam beberapa tahun terakhir, banyak perangkat lunak konferensi online terkenal muncul seiring dengan perkembangan pertemuan online dan kerja jarak jauh. Salah satu yang paling terkenal, Zoom, telah menjadi alat pertemuan populer untuk kantor rumah, pengajaran online, dan skenario sosial. Zoom memiliki 350 juta peserta rapat harian dan hampir 470.000 pelanggan bisnis berbayar yang menggunakan platform ini. Selain itu, data terbaru menunjukkan bahwa jumlah menit yang digunakan untuk fasilitasi rapat telah mencapai lebih dari 3,3 triliun per tahun.

Namun, seperti perusahaan SaaS dan internet lainnya, Zoom menghadapi tantangan teknis seiring dengan ekspansi bisnisnya yang cepat.

  • Sejumlah besar layanan mikro: Karena pertumbuhan bisnis dan tim Zoom yang cepat, lebih dari 100 layanan backend perlu dikirimkan. Namun, sulit untuk mengelola sejumlah besar layanan mikro secara efisien.

  • Berbagai lingkungan penyebaran: Perusahaan SaaS sering menghadapi skenario di mana pelanggan harus melakukan penyebaran di cloud khusus, cloud pribadi, dan multi-cloud. Layanan bisnis Zoom tersebar di seluruh dunia, sehingga ada tantangan teknis dengan sejumlah besar lingkungan cloud hybrid.

  • Infrastruktur yang kompleks: Perusahaan internet menengah dan besar umumnya memiliki tim infrastruktur khusus yang bertanggung jawab atas gateway API, pusat konfigurasi, manajemen kunci, log, pemantauan alarm, database, dll. Karena tim R&D Zoom tersebar secara global, merupakan tantangan besar untuk mengintegrasikan middleware dan infrastruktur yang kompleks ini ke dalam pipeline pengiriman berkelanjutan.

Tantangan di atas bukanlah hubungan aditif yang sederhana, melainkan hubungan multiplikatif. Dengan kata lain, situasi sebenarnya jauh lebih kompleks. Namun, alat sumber terbuka yang sebelumnya digunakan oleh Zoom tidak lagi memenuhi persyaratan Zoom saat ini. Itulah mengapa pipeline pengiriman berkelanjutan yang andal sangat penting.

Berikut adalah alasan rinci mengapa Zoom tidak melanjutkan penggunaan alat sumber terbuka sebelumnya.

Helm/KustomizeTerraform/PulumiKubeVela + Crossplane
Tidak dapat menghubungkan sistem selain KubernetesSulit menggunakan Terraform di lapisan Kubernetes dan middleware kecuali mengembangkan Provider tambahanTeknologi yang terlalu baru dengan pembaruan cepat, tidak cukup aman dan stabil untuk diadopsi di lingkungan produksi
Sulit mengontrol platform secara terpusat dalam mode sub-repositori GitMeningkatkan biaya mempelajari bahasa manajemen konfigurasi lain: hclDefinisi Trait + template Cuelang Kubevela dan kemampuan ekspresi pemrogramannya tidak cukup untuk mencakup berbagai platform middleware non-cloud-native di luar sistem Kubernetes
Sulit memelihara dan men-debug karena logika template Helm Chart yang kompleksMode kontrol terpusat Mono Repo tidak cocok untuk tim besar/
Sistem parameter yang tidak cukup kuat untuk mengelola parameter dinamis di sejumlah besar lingkungan//

Karena keterbatasan alat sumber terbuka di atas, Zoom akhirnya menyelidiki beberapa solusi utama untuk membangun pipeline pengiriman berkelanjutan dasar.

Setelah beberapa putaran perbandingan dan verifikasi, Zoom akhirnya memilih APISIX Ingress Controller untuk mendukung pipeline pengiriman berkelanjutan barunya.

Apache APISIX Ingress Controller

Apa itu Apache APISIX Ingress Controller?

Apache APISIX Ingress Controller adalah pengontrol ingress cloud-native yang menggunakan Apache APISIX sebagai bidang data untuk membawa lalu lintas dan memperluas fungsionalitas Kubernetes menggunakan CRD (CustomResourceDefinition). Ini bertanggung jawab untuk berinteraksi dengan server API Kubernetes, menerapkan kontrol akses berbasis peran (RBAC), memantau perubahan, menerapkan konversi objek dalam pengontrol Ingress, membandingkan perubahan, dan kemudian menyinkronkannya ke Apache APISIX. Selain itu, ini dapat mendukung sumber daya kustom, termasuk APISIX Route, APISIX Upstream, dan ingress asli Kubernetes lainnya, untuk mengontrol lalu lintas eksternal yang mengakses layanan yang disebarkan di Kubernetes.

Berikut adalah Diagram Waktu APISIX Ingress Controller.

Diagram Waktu APISIX Ingress

Mengapa Zoom Memilih APISIX Ingress Controller?

Menurut latar belakang di atas, muncul pertanyaan: seperti apa pipeline pengiriman berkelanjutan yang ingin dibangun Zoom, dan bagaimana Zoom mengadopsi APISIX Ingress untuk membangun pipeline pengiriman berkelanjutan dasarnya?

Zoom sebelumnya menggunakan NGINX sebagai gateway API. Namun, dengan perkembangan bisnis yang cepat dan peningkatan layanan mikro, keterbatasan solusi NGINX saat ini semakin terlihat.

Tim yang berbeda harus memelihara NGINX secara terpisah, dan ribuan baris file konfigurasi NGINX membuat pemeliharaan menjadi sulit. Selain itu, NGINX tidak dapat dengan cepat melakukan scaling ketika menyebarkan banyak baris di server cloud. Tentang mode reloading NGINX, Anda dapat memeriksa blog ini. Bisnis Zoom mulai berkembang menuju Ingress Controller.

Tim Gateway API meneliti beberapa solusi sumber terbuka. Setelah simulasi migrasi dan analisis konfigurasi bisnis aktual di NGINX dan sejumlah besar pengujian benchmark kinerja dan perbandingan ekosistem plugin, Zoom akhirnya memilih proyek APISIX Ingress Controller dari Apache Software Foundation, menjelajahi gateway Cloud-Native yang lebih canggih.

Mempertimbangkan skenario bisnisnya, Zoom lebih menekankan pada dua bagian berikut, yang dapat dipenuhi oleh APISIX Ingress.

  • Keamanan Data: Zoom sangat memperhatikan privasi pelanggan dan keamanan layanan; oleh karena itu, autentikasi dan verifikasi mTLS banyak digunakan di ruang rapat online dan panggilan telepon. Namun, banyak gateway API serupa hanya dapat menyediakan layanan seperti itu dalam versi enterprise mereka, sementara APISIX Ingress memberikan kemudahan dan kenyamanan yang besar untuk mencapai tujuan ini.

  • Stabilitas Layanan: Layanan backend Zoom memerlukan penyebaran Multi-AZ (Multi-Availability Zones) untuk ketersediaan tinggi di berbagai wilayah. Umumnya, bisnis ditempatkan di DC lain. Jika terjadi kesalahan di DC asli, lalu lintas klien perlu dialihkan ke DC lain, di mana APISIX Ingress dapat memenuhi persyaratan tersebut dengan sukses.

Fitur Apache APISIX Ingress Controller

Menggunakan Apache APISIX sebagai bidang data untuk membawa lalu lintas bisnis, Apache APISIX Ingress Controller mewarisi keunggulan berikut dari Apache APISIX.

  • Kinerja Tinggi dan Stabilitas: Sebagai gateway API sumber terbuka dinamis berkinerja tinggi, Apache APISIX tangguh dan stabil dalam kinerjanya, digunakan dalam banyak skenario lalu lintas besar perusahaan.

  • Komunitas yang Aktif: Sebagai proyek gateway API sumber terbuka tingkat atas dan paling aktif, Apache APISIX memiliki komunitas yang aktif dan telah mempertahankan tingkat pertumbuhan yang sangat baik sejak hari pertama.

  • Ekosistem yang Kaya: Apache APISIX mendukung protokol L7, termasuk HTTP(S), HTTP2, Dubbo, protokol IoT MQTT, dll. Selain itu, APISIX mendukung protokol L4 seperti TCP/UDP. Selain itu, dukungan penuh ARM64 didukung di Apache APISIX 3.0.

  • Banyak Plugin: Ada hampir 100 plugin yang dirilis dari APISIX resmi yang dapat digunakan pengguna dengan drag and drop sederhana. Reloading panas dan orkestrasi dinamis plugin memberikan kemudahan besar bagi pengguna.

Selain itu, APISIX Ingress Controller juga memiliki keunggulan unik berikut:

  • Kompatibilitas yang Baik: APISIX Ingress Controller mendukung beberapa versi sumber daya ingress dan dapat kompatibel dengan berbagai versi Kubernetes.

  • Pembaruan Dinamis: Tidak perlu melakukan reload layanan saat memodifikasi rute, sertifikat, dan konfigurasi lainnya, memastikan kelancaran operasi bisnis.

  • Scaling yang Fleksibel: Karena APISIX Ingress Controller mengadopsi struktur yang memisahkan bidang kontrol dan bidang data, kluster bidang data Apache APISIX dapat diperluas secara independen tanpa melakukan scaling pada APISIX Ingress Controller.

Arsitektur APISIX Ingress Controller

  • Ramah untuk Operasi dan Pemeliharaan: Di bawah arsitektur saat ini, pengguna dapat memilih untuk menyebarkan kluster bidang data APISIX di kluster Kubernetes atau lingkungan mesin fisik bare-metal sesuai dengan situasi aktual. Selain itu, karena pemisahan arsitektur APISIX ingress, APISIX pada bidang data membawa lalu lintas sementara APISIX ingress controller adalah komponen bidang kontrol. Oleh karena itu, kegagalan APISIX Ingress Controller tidak akan memengaruhi lalu lintas bisnis.

Setelah pemilihan gateway selesai, tim Gateway API menghadapi tantangan baru: bagaimana memigrasikan konfigurasi gateway API asli dari ratusan layanan ke APISIX Ingress? Tim Infrastruktur Zoom sedang mengembangkan pipeline pengiriman berkelanjutan, yang dapat secara signifikan mengurangi biaya migrasi dari konversi nginx.conf dan konfigurasi Ingress lainnya ke APISIX Ingress.

Proses dan Fungsi Membangun Pipeline Pengiriman Berkelanjutan

Pipeline Pengiriman Berkelanjutan Zoom

Pipeline pengiriman berkelanjutan adalah sistem pengiriman aplikasi end-to-end yang mengimplementasikan model tunggal untuk mendeklarasikan semua persyaratan pengiriman aplikasi dan mengatur serta mengeksekusi semua langkah pengiriman berkelanjutan dalam satu baris.

Pipeline Pengiriman Berkelanjutan Zoom

Ada enam bagian dalam pipeline pengiriman berkelanjutan:

  1. Persiapan: menyiapkan sumber daya yang telah ditetapkan, termasuk infrastruktur, middleware, sumber daya layanan cloud, dll.;

  2. Konfigurasi: menyiapkan file konfigurasi dan kunci yang diperlukan oleh aplikasi;

  3. Penyebaran: menggunakan K8s untuk penyebaran dalam skenario cloud-native (termasuk informasi tentang kontainer, gambar kontainer, parameter, versi, dan instance);

  4. Akses: membuat Layanan Kubernetes dan secara otomatis mengonfigurasi aturan perutean Apache APISIX Ingress jika penyebaran memerlukan akses eksternal;

  5. Observasi: Melakukan konfigurasi terkait observabilitas, seperti pemantauan, alarm, logging, dan analisis tracing;

  6. Scaling: Mendeklarasikan aturan scaling dinamis KEDA (Kubernetes Event-driven Autoscaling) melalui metrik pemantauan.

Bagaimana Mengadopsi APISIX Ingress dalam Pipeline

Ikhtisar Arsitektur Pipeline Zoom

Manajemen Proyek

Manajer Proyek lebih memperhatikan iterasi R&D dan bagaimana mengelola kemajuan rilis iteratif dan efisiensi personel pada garis waktu yang sesuai dengan iterasi. Zoom menggunakan alur kerja GitOps secara internal untuk membangun konfigurasi Gateway API ke dalam model pengiriman aplikasi. Di bawah model ini, definisi aturan perutean APISIX diintegrasikan dengan "Penyebaran" dan tautan lainnya, menyerahkan kontrol perubahan ke GitHub. Dengan pembuatan dan penggabungan cabang GitHub, pipeline mewujudkan garis waktu yang konsisten antara rilis dan rollback konfigurasi aplikasi dan gateway.

# Cuplikan Kode Pipeline CD Zoom di Repositori Git deploy: type: Deployment replicas: ~{ replicas, 2 } version: "latest" containers: - name: my-app image: "busybox" command: "echo 'Demo' && sleep 99d" access: - protocol: https host: my-domain.my-org.com cert: my-tls-cert apisix: routes: http: - name: my-api authentication: # ...... match: paths: - /my-api/*

Cara ini menyederhanakan manajemen rilis menjadi manajemen alur kerja dalam GitHub dan memecahkan masalah ketertinggalan waktu antara sistem hulu dan hilir yang mencocokkan perubahan ketika beberapa iterasi diproses secara bersamaan.

Pengembangan Aplikasi

Pengembang terutama fokus pada kemampuan perutean dan autentikasi API, yang sangat terkait dengan layanan bisnis dan harus diisi oleh pengembang untuk mencapai efek otomatis. Selain itu, mereka memperhatikan pengembangan dan implementasi fungsi bisnis dan bisnis tingkat atas, berharap dapat membangun infrastruktur yang siap pakai.

Dari kode di atas, kita dapat melihat bahwa pengembang hanya perlu mendefinisikan Authentication dan Match dalam pipeline pengiriman berkelanjutan ini. Mereka tidak perlu mengetahui logika dasar:

  • Pertama, menerjemahkannya ke dalam Deployment dan Service Kubernetes.
  • Kemudian, memanggil API platform untuk memverifikasi kebenaran jalur.
  • Terakhir, menerjemahkannya ke dalam objek ApisixRoute.

Mengintegrasikan konfigurasi APISIX dan alur kerja pipeline pengiriman berkelanjutan memberikan cara yang lebih hemat tenaga bagi pengembang.

Manajemen Lingkungan

Persyaratan manajemen dan kontrol lingkungan yang kompleks sering terjadi dalam skenario toB, dan masalah pengiriman di beberapa skenario cloud pribadi, cloud khusus, dan cloud hybrid perlu dipertimbangkan.

Beberapa konfigurasi APISIX ingress diimplementasikan untuk memenuhi persyaratan menyamarkan perbedaan lingkungan. Dengan cara ini, manajer sistem dapat mengontrol secara komprehensif perbedaan di beberapa lingkungan heterogen. Semua layanan yang disebarkan ke lingkungan efektif, menghindari beban kognitif dan operasi penyebaran khusus yang disebabkan oleh perbedaan lingkungan bagi pengembang aplikasi dan operasional. Misalnya, Zoom dapat menggunakan konfigurasi kustom untuk menonaktifkan tracing untuk beberapa lingkungan, mengonversi objek ApisixRoute ke objek Ingress asli dan Anotasi NGINX Ingress, dan menggunakan gambar yang berbeda untuk menarik rahasia.

Selain itu, isolasi multi-tenant diperlukan ketika beberapa lini bisnis menggunakan lingkungan APISIX. APISIX Ingress menyediakan pemilih Anotasi yang memungkinkan objek ApisixRoute yang berbeda diambil oleh instance lain dari APISIX Ingress Controller.

Manajemen Infrastruktur

Tim Gateway API perlu mengontrol semua instance APISIX, mengonfigurasi kebijakan keamanan secara komprehensif, mengimplementasikan multi-zona ketersediaan, dan sebagainya.

Setiap plugin pipeline menyediakan item konfigurasi untuk insinyur infrastruktur. Dalam plugin ingress-apisix, ada properti defaultPlugins.

Setelah tim gateway API mengonfigurasi properti ini, pengaturan akan berlaku untuk semua layanan, yang cocok untuk strategi keamanan dan kontrol risiko yang terpadu.

Kesimpulan

APISIX Ingress Controller memainkan peran penting dalam pipeline pengiriman berkelanjutan Zoom, mengurangi tekanan pada manajemen proyek, pengembangan aplikasi, manajemen lingkungan, dan manajemen middleware dan infrastruktur. Kasus Zoom layak dipelajari oleh perusahaan lain, dan kami berharap APISIX Ingress Controller dapat berkontribusi pada inovasi lebih banyak perusahaan.

Selain itu, Apache APISIX Ingress secara resmi merilis V1.5 pada Agustus 2022, yang menyatukan proposal semua versi API sumber daya dan meningkatkan semua versi API CRD ke V2. Pada saat yang sama, ini mendukung sebagian besar sumber daya Gateway API. Apache APISIX Ingress telah memungkinkan sumber daya Ingress untuk menggunakan plugin APISIX apa pun dengan menambahkan Anotasi baru “k8s.apisix.apache.org/plugin-config-name” ke sumber daya Ingress. Dengan cara ini, ini akan secara signifikan meningkatkan kemudahan penggunaan APISIX Ingress Controller dan mengurangi biaya bagi pengguna untuk bermigrasi dari Ingress Controller lain ke APISIX Ingress Controller.

Untuk informasi lebih lanjut, silakan periksa Apache APISIX Ingress V1.5.

Tags: