☁️ Aplikasi Serverless #

Serverless Architecture adalah salah satu evolusi paling signifikan dalam dunia cloud computing modern. Meskipun namanya serverless, bukan berarti tidak ada server sama sekali. Server tetap ada, tetapi seluruh tanggung jawab pengelolaan server—seperti provisioning, scaling, patching OS, dan maintenance—sepenuhnya ditangani oleh cloud provider.

Paradigma ini menggeser fokus developer dari mengelola infrastruktur menjadi mengembangkan bisnis logic. Hasilnya: time-to-market lebih cepat, biaya lebih efisien, dan skalabilitas yang nyaris otomatis.

Artikel ini membahas serverless secara komprehensif: mulai dari definisi, cara kerja, jenis-jenis serverless, provider dan model billing-nya, hingga best practice dalam penggunaan di dunia nyata.

Apa Itu Serverless? #

Serverless adalah model komputasi cloud di mana aplikasi dijalankan secara event-driven dan on-demand, tanpa perlu mengelola server secara langsung. Developer hanya perlu men-deploy kode atau container, lalu cloud provider akan mengeksekusinya ketika ada event tertentu.

Karakteristik utama serverless:

  • Tidak mengelola server atau VM
  • Otomatis scaling (naik dan turun)
  • Bayar sesuai pemakaian (pay-per-use)
  • Umumnya bersifat stateless
  • Sangat terintegrasi dengan layanan cloud lain

Serverless sangat cocok untuk workload yang tidak selalu aktif, berbasis event, atau traffic tidak stabil.


Cara Kerja Serverless #

Secara umum, serverless bekerja dengan pola event → execution → scaling → billing.

Alur Sederhana Serverless #

[ Event ]
   │
   ▼
[ Trigger ]  (HTTP, Queue, Cron, Storage Event)
   │
   ▼
[ Serverless Runtime ]
   │  - Provision resource otomatis
   │  - Menjalankan function/container
   │  - Auto scaling
   ▼
[ Response / Side Effect ]
   │  - HTTP response
   │  - Simpan data
   │  - Publish message

Contoh Event #

  • HTTP request (API Gateway)
  • File di-upload ke object storage
  • Message masuk ke queue/topic
  • Schedule (cron)
  • Event dari service cloud lain

Cloud provider akan:

  1. Menyediakan runtime (Node.js, Go, Python, dll)
  2. Menjalankan kode hanya saat dibutuhkan
  3. Menskalakan instance secara otomatis
  4. Menagih biaya berdasarkan eksekusi aktual

Jenis-Jenis Serverless #

Serverless tidak hanya soal Function. Ekosistemnya cukup luas.

Function as a Service (FaaS) #

Menjalankan function kecil berbasis event.

Contoh:

  • AWS Lambda
  • Google Cloud Functions
  • Azure Functions
  • Cloudflare Workers

Ciri khas:

  • Execution singkat
  • Stateless
  • Sangat cocok untuk API, webhook, background job

Serverless Container #

Menjalankan container tanpa mengelola cluster.

Contoh:

  • AWS Fargate
  • Google Cloud Run
  • Azure Container Apps

Ciri khas:

  • Lebih fleksibel dibanding FaaS
  • Bisa long-running
  • Cocok untuk REST API kompleks atau worker

Serverless Message Broker & Event #

Layanan messaging yang sepenuhnya dikelola.

Contoh:

  • AWS SQS, SNS, EventBridge
  • Google Pub/Sub
  • Azure Service Bus, Event Grid

Ciri khas:

  • Event-driven architecture
  • Decoupling antar service
  • Reliable dan scalable

Serverless Workflow & Orchestration #

Mengorkestrasi banyak task serverless.

Contoh:

  • AWS Step Functions
  • Google Workflows
  • Azure Durable Functions

Ciri khas:

  • State machine
  • Retry, timeout, parallel execution
  • Cocok untuk business process

Serverless Data & Storage #

Database dan storage tanpa server.

Contoh:

  • DynamoDB, Aurora Serverless
  • Firestore, BigQuery
  • Azure Cosmos DB

Ciri khas:

  • Auto scaling
  • High availability
  • Integrasi erat dengan FaaS

Provider Serverless & Model Billing #

Amazon Web Services (AWS) #

LayananJenisBilling Umum
LambdaFunctionPer request & durasi eksekusi
FargateContainervCPU & memory per detik
Step FunctionsWorkflowPer state transition
SQS/SNSMessagingPer request

Google Cloud Platform (GCP) #

LayananJenisBilling Umum
Cloud FunctionsFunctionInvocation & execution time
Cloud RunContainerCPU & memory per request
Pub/SubMessagingPer message
WorkflowsOrchestrationPer step execution

Microsoft Azure #

LayananJenisBilling Umum
Azure FunctionsFunctionExecution & memory
Container AppsContainervCPU & memory
Service BusMessagingOperation-based
Logic AppsWorkflowAction execution

Cloudflare #

LayananJenisBilling Umum
WorkersFunction (Edge)Request-based
QueuesMessagingPer message
D1 / KVDataStorage & request

Catatan penting: Model billing serverless tidak berbasis uptime, melainkan pemakaian aktual.


Kapan Serverless Tidak Cocok? #

Serverless bukan solusi untuk semua kasus:

  • Workload sangat berat dan konstan
  • Aplikasi stateful kompleks
  • Kebutuhan latency ultra rendah tanpa cold start
  • Kontrol penuh terhadap OS

Dalam kasus ini, VM atau Kubernetes bisa lebih tepat.


Best Practice #

1. Desain Event-Driven Sejak Awal #

Jangan memaksakan pola monolitik ke serverless. Pecah logic berdasarkan event.

2. Buat Function Kecil & Fokus #

Satu function = satu tanggung jawab.

3. Perhatikan Cold Start #

  • Gunakan runtime ringan
  • Minimalkan dependency
  • Gunakan provisioned concurrency jika perlu

4. Observability Itu Wajib #

  • Logging terstruktur
  • Metrics dan tracing
  • Centralized monitoring

5. Kelola Timeout & Retry #

Pastikan idempotency untuk menghindari efek samping ganda.

6. Gunakan Infrastructure as Code (IaC) #

Gunakan Terraform, AWS CDK, atau Pulumi.

7. Kontrol Biaya #

  • Pasang limit
  • Monitor invocation
  • Hindari infinite loop event

Penutup #

Serverless Architecture menawarkan cara baru membangun aplikasi modern: lebih cepat, lebih scalable, dan lebih efisien biaya. Dengan menghilangkan beban pengelolaan infrastruktur, developer dapat fokus pada hal yang paling penting—menulis kode yang memberikan nilai bisnis.

Namun, seperti semua arsitektur, serverless harus digunakan dengan pemahaman yang tepat. Dengan desain yang baik dan best practice yang benar, serverless bisa menjadi fondasi kuat untuk sistem modern, dari startup hingga enterprise.

Fokus pada logic, biarkan cloud yang mengurus sisanya.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact