Kasak Kusuk #

Serverless sering kali digambarkan oleh penyedia layanan cloud (cloud provider) sebagai silver bullet atau peluru perak bagi dunia modern: arsitektur tanpa server, auto-scaling instan tanpa batas, dan biaya yang turun hingga nol rupiah saat tidak digunakan. Namun, di balik narasi pemasaran yang berkilau tersebut, di kalangan insinyur perangkat lunak dan arsitek sistem beredar banyak kasak-kusuk—isu, mitos, keraguan, dan ketakutan nyata yang membuat banyak organisasi ragu untuk mengadopsinya secara penuh.

Artikel ini dibuat bukan untuk membela serverless secara membabi buta, melainkan untuk membedah secara rasional dan objektif sembilan mitos dan kasak-kusuk yang paling sering terdengar di dunia industri. Kita akan menganalisis mengapa isu-isu tersebut muncul, di mana letak kebenarannya, dan bagaimana strategi terbaik untuk menghadapinya jika kita memutuskan untuk bermigrasi ke ekosistem serverless.


Mitos 1: “Biaya Serverless Akan Membengkak Tanpa Kontrol” #

Kasak Kusuk #

“Serverless itu murah di awal, tapi kalau traffic naik sedikit saja, tagihan bulanan cloud akan langsung meledak dan menjebol anggaran perusahaan.”

Mengapa Isu Ini Muncul? #

Isu ini bersumber dari karakteristik tagihan retail serverless yang dihitung berdasarkan jumlah invokasi dan milidetik waktu eksekusi. Berbeda dengan server tradisional virtual (VM) yang memiliki batas biaya atas (cap cost) bulanan yang tetap, serverless memiliki sifat pengeluaran yang tidak berujung. Jika terjadi kesalahan pemrograman (seperti infinite loop) atau serangan Distributed Denial of Service (DDoS), jumlah invokasi bisa melonjak miliaran kali tanpa batas atas bawaan.

Realitanya #

Serverless hanya akan menjadi sangat mahal jika arsitektur aplikasi kita dirancang dengan buruk. Untuk pola traffic yang spiky, tidak stabil, atau memiliki banyak waktu idle, serverless secara konsisten terbukti jauh lebih murah daripada menyewa VM tradisional.

Namun, biaya memang bisa membengkak karena beberapa faktor berikut:

  1. Infinite Loop Trigger: Mengonfigurasi fungsi serverless untuk menulis file ke Object Storage, lalu file baru tersebut memicu fungsi itu kembali secara berulang tanpa akhir.
  2. Tidak Memasang Limit Concurrency: Membiarkan fungsi merespons tanpa batas hingga melampaui kuota anggaran.
flowchart TD
    A["Infinite Loop Trigger"] --> B["Invokasi Fungsi Meledak"]
    B --> C["Tagihan Cloud Membengkak"]
    
    D["Pasang Concurrency Limit"] --> E["Membatasi Dampak Finansial"]
    F["Pasang Budget Alert & Quota"] --> E

Strategi Mitigasi #

  • Selalu pasang Budget Alert dan alarm pengeluaran harian di akun cloud kita.
  • Pasang Reserved Concurrency Limit pada fungsi untuk membatasi jumlah instans maksimal yang boleh menyala secara bersamaan dalam satu waktu.

Mitos 2: “Kontrol Infrastruktur Sepenuhnya Hilang” #

Kasak Kusuk #

“Karena kita tidak memegang server fisik atau VM, kita kehilangan kemampuan untuk melakukan tuning sistem operasi, mengoptimalkan kernel Linux, atau mengatur JVM flag.”

Mengapa Isu Ini Muncul? #

Hal ini dialami oleh para insinyur infrastruktur tradisional dan sysadmin senior yang terbiasa memiliki kontrol mutlak atas mesin tempat kode berjalan. Di dalam FaaS, akses SSH ditiadakan sama sekali. Kita tidak bisa menginstal pustaka sistem global, mengubah isi /etc/sysctl.conf, atau mengonfigurasi memori virtual secara manual.

Realitanya #

Kehilangan kontrol level rendah ini adalah trade-off sadar yang kita lakukan untuk mendapatkan keuntungan operasional. Memang benar kita tidak bisa melakukan SSH, namun sebagai gantinya kita dibebaskan dari kewajiban memikirkan patch keamanan OS, pembaruan firmware hardware, dan kegagalan hard disk fisik.

Kontrol kita tidak hilang, melainkan bergeser ke tingkat yang lebih strategis:

  • Mengendalikan batas eksekusi memori (alokasi RAM berbanding lurus dengan alokasi CPU di AWS Lambda).
  • Mengatur batasan concurrency tingkat fungsi.
  • Merancang alur event-driven yang efisien.

Serverless bukan menghilangkan kontrol (less control), melainkan mengalihkan kontrol (different control).


Mitos 3: “Hidden Cost di Serverless Sangat Banyak” #

Kasak Kusuk #

“Biaya komputasi fungsinya memang murah, tapi tagihan layanan pendukungnya seperti API Gateway, logging, dan NAT Gateway justru jauh lebih mahal.”

Mengapa Isu Ini Muncul? #

Banyak tim yang bermigrasi ke serverless hanya menghitung biaya eksekusi fungsi (misal: AWS Lambda) dan terkejut melihat tagihan akhir. Mereka lupa bahwa fungsi serverless tidak berjalan di ruang hampa. Fungsi membutuhkan API Gateway untuk menerima request HTTP, CloudWatch untuk menulis log, dan NAT Gateway agar fungsi di dalam private VPC dapat mengakses internet luar.

Sumber Biaya Tersembunyi (Hidden Costs) yang Umum: #

  • API Gateway: Di AWS, biaya API Gateway per 1 juta request bisa lebih mahal daripada biaya eksekusi Lambda itu sendiri jika fungsinya berjalan sangat cepat.
  • NAT Gateway: Mentransfer data keluar masuk dari fungsi di dalam VPC melalui NAT Gateway mengenakan biaya per gigabyte yang cukup tinggi.
  • Logging Berlebihan: Menulis log berukuran megabyte secara terus-menerus ke layanan log terkelola.

Realitanya #

Hidden cost bukan masalah unik serverless. Pada arsitektur tradisional, biaya logging dan transfer data network juga ada, namun sering kali tersamar di dalam paket bulanan server. Serverless membuat setiap detail pengeluaran menjadi sangat transparan dan terlacak secara granular.

Di dunia serverless, arsitektur aplikasi kita adalah refleksi langsung dari tagihan bulanan kita.


Mitos 4: “Vendor Lock-in Tidak Terhindarkan” #

Kasak Kusuk #

“Sekali kita menulis kode untuk AWS Lambda, kita akan terkunci selamanya di ekosistem Amazon dan tidak akan pernah bisa bermigrasi ke Google Cloud atau Azure.”

Mengapa Isu Ini Muncul? #

Format input event, mekanisme otentikasi (IAM), dan pemicu fungsi (seperti AWS S3 trigger atau DynamoDB Streams) sangat spesifik untuk masing-masing penyedia cloud. Menulis kode yang secara langsung memanggil SDK cloud di dalam logika bisnis utama membuat kode tersebut sangat sulit dipindahkan ke provider lain.

Realitanya #

Vendor lock-in adalah hal yang nyata di semua teknologi cloud, bahkan jika kita menggunakan VM tradisional atau Kubernetes sekalipun (karena tetap terikat pada implementasi network dan storage provider di bawahnya). Namun, kita dapat meminimalkannya dengan menerapkan prinsip Hexagonal Architecture (Ports and Adapters).

Contoh Kode: Mengatasi Vendor Lock-in #

// ANTI-PATTERN: Logika bisnis terikat mati dengan SDK AWS Lambda
exports.handler = async (event) => {
    // ✗ Kode bisnis bercampur dengan parser event AWS API Gateway
    const body = JSON.parse(event.body);
    const userId = body.userId;
    
    // ✗ Langsung memanggil client AWS DynamoDB di tengah kode
    const AWS = require('aws-sdk');
    const docClient = new AWS.DynamoDB.DocumentClient();
    await docClient.put({ TableName: 'Users', Item: { id: userId, name: body.name } }).promise();
    
    return { statusCode: 200, body: JSON.stringify({ success: true }) };
};

// BENAR: Memisahkan Handler (Adapter) dari Logika Bisnis Utama (Core)
// File: adapters/lambda_handler.js
const { registerUser } = require('../core/user_service');
const { DynamoUserRepository } = require('../repositories/dynamo_user_repository');

exports.handler = async (event) => {
    // ✓ Handler hanya bertugas menerjemahkan event AWS ke objek JS murni
    const body = JSON.parse(event.body);
    
    // ✓ Dependency Injection untuk repository database
    const dbRepository = new DynamoUserRepository();
    const result = await registerUser(body.userId, body.name, dbRepository);
    
    return {
        statusCode: 200,
        body: JSON.stringify({ success: result.success })
    };
};

Dengan memisahkan logika bisnis dari handler spesifik cloud provider, jika suatu saat kita harus pindah ke Google Cloud Functions, kita hanya perlu mengganti file adapter/handler-nya saja tanpa menyentuh logika bisnis di folder core.


Mitos 5: “Serverless Hanya Cocok untuk Project Kecil” #

Kasak Kusuk #

“Serverless itu mainan startup dan side project. Sistem skala enterprise yang menangani jutaan transaksi per menit tidak bisa berjalan di serverless.”

Mengapa Isu Ini Muncul? #

Paradigma fungsi kecil (FaaS) yang terfragmentasi membuat sebagian orang berasumsi bahwa serverless tidak kuat menangani sistem besar. Kesulitan melacak alur eksekusi (tracing) dari puluhan fungsi asinkron yang saling memicu menambah keraguan ini.

Realitanya #

Perusahaan raksasa global seperti Netflix, Coca-Cola, Nordstrom, LEGO, dan Grab menggunakan serverless untuk menggerakkan bagian penting dari core business mereka. Masalah utama pada sistem besar bukanlah ketidakmampuan komputasi serverless, melainkan kompleksitas desain sistem terdistribusi.

Tantangan di skala enterprise meliputi:

  • Observability: Membutuhkan distributed tracing (seperti AWS X-Ray atau Datadog) untuk melacak request yang mengalir melewati banyak fungsi.
  • Governance: Manajemen repositori kode, izin IAM yang ketat, dan standarisasi penulisan fungsi di seluruh tim.

Mitos 6: “Masalah Cold Start Membunuh Performa” #

Kasak Kusuk #

“Serverless memiliki masalah cold start yang membuat respon API tidak stabil dan tidak bisa diprediksi latency-nya.”

Mengapa Isu Ini Muncul? #

Ketika sebuah fungsi serverless tidak menerima request selama beberapa menit, cloud provider akan mematikan kontainer isolasi di latar belakang untuk menghemat resource. Ketika request baru masuk kembali, ada jeda waktu bagi sistem untuk melakukan booting runtime dan menginisialisasi pustaka kode kita sebelum mengeksekusinya. Jeda inisialisasi ini disebut cold start.

Realitanya #

Cold start adalah fakta teknis yang nyata. Namun, dampaknya sering kali dibesar-besarkan secara berlebihan. Pada mayoritas runtime modern (seperti Node.js, Go, dan Python), cold start biasanya hanya berkisar antara 100 milidetik hingga 500 milidetik. Masalah menjadi serius jika:

  • Kita menggunakan runtime berat seperti Java atau .NET (bisa memakan waktu 2–5 detik).
  • Fungsi kita dipasang di dalam VPC tanpa konfigurasi ENI (Elastic Network Interface) modern.
  • Pustaka dependensi (libraries) yang di-import ke dalam kode terlalu besar dan tidak di-bundle secara efisien.

Strategi Mengatasi Cold Start #

  • Gunakan runtime yang ringan seperti Go, Node.js, atau Python.
  • Bundling kode kita (gunakan tool seperti esbuild atau webpack untuk Javascript) guna memperkecil ukuran file ZIP deployment.
  • Manfaatkan fitur Provisioned Concurrency (instans hangat yang selalu menyala) untuk endpoint API yang sangat sensitif terhadap latensi.

Mitos 7: “Debugging Serverless Adalah Mimpi Buruk” #

Kasak Kusuk #

“Kita tidak bisa menjalankan breakpoint debugging di komputer lokal, dan jika terjadi error di production, kita tidak tahu cara mereproduksi masalah tersebut.”

Mengapa Isu Ini Muncul? #

Pada arsitektur monolitik tradisional, kita dapat menjalankan seluruh aplikasi di komputer lokal, memasang breakpoints di IDE, dan melacak bug baris demi baris. Di serverless, aplikasi kita tersebar di berbagai managed service (fungsi, database, queue, auth provider) milik cloud, membuat lingkungan lokal sangat sulit untuk meniru secara persis lingkungan cloud asli.

Realitanya #

Meskipun debugging lokal lebih menantang, kita tidak perlu meniru seluruh cloud secara lokal untuk mencari bug. Kita harus mengadopsi taktik debugging modern:

  • Unit Testing Terisolasi: Menulis kode bisnis yang tidak bergantung pada database atau cloud SDK, sehingga dapat dites 100% di lokal dengan mock data.
  • Structured Logging: Selalu gunakan format log JSON terstruktur yang mempermudah pencarian log di sistem cloud monitoring.
  • Correlation ID: Suntikkan ID unik ke setiap request yang masuk dan teruskan ID tersebut ke setiap fungsi dan queue berikutnya, agar kita dapat melacak jalur eksekusi dari satu transaksi pengguna secara utuh.

Mitos 8: “Developer Jadi Manja dan Tidak Belajar Infrastruktur” #

Kasak Kusuk #

“Karena semuanya diurus cloud provider, insinyur muda kita tidak akan paham cara kerja Linux, networking dasar, alokasi memori, atau manajemen thread.”

Mengapa Isu Ini Muncul? #

Pernyataan ini sering diutarakan oleh para sysadmin senior yang melihat developer junior langsung mendeploy kode ke cloud tanpa mengetahui apa itu virtual host, port forwarding, atau cara kerja CPU context-switching.

Realitanya #

Yang terjadi di dunia serverless bukan hilangnya kebutuhan akan pemahaman infrastruktur, melainkan pergeseran jenis keahlian yang dibutuhkan. Developer modern tidak perlu lagi menghafal perintah terminal Linux untuk konfigurasi firewall, namun mereka dituntut untuk memahami konsep arsitektur tingkat tinggi:

  • Bagaimana mendesain antrean (Message Queues) yang asinkron dan idempotent.
  • Bagaimana merancang arsitektur database yang tahan terhadap lonjakan concurrency tinggi.
  • Bagaimana mendefinisikan infrastruktur sebagai kode (Infrastructure as Code / IaC) menggunakan Terraform atau Serverless Framework.

Serverless menggeser peran insinyur dari seorang sysadmin tingkat rendah menjadi seorang perancang sistem tingkat tinggi yang fokus menciptakan nilai nyata untuk bisnis.


Mitos 9: “Serverless Tidak Aman dan Sulit Compliance” #

Kasak Kusuk #

“Karena kita berbagi server fisik dengan organisasi lain (multi-tenancy) dan tidak bisa memasang firewall tradisional, serverless tidak cocok untuk industri yang diatur ketat seperti perbankan atau kesehatan.”

Mengapa Isu Ini Muncul? #

Mitos ini berasal dari pemikiran keamanan perimeter tradisional (mengamankan sistem dengan membuat dinding api besar di sekeliling jaringan server). Konsep ini runtuh di serverless karena fungsi berjalan di lingkungan ephemeral di luar kontrol perimeter tradisional kita.

Realitanya #

Secara bawaan, serverless sering kali jauh lebih aman daripada server tradisional yang dikonfigurasi sendiri. Cloud provider raksasa mengalokasikan tim keamanan terbaik mereka untuk mengamankan isolasi tingkat container (seperti teknologi AWS Firecracker).

Keamanan serverless didasarkan pada prinsip Zero Trust dan Granular Access Control:

  • Setiap fungsi serverless diberikan peran IAM (Identity and Access Management) yang sangat spesifik (prinsip least privilege). Jika fungsi A hanya bertugas membaca file di S3, ia tidak akan memiliki izin untuk mengakses database SQL sama sekali.
  • Patch keamanan sistem operasi dilakukan secara instan oleh cloud provider di latar belakang tanpa downtime. Mayoritas celah keamanan di dunia nyata terjadi karena tim lalai memperbarui OS server virtual mereka selama berbulan-bulan.

Ringkasan #

  • Serverless bukan silver bullet, melainkan arsitektur pragmatis dengan serangkaian trade-off nyata yang harus dipahami secara sadar.
  • Biaya tidak akan membengkak secara misterius jika kita memasang Budget Alerts, membatasi batas concurrency maksimal fungsi, dan menghindari kesalahan looping pemicu (infinite loops).
  • Vendor lock-in dapat diminimalkan secara efektif melalui penerapan arsitektur bersih (Hexagonal Architecture) yang memisahkan logika bisnis dari pustaka spesifik cloud.
  • Cold start adalah kendala nyata yang dapat diredam dengan pemilihan runtime yang ringan (Node.js, Go, Python), optimasi ukuran deployment package, dan penggunaan Provisioned Concurrency.
  • Debugging sistem terdistribusi serverless menuntut adaptasi metode pengujian modern, seperti unit testing komprehensif, log terstruktur, dan distributed tracing menggunakan Correlation ID.
  • Aspek keamanan dan kepatuhan (compliance) di serverless sangat tangguh berkat isolasi container tingkat tinggi dan kontrol akses IAM yang sangat granular per fungsi.

← Sebelumnya: Kapan Digunakan?   Berikutnya: Layanan →

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