Apa itu FaaS (Fungsi sebagai Layanan)?
FaaS memudahkan pengembang aplikasi cloud untuk menjalankan dan mengelola aplikasi layanan mikro.
Berlangganan Buletin IBM
Latar belakang hitam dan biru dengan bentuk geometris yang saling berhubungan
Apa itu FaaS?

FaaS, atau Function-as-a-Service, adalah layanan cloud-computing yang memungkinkan pelanggan untuk menjalankan kode sebagai respons terhadap suatu peristiwa, tanpa perlu mengelola infrastruktur kompleks yang biasanya terkait dengan pembangunan dan peluncuran aplikasi layanan mikro.

Hosting aplikasi perangkat lunak di internet biasanya memerlukan penyediaan dan pengelolaan server virtual atau fisik serta pengelolaan sistem operasi dan proses hosting server web. Dengan FaaS, perangkat keras fisik, sistem operasi mesin virtual, dan manajemen perangkat lunak server web semuanya ditangani secara otomatis oleh penyedia layanan cloud. Hal ini memungkinkan pengembang untuk fokus hanya pada fungsi individu dalam kode aplikasi mereka.

 

FaaS vs. serverless (tanpa server)

Serverless dan Functions-as-a-Service (FaaS) sering kali disamakan satu sama lain, namun sebenarnya FaaS adalah bagian dari serverless.

Serverless difokuskan pada kategori layanan apa pun, baik itu komputasi, penyimpanan, basis data, pesan, gateway api, dll. di mana konfigurasi, manajemen, dan penagihan server tidak terlihat oleh pengguna akhir.

FaaS, di sisi lain, meskipun mungkin merupakan teknologi yang paling utama dalam arsitektur tanpa server, difokuskan pada paradigma komputasi yang digerakkan oleh peristiwa di mana kode aplikasi, atau kontainer, hanya berjalan sebagai respons terhadap peristiwa atau permintaan.

Manfaat FaaS

FaaS adalah alat yang sangat berharga jika Anda ingin memigrasi aplikasi ke cloud secara efisien dan hemat biaya. Berikut ini adalah beberapa keuntungan yang akan Anda nikmati:

  • Lebih fokus pada kode, bukan infrastruktur: Dengan FaaS, Anda dapat membagi server menjadi fungsi yang dapat diskalakan secara otomatis dan independen sehingga Anda tidak perlu mengelola infrastruktur. Ini memungkinkan Anda untuk fokus pada kode aplikasi dan dapat secara dramatis mengurangi waktu ke pasar.

  • Bayar hanya untuk sumber daya yang Anda gunakan, saat Anda menggunakannya: Dengan FaaS, Anda hanya membayar ketika suatu tindakan terjadi. Ketika tindakan selesai, semuanya berhenti—tidak ada kode yang berjalan, tidak ada server diam, tidak ada biaya yang dikeluarkan. FaaS, oleh karena itu, hemat biaya, terutama untuk beban kerja dinamis atau tugas terjadwal. FaaS juga menawarkan total-cost-of-ownership yang unggul untuk skenario beban tinggi.

  • Skala naik atau turun secara otomatis: Dengan FaaS, fungsi-fungsi diskalakan secara otomatis, mandiri, dan seketika, sesuai kebutuhan. Ketika permintaan turun, FaaS secara otomatis menurunkan skala.

  • Dapatkan semua manfaat dari infrastruktur cloud yang kuat: FaaS menawarkan ketersediaan tinggi yang melekat karena tersebar di berbagai zona ketersediaan per wilayah geografis dan dapat digunakan di sejumlah wilayah tanpa biaya tambahan.
Prinsip-prinsip dan praktik terbaik FaaS

Ada beberapa praktik terbaik yang bisa Anda ikuti untuk membuat penggunaan FaaS lebih mudah diterapkan dan lebih efektif:

  • Buatlah setiap fungsi hanya melakukan satu tindakan: Fungsi FaaS harus dirancang untuk melakukan satu pekerjaan dalam menanggapi suatu peristiwa. Jadikan cakupan kode Anda terbatas, efisien, dan ringan sehingga fungsi-fungsi dapat dimuat dan dijalankan dengan cepat.

  • Jangan membuat fungsi memanggil fungsi lain: Nilai dari FaaS adalah pada isolasi fungsi. Terlalu banyak fungsi akan meningkatkan biaya Anda dan menghilangkan nilai isolasi fungsi Anda.

  • Gunakan sesedikit mungkin pustaka dalam fungsi Anda: Menggunakan terlalu banyak pustaka dapat memperlambat fungsi dan membuatnya lebih sulit untuk diskalakan.
