Mengapa Anda Membutuhkan Apache APISIX Saat Menggunakan Amazon Lambda

Xiaolan Cheng

December 9, 2022

Ecosystem

Serverless dan Amazon Lambda

Apa itu Serverless?

Serverless computing, atau secara sederhana serverless, adalah tren populer di pasar perangkat lunak saat ini. Semakin banyak perusahaan yang memigrasikan operasi mereka dari arsitektur tradisional yang berorientasi server ke arsitektur serverless yang lebih cepat dan hemat biaya.

Arsitektur serverless adalah cara untuk membangun dan menjalankan aplikasi tanpa mengelola infrastruktur. Ini menyebarkan infrastruktur yang diperlukan di vendor cloud atau beberapa platform serverless yang dikelola sendiri. Sehingga para insinyur dapat fokus pada logika bisnis aplikasi tanpa menghabiskan banyak usaha untuk pembangunan, pengelolaan, dan penskalaan infrastruktur. Tiga vendor cloud besar (Amazon Web Services, Microsoft Azure, dan Google Cloud) menunjukkan minat yang besar dalam menawarkan layanan serverless terbaik. Misalnya, Amazon Lambda adalah layanan komputasi serverless inti untuk AWS (Amazon Web Services).

Seperti yang ditunjukkan pada gambar di bawah, berbeda dengan metode penyebaran tradisional, menggunakan Amazon Lambda, Anda hanya perlu mengunggah file sumber, memilih lingkungan eksekusi, dan menjalankannya. Kemudian Anda bisa mendapatkan hasil operasi. Membebaskan diri Anda dari langkah-langkah mengunggah dan mengompilasi di server. Dalam proses ini, penyebaran server, instalasi runtime, dan kompilasi semuanya dikelola dan dijalankan oleh platform komputasi serverless Amazon. Insinyur hanya perlu mempertahankan kode sumber mereka dan konfigurasi yang relevan dari lingkungan eksekusi.

Teknologi yang terkait dengan ini adalah BaaS (Backend as a Service), yang berarti kita tidak lagi menulis dan mengelola komponen sisi server dan sepenuhnya mengalihdayakan semua bagian aplikasi. Serverless adalah lingkungan hosting baru di mana kode dijalankan.

Diagram Arsitektur

Mengapa Kita Membutuhkan Serverless?

Serverless memiliki beberapa keunggulan:

  • Bagi pengembang, serverless lebih ramah. Ini dapat mengabstraksi detail manajemen server, memungkinkan insinyur untuk fokus pada kode bisnis itu sendiri.
  • Dalam hal biaya, serverless menggunakan metode bayar per penggunaan.
  • Dalam hal kinerja, ini dapat melakukan penskalaan otomatis sesuai dengan lalu lintas permintaan.
  • Ini juga dapat mengoptimalkan eksekusi kode dan waktu respons dengan menyesuaikan jumlah memori yang dialokasikan untuk fungsi.

Mengapa Kita Membutuhkan API Gateway Saat Menggunakan Serverless?

Serverless juga memiliki kelemahannya:

  • URL fungsi dikodekan secara keras ke dalam aplikasi.
  • Logika otorisasi dan autentikasi yang rumit.
  • Sangat bergantung pada vendor cloud: Jika vendor cloud down, layanan juga down.
  • Vendor cloud yang berbeda memiliki skema yang sangat berbeda tanpa standar tertentu, sehingga migrasi dari satu vendor ke vendor lain biasanya mahal.

API Gateway dapat secara alami menyelesaikan masalah ini. Digabungkan bersama, serverless dapat menjadi arsitektur yang kuat. Gambar di bawah ini menggambarkan cara merakit Layanan Web sederhana dengan layanan serverless Amazon dengan cepat. API gateway sangat penting dalam menyediakan otorisasi, definisi rute, dan permintaan proxy. Mengambil Apache APISIX sebagai contoh, ini menawarkan dukungan serverless untuk AWS dan Azure. Anda dapat mendefinisikan rute untuk mengaktifkan plugin serverless alih-alih mengkodekan URL fungsi secara keras ke dalam aplikasi. Dengan fleksibilitas memperbarui URI fungsi secara panas, memperbarui ke penyedia layanan cloud FaaS (Function as a service) yang berbeda menjadi mudah. Selain itu, pendekatan ini mengurangi rasa sakit dari otorisasi dan autentikasi yang rumit.

Merakit Layanan Web dengan Layanan Serverless Amazon

Apache APISIX

Apache APISIX adalah API gateway cloud-native di bawah Apache Software Foundation (ASF). Bersifat dinamis, real-time, dan berkinerja tinggi, APISIX menyediakan fitur seperti load balancing, upstream dinamis, canary release, circuit breaking, autentikasi, dan observabilitas. Kita dapat menggunakan Apache APISIX untuk menangani lalu lintas tradisional utara-selatan dan timur-barat antara layanan. Pada saat yang sama, ini juga dapat digunakan sebagai K8s Ingress Controller. APISIX memperluas ekosistemnya melalui plugin bawaan, mencakup berbagai skenario penggunaan API gateway, seperti autentikasi, keamanan, observabilitas, manajemen lalu lintas, akses multi-protokol, dll. Tentu saja, ini juga mencakup banyak plugin yang terkait dengan serverless.

Plugin aws-lambda

Plugin aws-lambda mengintegrasikan AWS Lambda dengan APISIX sebagai upstream dinamis untuk memproksi semua permintaan untuk URI tertentu ke cloud AWS. Saat diaktifkan, plugin menghentikan permintaan yang sedang berlangsung dari URI yang dikonfigurasi dan memulai permintaan baru ke URI Gateway AWS Lambda atas nama klien. Permintaan baru ini membawa detail otorisasi yang sebelumnya dikonfigurasi, termasuk header permintaan, body, dan parameter (ketiganya diteruskan dari permintaan asli). Ini mengembalikan respons dengan header, kode status, dan body ke klien yang memulai permintaan dengan APISIX. Plugin ini mendukung otorisasi melalui kunci API AWS dan rahasia IAM AWS.

Lihat APISIX atau blog ini untuk informasi lebih lanjut.

Plugin Terkait Serverless di Apache APISIX

Selain Amazon Lambda, Apache APISIX juga mendukung integrasi dengan ekosistem terkait serverless seperti Azure Function, Lua function, dan Apache OpenWhisk, dan menyediakan plugin serverless yang sesuai.

Tabel 1 Plugin terkait Serverless Apache APISIX

Nama PluginDeskripsi
serverlessPengguna dapat mengunggah skrip Lua kustom melalui plugin serverless dan menentukan fase eksekusi kode sesuai dengan konfigurasi. Misalnya, melakukan kontrol akses pada permintaan dalam fase akses, memodifikasi header respons atau body respons dalam fase header filter dan body filter, mencetak log yang dipersonalisasi dalam fase log, dll. Juga, karena plugin serverless di-reload secara panas, modifikasi dapat segera berlaku tanpa perlu me-restart Apache APISIX.
azure-functionsDigunakan untuk mengintegrasikan APISIX dengan Azure Serverless Function sebagai upstream dinamis untuk memproksi semua permintaan untuk URI tertentu ke Microsoft Azure Cloud. Saat diaktifkan, plugin azure-functions menghentikan permintaan yang sedang berlangsung ke URI yang dikonfigurasi dan memulai permintaan baru ke Azure Functions atas nama klien. Permintaan baru ini membawa detail otorisasi yang sebelumnya dikonfigurasi, termasuk header permintaan, body, dan parameter (ketiganya diteruskan dari permintaan asli). Kemudian, ini mengembalikan respons dengan header, kode status, dan body ke klien yang memulai permintaan dengan APISIX.
openwhiskDigunakan untuk mengintegrasikan APISIX dengan platform serverless terdistribusi open source Apache OpenWhisk. Saat diaktifkan, plugin menghentikan permintaan yang sedang berlangsung ke URI yang dikonfigurasi dan memulai permintaan baru ke endpoint API Host OpenWhisk atas nama klien, dan plugin openwhisk mengembalikan informasi respons ke klien.
openfunctionDigunakan untuk mengintegrasikan APISIX dengan platform serverless terdistribusi open source CNCF OpenFunction sebagai upstream dinamis. Saat diaktifkan, plugin menghentikan permintaan yang sedang berlangsung untuk URI yang dikonfigurasi dan memulai permintaan baru ke fungsi OpenFunction atas nama klien, dan kemudian plugin openfunction mengembalikan informasi respons ke klien.

Hubungan antara Apache APISIX dan produk terkait Serverless

Ringkasan

Dalam beberapa tahun terakhir, dengan munculnya arsitektur microservice, semuanya telah bermigrasi ke cloud, dan banyak penyedia layanan cloud juga meluncurkan produk terkait serverless. Pengembangan berbasis serverless telah menjadi model pengembangan yang sangat nyaman. Mengikuti tren cloud-native, APISIX mendukung komputasi serverless dengan menyediakan plugin serverless, azure-functions, openwhisk, dan openfunction.

Jika Anda ingin mempelajari lebih lanjut tentang API gateway dan fitur serverless-nya, hubungi kami di https://api7.ai/contact.

Tags: