Mengenal apa itu serverless

Kamu pernah mendengar istilah serverless?

Kalau diartikan langsung sih artinya "tanpa server", terus kode kita ditaro di mana ya...


Ternyata, yang dimaksud dengan serverless bukanlah tanpa server, tapi kamu sebagai programmer, tidak perlu lagi pusing dengan urusan server, loh ko bisa?


[[table-content]]


Kenapa serverless


Hobi dasar programmer adalah membuat sesuatu yang berulang menjadi otomatis.

Pada saat proses deploy aplikasi sendiri kita sering melakukan hal yang sama.


Sebagai contoh, seorang pengguna LAMP stack, akan menginstall linux, server apache, database mysql dan bahasa program PHP saat ingin mempublish aplikasinya dengan suatu server. Lalu.. kenapa tidak membuat ini menjadi otomatis?


Sebagian besar programmer pun bukan orang yang cinta dengan urusan DevOps, kita cuma mau menulis program a.k.a Koding!


Hal-hal inilah yang membuat serverless lahir.

Sebagai programmer, kamu hanya perlu menulis logika programmu dan menyerahkan semuanya ke provider (perusahaan) penyedia jasa serverless ini, seperti AWS Lambda, Neltify, Vercel dan lainnya.


Perbedaan serverless dan tidak


Apa sih perbedannya ketika kita menggunakan serverless.


1 Sistem Pembayaran


Sebelumnya, kita perlu menentukan paket hosting yang dimau berdasarkan RAM, bandwith dan pertimbangan lainnya, harganya sudah fix. Meskipun kamu tidak menggunakan semua kapasitas paket tersebut, kamu tetap perlu membayar penuh sesuai harganya.


Di serverless, umumnya kita hanya membayar sesuai penggunaan. Ketika fungsi/kode kamu berjalan tagihan akan bertambah, ketika tidak ada yang memakai maka tagihan tidak ikut naik.


2 Model aplikasi


Serverless umunya tidak digunakan untuk "fullstack app". Kita hanya menuliskan suatu logika aplikasi yang spesifik di setiap kodenya. Karena serverless dibatas dengan waktu eksekusi di setiap pemanggilannya, tidak disarankan untuk menjalankan sebuah web framework yang biasanya memakan waktu lama di sana.


Masing-masing provider biasanya punya cara penulisan serverless functionnya, sederhanya terbagi dua: menerima event dan memberikan respon.


Hal ini membuat masing masing kode menjadi fokus dengan satu tugasnya dan mudah dimodifikasi nantinya.


Pertimbangan saat memilih serverless


1 Biaya membengkak


Karena sistem pembayaran berhubungan dengan penggunaan, maka jangan heran, semakin ramai fungsi kamu digunakan semakin besar juga biayanya. Beberapa provider biasanya menyediakan alert notifikasi untuk kamu tentukan, berapa tagihan yang ingin kamu jadikan batas untuk diberi peringatan.


Bukan berarti juga serverless lebih mahal. Karena semuanya tergantung pemakain. Biaya tiap pemanggilannya relatif murah, sebagian bahkan memberikan free-tier atau paket gratis dengan jumlah yang ditentukan.


2 Black box


Karena tidak perlu mengurus server, untuk sebagian orang hal ini justru menjadi keterbatasan saat ingin mengkonfigurasi servernya itu sendiri. Tentu ini menjadi pertimbangan sejak awal.


3 Stateless


Serverless umumnya tidak menyimpan state apapun. Dia hanya seperti air sungai yang mengalir. Ada barang (event) yang masuk akan dihanyutkan ke ujung hilirnya (respon).

Karena itu untuk sistem authentikasi (mengingat siapa user yang sedang aktif) perlu cara sendiri, tidak seperti sebelumnya.


Hal yang sangat umum digunakan adalah sistem JWT (Json Web Token) di mana server tidak menyimpan session tentang user yang sedang login, semuanya hanya lewat pertukarang token.


Kapan menggunakan serverless


Disclaimer: Bagian ini mungkin sedikit subjektif


1 API


Membuat API yang tidak terhubung langsung dengan aplikasi frontend atau tampilannya, bisa memanfaatkan function di serverless. Sesuai dengan tugasnya, hanya menerima request (endpoint) yang diakses dan memberikan respon


2 Fungsi "kecil"


Saat kamu ingin membuat fungsi sederhana mulailah coba serverless, sebagai contoh kamu ingin mendapatkan meta data dari suatu situs, kamu tidak perlu menginstall web framework, lalu menentukan route dan controllernya, lalu menyiapkan hosting untuk itu.

Kamu hanya perlu membuat kode yang diletakkan di satu file dan memberikannya ke serverless provider untuk dijalankan.


3 Aplikasi microservice


TIdak harus full aplikasi microservice, kalau kamu sudah punya aplikasi monolith yang berjalan pun, mulailah memikirkan untuk tidak menambah beban ke server ini. Bagikan tugas-tugas yang tidak perlu ditaro di satu code base yang sama dengan serverless.


Serverless sendiri tidak terkurung dengan 1 bahasa program, kamu bisa mengecek di providernya apa saja bahasa yang tersedia.



Video youtube sekolahkoding

[[embed]]youtube=ahOQPi8D7zY[[/embed]]


avatar hilmanski

Ditulis oleh @hilmanski

"luaskan ilmu & luaskan manfaat"