Kasus penggunaan FaaS

Karena memungkinkan transaksi diisolasi dan diskalakan dengan mudah, FaaS baik untuk volume tinggi dan beban kerja paralel yang memalukan. Faas juga dapat digunakan untuk membuat sistem backend atau untuk aktivitas seperti pemrosesan data, konversi format, pengkodean, atau agregasi data.

FaaS juga merupakan alat yang baik untuk aplikasi Web, backend, pemrosesan data / aliran, atau untuk membuat chatbots online atau back end untuk perangkat IoT. FaaS dapat membantu Anda mengelola dan menggunakan layanan pihak ketiga. Jika Anda mempertimbangkan pengembangan aplikasi Android, misalnya, Anda dapat mengadopsi pendekatan FaaS untuk menjaga biaya Anda tetap terkendali. Karena Anda hanya dikenakan biaya saat aplikasi terhubung ke cloud untuk fungsi tertentu seperti pemrosesan batch, biaya bisa jauh lebih rendah daripada menggunakan pendekatan tradisional.

FaaS juga dapat secara dramatis meningkatkan kinerja komputasi. Sebagai contoh, dua mahasiswa baru-baru ini bekerja sama dengan para insinyur IBM untuk mengeksplorasi cara memanfaatkan IBM Cloud Functions untuk simulasi Monte Carlo (metode matematis yang digunakan untuk memperkirakan hasil di masa depan dari kejadian tertentu yang sulit diprediksi) untuk memperkirakan harga saham. Simulasi Monte Carlo dianggap sebagai beban kerja komputasi berkinerja tinggi yang penting. Kombinasi Monte Carlo dan IBM Cloud Functions memungkinkan tim untuk menjalankan komputasi dalam skala besar dan memungkinkan mereka untuk fokus pada logika bisnis. Dengan menggunakan FaaS, tim menyelesaikan seluruh simulasi Monte Carlo dalam waktu sekitar 90 detik dengan 1.000 panggilan serentak. Sebagai perbandingan, menjalankan alur yang sama melalui laptop dengan empat inti CPU membutuhkan waktu 247 menit dan pemanfaatan CPU hampir 100%.

Untuk melihat lebih banyak contoh kasus penggunaan FaaS, lihat "Rekap Keuntungan Utama yang Ditawarkan oleh IBM Cloud Functions."

FaaS vs PaaS, kontainer, dan VM

FaaS, PaaS (Platform-as-a-Service), kontainer, dan mesin virtual (VM ) semuanya memainkan peran penting dalam ekosistem serverless. Karena FaaS adalah elemen paling sentral dan paling menentukan dari stack tanpa server, ada baiknya mengeksplorasi bagaimana FaaS berbeda dari model komputasi umum lainnya yang ada di pasaran saat ini di seluruh atribut utama:

  • Waktu penyediaan: Milidetik, dibandingkan dengan menit dan jam untuk model lainnya.

  • Administrasi yang sedang berlangsung: Tidak ada, dibandingkan dengan skala geser dari mudah ke sulit untuk PaaS, kontainer, dan VM.

  • Penskalaan elastis: Setiap tindakan selalu diskalakan secara instan dan inheren, dibandingkan dengan model lain yang menawarkan penskalaan otomatis tetapi lambat, yang memerlukan penyetelan aturan penskalaan otomatis yang cermat.

  • Perencanaan kapasitas: Tidak diperlukan, dibandingkan dengan model lain yang memerlukan campuran beberapa penskalaan otomatis dan perencanaan kapasitas.

  • Koneksi dan status yang persisten: Kemampuan terbatas untuk mempertahankan koneksi dan status harus disimpan dalam layanan/sumber daya eksternal. Model lainnya dapat memanfaatkan http, menjaga soket atau koneksi tetap terbuka untuk jangka waktu yang lama, dan dapat menyimpan status dalam memori di antara panggilan.

  • Pemeliharaan: Semua pemeliharaan dikelola oleh penyedia FaaS. Hal ini juga berlaku untuk PaaS; kontainer dan VM memerlukan pemeliharaan yang signifikan yang mencakup pembaruan/pengelolaan sistem operasi, image kontainer, koneksi, dll.

  • Ketersediaan tinggi (HA) dan pemulihan bencana (DR): Sekali lagi, HA melekat pada model FaaS tanpa upaya atau biaya tambahan. Model lain membutuhkan biaya tambahan dan upaya manajemen. Dalam kasus VM dan kontainer, infrastruktur dapat dimulai ulang secara otomatis.

  • Pemanfaatan sumber daya: Sumber daya tidak pernah menganggur-mereka hanya dipanggil jika diminta. Semua model lainnya memiliki setidaknya beberapa tingkat kapasitas idle.

  • Batas sumber daya: FaaS adalah satu-satunya model yang memiliki batasan sumber daya pada ukuran kode, aktivasi bersamaan, memori, panjang proses, dll.

  • Mengenakan biaya granularitas dan penagihan: Per blok 100 milidetik, dibandingkan dengan jam (dan terkadang menit) model lain.
