Function as a Service (FaaS): Cara Baru Menjalankan Aplikasi Tanpa Kelola Server
Perkembangan cloud computing membuat proses membangun dan menjalankan aplikasi menjadi semakin fleksibel. Jika sebelumnya developer perlu menyiapkan server, sistem operasi, runtime, serta berbagai konfigurasi infrastruktur secara mandiri, kini sebagian besar pekerjaan tersebut dapat ditangani oleh penyedia layanan cloud.
Salah satu teknologi yang hadir untuk menyederhanakan proses tersebut adalah Function as a Service (FaaS). Teknologi ini memungkinkan developer menjalankan potongan kode tertentu tanpa harus mengelola server secara langsung.
FaaS banyak digunakan untuk berbagai kebutuhan, mulai dari membuat API, memproses file, menjalankan webhook, mengolah data, hingga membangun aplikasi berbasis event. Teknologi ini juga menjadi salah satu komponen penting dalam arsitektur serverless computing.
Lalu, apa itu Function as a Service? Bagaimana cara kerjanya, apa manfaat dan kekurangannya, serta kapan teknologi ini sebaiknya digunakan?
Apa Itu Function as a Service (FaaS)?
Function as a Service (FaaS) adalah model cloud computing yang memungkinkan developer menjalankan fungsi atau potongan kode sebagai respons terhadap event tertentu tanpa harus mengelola server secara langsung.
Dalam model ini, developer cukup membuat kode yang memiliki tugas tertentu kemudian men-deploy-nya ke platform FaaS. Penyedia cloud menangani berbagai kebutuhan infrastruktur di belakangnya, seperti penyediaan execution environment, pengelolaan server, serta scaling sesuai kemampuan dan konfigurasi layanan.
Sebagai contoh, sebuah website memiliki fitur upload gambar. Setelah pengguna mengunggah gambar, sebuah event dapat memicu function untuk melakukan resize, membuat thumbnail, atau mengubah format gambar sebelum hasilnya disimpan kembali.
Secara sederhana, alurnya dapat digambarkan seperti berikut:
Event → Function dijalankan → Proses berlangsung → Hasil dikirim atau disimpan
Konsep tersebut membuat developer dapat lebih fokus pada logika aplikasi tanpa harus menangani seluruh lapisan infrastruktur yang diperlukan untuk menjalankan kode.
Apa Hubungan FaaS dengan Serverless Computing?
FaaS dan serverless computing sering dianggap sebagai istilah yang sama. Padahal, keduanya memiliki cakupan yang berbeda.
Serverless computing merupakan pendekatan yang lebih luas, sedangkan FaaS merupakan salah satu bentuk layanan compute di dalam ekosistem serverless.
Serverless memungkinkan aplikasi memanfaatkan berbagai layanan cloud yang dikelola oleh provider tanpa pengguna harus mengelola server secara langsung. Layanannya dapat mencakup compute, database, storage, messaging, API, hingga event processing.
Sementara itu, FaaS secara khusus berfokus pada eksekusi function berdasarkan request atau event. Dengan demikian, sebuah aplikasi serverless tidak harus hanya terdiri dari function. Function biasanya bekerja bersama layanan lain untuk membentuk sebuah aplikasi.
Contohnya: Pengguna → API Gateway → Function → Database.
Dalam arsitektur yang lebih kompleks, alurnya dapat menjadi: Pengguna → API → Function → Queue → Function → Database.
Jadi, FaaS dapat dianggap sebagai salah satu komponen compute yang banyak digunakan dalam arsitektur serverless.
Bagaimana Cara Kerja FaaS?
FaaS umumnya menggunakan pendekatan event-driven, yaitu kode dijalankan ketika terdapat event atau trigger tertentu. Berbeda dari aplikasi yang berjalan terus-menerus pada server, function biasanya hanya dieksekusi ketika dibutuhkan. Berikut proses sederhananya.
1. Developer Membuat Function
Langkah pertama adalah membuat function yang memiliki tugas tertentu. Function sebaiknya memiliki tanggung jawab yang cukup jelas. Misalnya:
- memproses gambar
- memvalidasi data
- mengirim notifikasi
- memproses pembayaran
- mengubah format data
- menjalankan webhook
- membuat laporan
- atau memproses pesan dari queue
Dengan membagi aplikasi menjadi function yang memiliki tugas spesifik, pengembangan dan pemeliharaan kode dapat dilakukan secara lebih terstruktur.
2. Function Dideploy ke Platform Cloud
Setelah dibuat, function diunggah ke platform FaaS. Developer biasanya perlu menentukan beberapa konfigurasi, seperti:
- runtime atau lingkungan bahasa pemrograman
- memory
- batas waktu eksekusi
- environment variable
- permission
- trigger
- dan konfigurasi jaringan jika diperlukan
Setelah deployment selesai, platform cloud menyediakan environment yang diperlukan untuk menjalankan function.
3. Event Memicu Function
Function tidak harus berjalan sepanjang waktu. Function akan dijalankan ketika event yang telah dikonfigurasi terjadi. Event tersebut dapat berasal dari berbagai sumber, seperti:
- HTTP request
- API
- file yang diunggah
- perubahan data
- message queue
- layanan cloud lainnya
- aktivitas perangkat IoT
- atau jadwal tertentu
Sebagai contoh, ketika pengguna mengunggah gambar ke object storage, event upload dapat memicu function untuk memproses gambar tersebut.
4. Platform Menjalankan Function
Setelah trigger diterima, platform menyiapkan environment yang diperlukan kemudian menjalankan function. Developer tidak perlu membuat virtual machine atau mengatur server secara manual untuk setiap function.
Jumlah execution environment juga dapat disesuaikan dengan permintaan yang masuk sesuai mekanisme scaling dari provider.
5. Function Menghasilkan Output
Setelah selesai dijalankan, function dapat menghasilkan berbagai output. Misalnya:
- mengembalikan response kepada pengguna
- menyimpan data ke database
- menyimpan file ke storage
- mengirim pesan ke queue
- memanggil API lain
- atau memicu proses berikutnya
Inilah yang membuat FaaS sangat cocok untuk arsitektur yang terdiri dari beberapa komponen yang saling berkomunikasi berdasarkan event.
Contoh Sederhana Penggunaan FaaS
Untuk memahami FaaS dengan lebih mudah, bayangkan sebuah website toko online yang menyediakan fitur upload foto produk. Ketika administrator mengunggah foto produk, website tidak harus menjalankan seluruh proses pengolahan gambar di aplikasi utama.
Dengan FaaS, alurnya dapat dibuat seperti berikut:
Admin upload gambar → Storage menyimpan file → Event dibuat → Function dijalankan → Gambar diproses → Hasil disimpan
Function tersebut dapat melakukan beberapa pekerjaan, seperti:
- mengubah ukuran gambar
- membuat thumbnail
- mengoptimalkan ukuran file
- mengubah format gambar
- atau menambahkan metadata
Dengan pendekatan tersebut, proses pengolahan gambar dapat dipisahkan dari aplikasi utama. Jika pada waktu tertentu terdapat banyak gambar yang diunggah secara bersamaan, platform FaaS dapat menyesuaikan jumlah execution environment sesuai mekanisme scaling yang tersedia.
Karakteristik Function as a Service
FaaS memiliki beberapa karakteristik yang membedakannya dari model komputasi tradisional.
- Event-Driven
FaaS umumnya bekerja berdasarkan event. Function dipanggil ketika terjadi peristiwa tertentu, seperti request HTTP, upload file, perubahan database, pesan queue, atau jadwal.
- Tidak Perlu Mengelola Server Secara Langsung
Salah satu karakteristik utama FaaS adalah developer tidak perlu mengelola server secara langsung.
Penyedia cloud menangani infrastruktur yang diperlukan untuk menjalankan function, sementara developer lebih banyak berfokus pada kode dan konfigurasi aplikasinya.
- Automatic Scaling
Platform FaaS dapat menyesuaikan jumlah execution environment berdasarkan jumlah permintaan dan kemampuan layanan.
Hal ini dapat membantu aplikasi menghadapi perubahan traffic tanpa developer harus melakukan scaling server secara manual.
- Function Umumnya Bersifat Stateless
Function biasanya dirancang agar tidak bergantung pada data lokal dari eksekusi sebelumnya. Jika sebuah function membutuhkan data yang harus tetap tersedia setelah eksekusi selesai, data tersebut biasanya disimpan pada layanan lain seperti database, object storage, cache, atau sistem penyimpanan eksternal.
Pendekatan ini membantu function tetap fleksibel ketika platform menjalankan beberapa execution environment secara bersamaan.
- Berbasis Penggunaan
Banyak layanan FaaS menggunakan model biaya yang berkaitan dengan penggunaan, seperti jumlah invocation, durasi eksekusi, memory, atau resource lain yang digunakan.
Namun, struktur harga berbeda antara satu penyedia cloud dan lainnya sehingga biaya sebaiknya dihitung berdasarkan kebutuhan aplikasi secara keseluruhan.
Manfaat Function as a Service
FaaS menawarkan beberapa manfaat yang membuatnya menarik untuk aplikasi tertentu.
1. Mengurangi Beban Pengelolaan Infrastruktur
Developer tidak perlu menangani seluruh proses provisioning dan pengelolaan server secara manual. Pekerjaan seperti penyediaan environment dan sebagian pengelolaan infrastruktur ditangani oleh provider. Dengan begitu, tim dapat lebih fokus pada pengembangan fitur dan logika aplikasi.
2. Scaling Lebih Fleksibel
FaaS dapat menyesuaikan jumlah eksekusi berdasarkan permintaan. Hal ini bermanfaat untuk aplikasi yang memiliki traffic yang berubah-ubah, misalnya:
- API
- sistem notifikasi
- pemrosesan file
- webhook
- aplikasi dengan traffic musiman
- dan proses asynchronous
3. Cocok untuk Workload Berbasis Event
FaaS sangat sesuai untuk pekerjaan yang tidak harus berjalan terus-menerus.
Misalnya:
File di-upload → Function berjalan.
Pesan masuk queue → Function memproses pesan.
Database berubah → Function menjalankan proses tertentu.
Pola seperti ini dapat membantu membangun aplikasi yang lebih modular dan loosely coupled.
4. Pengembangan Function Lebih Terfokus
Karena kode dapat dibagi menjadi beberapa function, developer dapat mengembangkan bagian aplikasi berdasarkan tanggung jawab masing-masing. Misalnya, sebuah aplikasi dapat memiliki function berbeda untuk:
- autentikasi
- validasi data
- pengiriman email
- pemrosesan gambar
- dan pembuatan laporan
Pendekatan ini dapat membantu pengembangan dilakukan secara lebih terstruktur, meskipun tetap membutuhkan desain arsitektur yang baik.
5. Dapat Mengurangi Resource yang Tidak Terpakai
Pada workload yang tidak selalu aktif, FaaS dapat menjadi pilihan menarik karena function dapat dijalankan ketika diperlukan.
Beberapa platform juga menyediakan kemampuan untuk menurunkan jumlah execution environment ketika tidak terdapat permintaan, meskipun perilaku dan mekanismenya bergantung pada provider.
Kekurangan Function as a Service
FaaS bukan berarti selalu menjadi pilihan terbaik. Ada beberapa keterbatasan yang perlu diperhatikan.
1. Cold Start
Salah satu istilah penting dalam FaaS adalah cold start. Cold start terjadi ketika platform perlu menyiapkan execution environment sebelum function dapat menjalankan kode. Proses tersebut dapat menambahkan latency pada invocation tertentu.
Dampaknya dapat lebih terasa pada aplikasi yang sangat sensitif terhadap waktu respons. Beberapa platform menyediakan fitur tertentu untuk membantu mengurangi dampak cold start, tetapi mekanismenya berbeda-beda.
2. Memiliki Batas Eksekusi
Layanan FaaS umumnya memiliki batas tertentu, seperti:
- durasi maksimum eksekusi
- memory
- concurrency
- ukuran deployment
- dan resource lainnya
Karena itu, workload yang membutuhkan proses sangat panjang perlu dievaluasi terlebih dahulu sebelum dipindahkan ke FaaS.
3. Tidak Cocok untuk Semua Jenis Workload
FaaS lebih cocok untuk function atau proses tertentu dibandingkan aplikasi yang harus berjalan secara terus-menerus. Workload yang membutuhkan:
- koneksi persistent;
- proses panjang;
- kontrol penuh terhadap operating system;
- resource yang selalu aktif;
- atau konfigurasi server yang sangat spesifik;
mungkin lebih sesuai menggunakan virtual machine, container, atau layanan compute lainnya.
4. Arsitektur Bisa Menjadi Lebih Kompleks
Aplikasi berbasis FaaS biasanya menggunakan beberapa layanan cloud sekaligus. Contohnya:
API Gateway → Function → Database → Queue → Function → Storage
Arsitektur tersebut memang fleksibel, tetapi semakin banyak komponen yang digunakan, semakin besar pula kebutuhan untuk mengelola:
- monitoring;
- logging;
- tracing;
- error handling;
- retry;
- permission;
- dan observability.
5. Potensi Vendor Lock-In
Function dapat terintegrasi dengan berbagai layanan proprietary milik provider cloud. Misalnya, function terhubung langsung dengan database, storage, queue, IAM, dan event service tertentu.
Semakin dalam integrasi tersebut, semakin banyak pekerjaan yang mungkin diperlukan jika aplikasi ingin dipindahkan ke provider lain.
Perbedaan FaaS, IaaS, dan PaaS
FaaS, IaaS, dan PaaS sama-sama merupakan model layanan cloud, tetapi memiliki tingkat abstraksi dan tanggung jawab yang berbeda.
| Aspek | IaaS | PaaS | FaaS |
|---|---|---|---|
| Fokus | Infrastruktur | Platform aplikasi | Function atau kode |
| Unit utama | VM, storage, network | Aplikasi | Function |
| Pengelolaan server | Lebih banyak dilakukan pengguna | Lebih sedikit | Sebagian besar ditangani provider |
| Scaling | Banyak dikonfigurasi pengguna | Biasanya tersedia | Dikelola platform |
| Kontrol infrastruktur | Tinggi | Menengah | Lebih terbatas |
| Cocok untuk | Infrastruktur dengan kebutuhan kontrol tinggi | Pengembangan aplikasi | Workload berbasis event |
| Model penggunaan | Resource yang dialokasikan | Resource platform | Invocation dan resource yang digunakan |
Perbedaan FaaS dan Container
FaaS dan container sama-sama banyak digunakan dalam cloud computing, tetapi keduanya memiliki pendekatan yang berbeda.
| Aspek | FaaS | Container |
|---|---|---|
| Unit deployment | Function | Container |
| Fokus | Potongan kode atau fungsi tertentu | Aplikasi atau service |
| Pengelolaan server | Umumnya ditangani provider | Bergantung pada platform |
| Scaling | Umumnya berdasarkan invocation atau event | Umumnya berdasarkan instance/container |
| Durasi workload | Biasanya memiliki batas tertentu | Lebih fleksibel |
| Kontrol runtime | Lebih terbatas | Lebih besar |
| Cocok untuk | Event-driven workload | Aplikasi dan service yang lebih lengkap |
Contoh Layanan FaaS
Beberapa layanan cloud yang menyediakan kemampuan function atau serverless compute antara lain:
- AWS Lambda
AWS Lambda merupakan layanan serverless compute dari Amazon Web Services yang memungkinkan developer menjalankan kode sebagai respons terhadap event atau request.
Lambda dapat digunakan bersama berbagai layanan AWS untuk membangun aplikasi event-driven.
- Azure Functions
Azure Functions merupakan layanan serverless dari Microsoft Azure yang memungkinkan developer menjalankan kode berdasarkan event, HTTP request, timer, message, dan berbagai trigger lainnya.
- Google Cloud Functions
Google Cloud menyediakan layanan functions untuk menjalankan kode dengan pendekatan serverless.
Dalam dokumentasi Google Cloud saat ini, layanan tersebut juga dikenal dalam konteks Cloud Run functions.
Ketiga layanan tersebut memiliki konsep dasar yang sama, tetapi detail mengenai runtime, scaling, konfigurasi, batas resource, dan harga dapat berbeda.
Kapan Sebaiknya Menggunakan FaaS?
FaaS dapat menjadi pilihan yang relevan ketika aplikasi memiliki kebutuhan seperti:
- menjalankan kode berdasarkan event;
- membuat API atau endpoint tertentu;
- memproses file setelah upload;
- menjalankan scheduled task;
- memproses pesan dari queue;
- menangani webhook;
- melakukan transformasi data;
- mengirim notifikasi otomatis;
- memproses event dari perangkat IoT;
- atau menjalankan automation tertentu.
FaaS juga dapat dipertimbangkan ketika tim ingin mengurangi pekerjaan operasional yang berkaitan dengan pengelolaan server. Namun, keputusan tersebut tetap perlu mempertimbangkan karakteristik workload dan layanan cloud yang digunakan.
Contoh Penggunaan FaaS dalam Aplikasi
FaaS dapat digunakan untuk berbagai kebutuhan praktis.
1. Pemrosesan Gambar
Ketika pengguna mengunggah gambar, event upload dapat memicu function untuk melakukan resize atau membuat thumbnail.
Upload → Storage → Event → Function → Resize → Storage
2. Webhook
Function dapat menerima webhook dari aplikasi eksternal dan memproses data yang dikirim.
Webhook → Function → Validasi → Database/API
3. Scheduled Task
Function dapat dipanggil berdasarkan jadwal untuk menjalankan pekerjaan tertentu. Contohnya membuat laporan secara berkala atau melakukan proses otomatis tertentu.
Scheduler → Function → Proses → Database
4. Pemrosesan Queue
Pesan yang masuk ke message queue dapat memicu function untuk memproses pekerjaan secara asynchronous.
Producer → Queue → Function → Processing
Pendekatan ini dapat membantu memisahkan pengirim pekerjaan dengan proses yang mengerjakannya.
5. API Backend
Function juga dapat digunakan sebagai backend untuk aplikasi web atau mobile.
Client → API Gateway/HTTP → Function → Database
Dengan pendekatan ini, setiap endpoint atau proses tertentu dapat dihubungkan dengan function yang sesuai.
Hal yang Perlu Diperhatikan Sebelum Menggunakan FaaS
Sebelum menerapkan FaaS, ada beberapa aspek yang sebaiknya diperhatikan.
- Perhatikan Cold Start dan Latency
Jika aplikasi membutuhkan waktu respons yang sangat rendah, periksa karakteristik cold start dari platform yang digunakan dan fitur yang tersedia untuk menguranginya.
- Periksa Batas Resource
Pastikan kebutuhan aplikasi sesuai dengan batas:
-
- memory;
- execution time;
- concurrency;
- ukuran deployment;
- dan resource lainnya.
- Rancang Function dengan Tanggung Jawab yang Jelas
Hindari membuat satu function yang menangani terlalu banyak pekerjaan sekaligus. Function yang memiliki tanggung jawab jelas biasanya lebih mudah diuji, dipelihara, dan dikembangkan.
- Siapkan Logging dan Monitoring
Aplikasi berbasis FaaS tetap membutuhkan monitoring. Beberapa hal yang perlu diperhatikan antara lain:
-
- jumlah invocation
- execution duration
- error rate
- latency
- resource usage
- dan event yang gagal diproses
- Hitung Biaya Secara Keseluruhan
Jangan hanya menghitung biaya function. Arsitektur FaaS dapat menggunakan berbagai layanan tambahan, seperti:
-
- API Gateway
- database
- storage
- message queue
- network
- logging
- monitoring
- dan layanan pendukung lainnya
Karena itu, perhitungan biaya sebaiknya dilakukan berdasarkan keseluruhan arsitektur.
- Terapkan Security dan Least Privilege
Function biasanya memiliki akses ke layanan cloud lain. Permission yang diberikan sebaiknya dibatasi sesuai kebutuhan. Pendekatan least privilege dapat membantu mengurangi risiko akibat permission yang terlalu luas.
FaaS dalam Arsitektur Serverless
Dalam aplikasi modern, FaaS biasanya tidak berdiri sendiri. Function dapat menjadi bagian dari arsitektur yang terdiri dari berbagai managed service.
Contoh sederhana: User → API Gateway → Function → Database.
Sedangkan aplikasi yang lebih kompleks dapat menggunakan pola: User → API Gateway → Function → Queue → Function → Database.
Contoh lainnya: User → Storage → Event → Function → Storage.
Setiap komponen dapat memiliki tanggung jawab berbeda. Function menangani logika tertentu, storage menyimpan file, database menyimpan data terstruktur, sedangkan queue membantu menangani pekerjaan asynchronous.
Pendekatan seperti ini memungkinkan aplikasi dibangun dari beberapa komponen yang dapat dikembangkan dan diskalakan secara lebih independen.
Apa Perbedaan FaaS dengan Serverless?
FaaS merupakan salah satu bagian dari serverless computing. FaaS berfokus pada menjalankan function atau potongan kode berdasarkan event maupun request.
Sementara itu, serverless computing memiliki cakupan yang lebih luas dan dapat mencakup berbagai layanan terkelola lainnya. Contohnya:
| FaaS | Serverless Computing |
|---|---|
| Menjalankan function | Pendekatan arsitektur yang lebih luas |
| Berfokus pada compute | Dapat mencakup compute, database, storage, messaging, dan layanan lain |
| Umumnya event-driven | Dapat menggunakan berbagai pola komunikasi |
| Salah satu komponen serverless | Mencakup berbagai komponen |
Kesimpulan
Function as a Service (FaaS) adalah model cloud computing yang memungkinkan developer menjalankan kode berdasarkan event atau request tanpa perlu mengelola server secara langsung. FaaS cocok untuk berbagai kebutuhan seperti API, webhook, pemrosesan file, automation, dan aplikasi event-driven.
Meski menawarkan fleksibilitas scaling dan mengurangi pengelolaan infrastruktur, FaaS tetap memiliki keterbatasan seperti cold start, batas eksekusi, kompleksitas arsitektur, dan biaya layanan pendukung. Karena itu, penggunaannya perlu disesuaikan dengan kebutuhan aplikasi.
Untuk mempelajari lebih banyak tentang cloud computing, hosting, server, dan teknologi digital, kunjungi Blog Hosteko.
