HOTLINE

(0275) 2974 127

CHAT WA 24/7
0859-60000-390 (Sales)
0852-8969-9009 (Support)
cloud

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:

    1. memory;
    2. execution time;
    3. concurrency;
    4. ukuran deployment;
    5. 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:

    1. jumlah invocation
    2. execution duration
    3. error rate
    4. latency
    5. resource usage
    6. dan event yang gagal diproses
  • Hitung Biaya Secara Keseluruhan

Jangan hanya menghitung biaya function. Arsitektur FaaS dapat menggunakan berbagai layanan tambahan, seperti:

    1. API Gateway
    2. database
    3. storage
    4. message queue
    5. network
    6. logging
    7. monitoring
    8. 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.

5/5 - (1 vote)
Fitri Ana

Recent Posts

Kenali Programmatic SEO, Rahasia Mengoptimalkan SEO dalam Skala Besar

Membuat halaman website satu per satu bisa memakan banyak waktu, terutama bagi bisnis yang memiliki…

3 hours ago

Chatbot AI Bisa Tampak “Kena Mental”? Ini Penjelasannya

Jika pada bagian sebelumnya dibahas bahwa chatbot dapat menghasilkan respons yang terlihat emosional, pertanyaan berikutnya…

21 hours ago

Mengenal Digital Certificate dan Perannya dalam Cyber Security

Di balik koneksi HTTPS yang digunakan saat mengakses website, terdapat mekanisme keamanan yang membantu memastikan…

22 hours ago

Benarkah Chatbot AI Bisa “Kena Mental”? Ini Faktanya

Pernah melihat chatbot AI memberikan jawaban seperti sedang takut, tertekan, bingung, frustrasi, atau bahkan merasa…

24 hours ago

Mengenal ACID Database dan Cara Kerjanya dalam Menjaga Data

Dalam sebuah aplikasi, database tidak hanya berfungsi untuk menyimpan data. Database juga harus mampu memastikan…

1 day ago

Apa Itu Webhook? Begini Cara Aplikasi Bertukar Data Secara Otomatis

Dalam pengembangan aplikasi modern, berbagai sistem perlu saling bertukar informasi agar proses dapat berjalan secara…

1 day ago