Kubernetes/Knative dan FaaS

Kubernetes dan Knative adalah salah satu implementasi "plumbing" di balik FaaS. Kubernetes adalah sumber terbuka, alat orkestrasi kontainer yang sangat penting untuk pengelolaan aplikasi cloud. Knative memungkinkan Anda menjalankan tanpa server dalam kluster Kubernetes.

Kombinasi Knative dan Kubernetes berarti Anda bisa memanfaatkan fungsi-fungsi Kubernetes seperti pemantauan, keamanan, pencatatan, dan autentikasi serta mengombinasikannya dengan manfaat Knative seperti pembuatan kontainer otomatis, portabilitas penuh, dan bekerja di seluruh lingkungan hibrida.

Para pembuat teknologi ini percaya bahwa pengembang tidak harus memilih antara tanpa server dan wadah saat membangun aplikasi cloud. Tujuannya adalah untuk meningkatkan ketersediaan dan konsistensi kontainer dengan penskalaan yang kuat dan akses on-demand tanpa server.

Tonton video ini untuk mempelajari lebih lanjut tentang Knative:

Solusi terkait
IBM Cloud Code Engine

Jalankan gambar kontainer, pekerjaan batch, atau kode sumber sebagai beban kerja serverless, tidak perlu pengukuran, penerapan, jaringan, atau penskalaan. 

Jelajahi IBM Cloud Code Engine
IBM Cloud Functions

Kembangkan kode ringan yang dijalankan secara skalabel sesuai permintaan dengan platform pemrograman functions-as-a-service (FaaS) ini.

Jelajahi IBM Cloud Functions
Sumber daya Apa yang dimaksud dengan serverless?

Serverless adalah model pengembangan dan eksekusi aplikasi cloud yang memungkinkan pengembang membangun dan menjalankan kode aplikasi tanpa menyediakan atau mengelola server atau infrastruktur backend.

Apa itu kontainer?

Kontainer adalah unit perangkat lunak yang dapat dieksekusi yang mengemas kode aplikasi bersama dengan dependensi pustaka, dan dapat dijalankan di mana saja, baik di desktop, TI tradisional, atau cloud.

Apa itu PaaS?

PaaS, atau Platform-as-a-Service, menyediakan platform cloud yang lengkap, fleksibel, dan hemat biaya untuk mengembangkan, menjalankan, dan mengelola aplikasi.

Ambil langkah selanjutnya

Platform tanpa server yang dikelola sepenuhnya, IBM Cloud® Code Engine memungkinkan Anda untuk fokus pada penulisan kode, bukan pada pengelolaan infrastruktur. Bawa gambar kontainer, pekerjaan batch, atau kode sumber Anda dan biarkan IBM Cloud Code Engine mengelola dan mengamankan infrastruktur yang mendasarinya untuk Anda. Anda tidak perlu mengukur, menerapkan, atau menskalakan sendiri klaster kontainer. Dan tidak diperlukan keterampilan jaringan juga.

Jelajahi IBM Cloud Code Engine