Apa itu Serverless
Apa itu Serverless ?
Serverless adalah salah satu jenis model cloud computing dimana penyedia cloud mengalokasikan secara dinamis kebutuhan server, memori, storage untuk code/program yang dipunyai/ dijalankan oleh pengguna.
Apakah itu berarti tidak memakai server apapun ?
Serverless bukan berarti kita tidak memerlukan Server , memory atau storage ketika menjalankan program/code aplikasi kita.
Akan tetapi Serverless berarti Server , memory atau storage tersebut disediakan secara otomatis oleh provider cloud.
Pengguna cloud computing akhirnya tidak pusing dengan menentukan server, berapa memori yang kita inginkan, dimana menyimpan datanya, dll. Pengguna cloud computing bisa lebih fokus kepada persoalan logis untuk membuat solusi.
Apa saja contoh serverless ?
Contohnya :
- AWS
- AWS Lambda, Fargate
- AWS Api Gateway
- AWS S3, EFS, DynamoDB
- AWS Aurora, Redshift
- dll
- https://aws.amazon.com/serverless/
- Google Cloud Function.
- IBM Cloud Function berbasiskan Apache OpenWhisk.
- Microsoft Azure Functions.
- Oracle Cloud Functions.
- Alibaba Cloud Function Compute.
- Huawei Cloud FunctionStage.
- dll.
Nama lain serverless ini apa ?
Konsep serverless ini terkenal juga dengan sebutan Function As a Service (FAaS) atau Backend As a Service (BAaS) dimana karena karakteristiknya, maka code/program kita itu dianggap sama dengan fungsi yang bisa kita buat terpisah tanpa perlu mengalokasikan perangkat keras secara eksplisit, cukup dengan mendefinisikan sesuatu yang mirip dengan sebuah fungsi.
Karakteristiknya yang stateless, event-driven, dan hostless membuatnya benar-benar seperti fungsi yang sekali kita buat/create, bisa digunakan berulang-ulang.
Dari sisi cloud provider, serverless ini adalah sebuah Framework, yaitu sekumpulan proses dan konfigurasi yang distandarkan untuk mengalokasikan server, memory, storage, dan juga terkadang service lain agar program/code yang dibuat oleh pengguna bisa dijalankan secara efektif dan efisien dari sisi pemakaian sumber daya.
Apa karakteristik Serverless ?
Kalau kita lihat karakteristik dari aplikasi serverless adalah sbb :
-
Lebih sederhana dalam deploy aplikasi / Low barrier to entry
Maksudnya adalah pengguna cloud dalam hal ini mungkin Software Engineer tidak pusing memikirkan jenis server, jumlah memori, dan hal lain yang berkaitan dengan sumber daya. Pengguna cloud bisa lebih fokus untuk mengembangkan solusi dan logika di program/code. -
Hostless.
Artinya secara konsep kita sebagai pengguna cloud, tidak tahu server mana yang dipakai, alamatnya IP nya berapa, memory yang digunakan berapa, karena semuanya diatur oleh framework yang disediakan oleh cloud provider. -
Stateless.
Program/Code kita tidak selamanya akan tersimpan di memory server. Ada kalanya karena kebutuhan untuk efisiensi dan alokasi, maka program/code kita disimpan kembali ke storage dan dihapus dari memori server.
Lalu ketika ada yang melakukan pemanggilan terhadap program/code kita itu, Program/Code kita itu akan diload lagi ke memory dan dijalankan lagi.
Akibatnya kita tidak bisa mengandalkannya untuk menyimpan state / status pada saat tertentu, karena bisa jadi akan hilang ketika instance program/code kita dihapus dari memori server. -
Elasticity
Elasticity berkaitan dengan kemampuan untuk bertambah, berkurang, hilang, ataupun muncul lagi.
Begitupun dengan serverless, karena efisiensi dan efektifitas frameworknya, maka bisa saja Program/Code kita otomatis akan di tambah ke beberapa server atau memory, atau juga dihapus dari memori ketika tidak digunakan. -
Distributed
Code/Program kita bisa saja tersebar di beberapa server yang berbeda, storage yang berbeda yang satu sama lain saling berkomunikasi dengan menggunakan sistem terdistribusi/jaringan. -
Event driven
Maksudnya adalah Code/Program kita bisa dieksekusi atau dipanggil dengan menggunakan event/message yang dikirimkan oleh program lain atau trigger yang lain.
Hal ini untuk membuat low level coupling atau ketergantungan antara satu komponen dengan fungsi kita menjadi kecil.
Idealnya sih begitu, karena seharusnya Code/Program yang kita buat ini benar-benar fungsi terpisah yang dengan mudah dipanggil dengan sebuah event.
Bacaan lanjutan :
Bagaimana mendesain aplikasi yang serverless
Referensi: