Arsitektur Serverless merupakan istilah yang digunakan saat developer menggunakan layanan-layanan yang dikelola dan dipelihara secara penuh oleh cloud providers untuk membangun sebuah aplikasi. Developer tidak harus pusing dan lelah dalam mengelola dan memelihara infrastruktur server, sehingga dapat mengalokasikan tenaga dan pikirannya untuk lebih fokus dalam mengembangkan aplikasi yang akan dibuat. Untuk mendukung arsitektur serverless, cloud providers umumnya menyediakan layanan serverless untuk komputasi, basis data, penyimpanan objek/file, api gateway, autentikasi, layanan email, notifikasi, logging, monitoring dan sebagainya. Pada bab ini akan dibahas empat jenis layanan yang paling mendasar dalam mengembangkan aplikasi dengan arsitektur serverless yaitu komputasi, basis data, penyimpan objek/file, api gateway, dan autentikasi.
Komputasi serverless yang umumnya ditawarkan oleh cloud providers adalah layanan untuk mengeksekusi kode program saat ada kejadian tertentu (event-driven), layanan ini biasa disebut juga sebagai Function as a Service (FaaS). Adapun event yang memicu (men-trigger) dieksekusinya kode program bersumber dari layanan lain yang disediakan oleh cloud providers tersebut seperti http/api gateway, basis data, penyimpan object/file, queue, dan sebagainya.
Dibawah ini adalah daftar layanan komputasi serverless yang populer digunakan saat ini:
AWS Lambda (sejak 2014)
Google Cloud Functions (sejak 2016)
Microsoft Azure Functions (sejak 2016)
IBM Cloud Functions (sejak 2016)
Basis data merupakan salah satu komponen utama yang dibutuhkan untuk membuat sebuah aplikasi, disinilah data-data penting pengguna akan disimpan. Cloud Providers berlomba-lomba menawarkan layanan basis data serverless baik SQL dan NoSQL, berikut adalah beberapa basis data serverless yang disediakan oleh cloud providers besar yang dapat digunakan untuk membangun aplikasi dengan arsitektur serverless:
Amazon Aurora Serverless (kompatibel dengan MySQL dan PostgreSQL)
Azure SQL Database Serverless (Microsoft SQL Server)
Amazon DynamoDB
MongoDB Atlas
FaunaDB
Google Cloud Firestore
Komponen yang tidak kalah penting dalam arsitektur serverless adalah layanan penyimpanan objek (Object Storage), komponen inilah yang akan menjadi rumah untuk file-file statik seperti gambar, video, dokumen, dan sebagainya. Berikut ini adalah layanan penyimpanan objek yang populer digunakan:
Amazon Simple Storage Service (S3)
Google Cloud Storage
Azure Blob Storage
API Gateway merupakan sebuah layanan yang memungkinkan developer untuk mendefinisikan http endpoint, kemudian menghubungkan http endpoint tersebut dengan logika kode backend misalnya sebuah fungsi yang ada pada layanan komputasi serverless. API Gateway akan menerima http request ke endpoint yang telah didefinisikan, kemudian meneruskannya ke kode backend yang sesuai untuk diproses, setelah proses komputasi di sisi backend selesai, API gateway akan meneruskan response dari backend sebagai response untuk http request tersebut. Berikut ini adalah beberapa contoh layanan API Gateway yang dikelola secara penuh oleh cloud provider:
Amazon API Gateway
Google Cloud Endpoints
Azure API Management
Fitur untuk autentikasi pengguna seperti login, signup, dan sebagainya adalah fitur dasar yang biasanya akan selalu ada di kebanyakan aplikasi. Di serverless arsitektur kita akan mengenal istilah Identity as a service (IDaaS), yang memungkinkan kita menerapkan fitur autentikasi dan autorisasi pada aplikasi serverless yang kita kembangkan. Tentu penggunaan layanan sejenis ini akan lebih banyak menghemat waktu dan tenaga dibandingkan dengan membangun fitur tersebut dari nol. Selain itu, IDaaS ini akan memberikan keamanan dan skalabilitas yang lebih baik. Beberapa contoh IDaaS yang tersedia saat ini adalah:
Firebase Authentication
Auth0
Amazon Cognito
1. Proses deploy aplikasi yang mudah dan cepat
Arsitektur serverless memungkinkan developer untuk mendistribusikan aplikasi kepada pengguna dengan mudah dan cepat tanpa harus memikirkan pengadaan dan pengelolaan infrastruktur server secara mandiri.
2. Lebih hemat biaya
Layanan-layanan serverless yang disediakan oleh cloud providers pada umumnya menggunakan konsep pay-what-you-use atau pay-as-you-go sehingga biaya yang dikeluarkan untuk infrastruktur server akan lebih hemat karena tidak ada biaya yang harus dikeluarkan saat aplikasi sedang tidak digunakan. Hal ini akan berbeda jika menggunakan arsitektur tradisional karena biaya untuk server akan tetap ada walaupun aplikasi tidak sedang digunakan.
3. Fokus mengembangkan aplikasi
Karena masalah yang berkaitan dengan infrastruktur server akan ditangani oleh pihak cloud providers, developer bisa lebih fokus untuk mengembangkan aplikasi. Arsitektur serverless akan sangat membantu jika organisasi/perusahaan memiliki sumber daya manusia yang terbatas.
4. Skalabilitas yang lebih baik
Layanan-layanan serverless pada umumnya didesain oleh cloud providers untuk secara otomatis menyesuaikan kapasitas server yang dibutuhkan untuk mempertahankan kinerja yang stabil dari aplikasi yang dibuat dalam skala apapun.
1. Cold start
Cold start merupakan isu performa pada komputasi serverless yang terjadi saat sebuah kode program untuk pertama kalinya dijalankan setelah tidak adanya aktivitas (idle) dalam periode waktu tertentu. Cold start akan berdampak pada meningkatnya durasi untuk menjalankan sebuah kode program, misalnya dalam sebuah permintaan http api, cold start akan menyebabkan meningkatnya waktu untuk mendapatkan respon dari http api tersebut. Untuk meminimalisir dampak dari isu cold start ini, developer harus mempertimbangkan untuk menggunakan bahasa pemrograman yang membutuhkan waktu cold start yang tidak lama. Sebagai contoh jika kita menggunakan AWS Lambda sebaiknya pertimbangkan untuk menggunakan Node.js, Python, atau Go (baca disini). Selain itu, developer juga dapat meningkatkan ukuran memori (ram) yang akan digunakan untuk menjalankan kode program, serta mengoptimalisasi dependencies dan ukuran file dari kode program yang dibuat.
2. Resource Limit
Adanya limitasi dari cloud providers seperti maksimal memori (ram) yang bisa digunakan dan maksimal durasi untuk menjalankan sebuah fungsi menyebabkan komputasi serverless tidak cocok digunakan untuk kebutuhan komputasi seperti long-running proses dan high-performance computing. Selain itu, semakin besar resource yang digunakan untuk menjalankan sebuah fungsi akan menyebabkan biaya komputasi yang semakin mahal. Intinya, jangan pernah memaksakan komputasi serverless untuk melakukan apa yang tidak mungkin dia lakukan.
3. Migrasi yang tidak mudah
Kode program yang ditulis biasanya akan spesifik untuk layanan serverless dari sebuah cloud provider. Hal ini akan menyulitkan jika developer ingin melakukan migrasi ke cloud provider lain karena harus mengubah atau bahkan menulis ulang kode program agar bisa digunakan di cloud provider yang baru.
Copyright © JagoReact.com 2025.