(0275) 2974 127
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?
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.
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.
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:
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:
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:
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:
Inilah yang membuat FaaS sangat cocok untuk arsitektur yang terdiri dari beberapa komponen yang saling berkomunikasi berdasarkan event.
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:
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.
FaaS memiliki beberapa karakteristik yang membedakannya dari model komputasi tradisional.
FaaS umumnya bekerja berdasarkan event. Function dipanggil ketika terjadi peristiwa tertentu, seperti request HTTP, upload file, perubahan database, pesan queue, atau jadwal.
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.
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 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.
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.
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:
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:
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.
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:
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:
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:
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.
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 |
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 |
Beberapa layanan cloud yang menyediakan kemampuan function atau serverless compute antara lain:
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 merupakan layanan serverless dari Microsoft Azure yang memungkinkan developer menjalankan kode berdasarkan event, HTTP request, timer, message, dan berbagai trigger lainnya.
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.
FaaS dapat menjadi pilihan yang relevan ketika aplikasi memiliki kebutuhan seperti:
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.
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.
Sebelum menerapkan FaaS, ada beberapa aspek yang sebaiknya diperhatikan.
Jika aplikasi membutuhkan waktu respons yang sangat rendah, periksa karakteristik cold start dari platform yang digunakan dan fitur yang tersedia untuk menguranginya.
Pastikan kebutuhan aplikasi sesuai dengan batas:
Hindari membuat satu function yang menangani terlalu banyak pekerjaan sekaligus. Function yang memiliki tanggung jawab jelas biasanya lebih mudah diuji, dipelihara, dan dikembangkan.
Aplikasi berbasis FaaS tetap membutuhkan monitoring. Beberapa hal yang perlu diperhatikan antara lain:
Jangan hanya menghitung biaya function. Arsitektur FaaS dapat menggunakan berbagai layanan tambahan, seperti:
Karena itu, perhitungan biaya sebaiknya dilakukan berdasarkan keseluruhan arsitektur.
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.
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.
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 |
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.
Membuat halaman website satu per satu bisa memakan banyak waktu, terutama bagi bisnis yang memiliki…
Jika pada bagian sebelumnya dibahas bahwa chatbot dapat menghasilkan respons yang terlihat emosional, pertanyaan berikutnya…
Di balik koneksi HTTPS yang digunakan saat mengakses website, terdapat mekanisme keamanan yang membantu memastikan…
Pernah melihat chatbot AI memberikan jawaban seperti sedang takut, tertekan, bingung, frustrasi, atau bahkan merasa…
Dalam sebuah aplikasi, database tidak hanya berfungsi untuk menyimpan data. Database juga harus mampu memastikan…
Dalam pengembangan aplikasi modern, berbagai sistem perlu saling bertukar informasi agar proses dapat berjalan secara…