Apa itu Komputasi Tanpa Server?
Pengelolaan infrastruktur menambahkan lapisan kompleksitas tambahan ke alur kerja pengembangan perangkat lunak modern. Menjaga dan menjalankan server, menjaga pembaruan keamanan, dan menskalakan resource membutuhkan waktu yang berharga dari tim DevOps. Dengan komputasi tanpa server, semua operasi infrastruktur ditangani oleh penyedia layanan. Dengan demikian, tanpa server memungkinkan tim pengembangan untuk fokus pada penulisan kode daripada menghabiskan terlalu banyak waktu untuk pengelolaan infrastruktur.
Artikel ini menjelaskan apa itu komputasi tanpa server dan bagaimana perbandingannya dengan model penerapan cloud yang berbeda. Kami juga akan mempelajari pro dan kontra dari serverless dan berbicara tentang beberapa kasus penggunaan umum.
Apa itu Komputasi Tanpa Server?
Komputasi tanpa server adalah metode penerapan dan menjalankan kode di cloud tanpa berurusan dengan penyediaan server dan pengelolaan infrastruktur. Terlepas dari namanya, serverless masih mengandalkan cloud atau server fisik untuk eksekusi kode. Namun, pengembang tidak peduli dengan infrastruktur yang mendasarinya. Ini diserahkan kepada penyedia tanpa server yang secara dinamis mengalokasikan sumber daya komputasi yang diperlukan dan mengelolanya atas nama pengguna.
Untuk pengembang, ini berarti tidak ada waktu yang dihabiskan untuk administrasi server, pemeliharaan, penskalaan sumber daya, atau perencanaan kapasitas. Mereka cukup mengunggah kode mereka dan membiarkan penyedia menjalankan logika sisi server berdasarkan peristiwa atau permintaan yang berbeda. Berbeda dengan model penagihan cloud yang umum, layanan tanpa server dikenakan biaya berdasarkan berapa kali kode dijalankan atau saat peristiwa tertentu dipicu.
Bagaimana Komputasi Tanpa Server Bekerja?
Dalam lingkungan tanpa server, kode dipicu oleh peristiwa dan dieksekusi sebagai fungsi. Inilah sebabnya mengapa tanpa server sering dikaitkan dengan “Functions-as-a-Service” atau FaaS, yang merupakan konsep serupa. FaaS adalah model cloud berbasis peristiwa yang menangani logika sisi server untuk eksekusi kode tanpa intervensi apa pun dari pengguna. Peristiwa ini dapat berupa apa saja mulai dari permintaan HTTP sederhana, panggilan API, hingga kueri basis data atau unggahan file.
Fungsi dijalankan dalam wadah stateless. Ini berarti bahwa sumber daya komputasi untuk menjalankan fungsi hanya disediakan saat dipanggil. Tidak ada data yang disimpan dalam RAM atau ditulis ke disk. Setelah permintaan dipenuhi, status aplikasi diatur ulang dan tidak ada memori transaksi. Membuat permintaan baru memanggil sumber daya yang akan disediakan dari awal dan kode dijalankan tanpa referensi ke pemanggilan sebelumnya.
Untuk mengakomodasi stateless state ini, aplikasi perlu diarsitektur sebagai fungsi yang dapat berjalan dalam container stateless. Ini biasanya dicapai melalui layanan mikro. Aplikasi monolit besar dipecah menjadi segmen yang lebih kecil dan saling berhubungan melalui API. Aplikasi monolit masih dapat berjalan sebagai fungsi tunggal, tetapi ini bukan praktik yang umum. Mengingat bahwa wadah komputasi baru disediakan pada setiap permintaan, fungsi besar akan berdampak negatif pada kecepatan dan durasi eksekusi.
Fungsi FaaS tidak berjalan tanpa batas. Mereka dihentikan setelah jangka waktu tertentu setelah dipanggil. Dalam kebanyakan kasus, fungsi timeout setelah sekitar lima menit. Artinya, aplikasi yang menjalankan tugas berdurasi panjang perlu didesain ulang untuk memperhitungkan batas penghentian.
Penyediaan dan inisialisasi wadah untuk eksekusi fungsi juga membutuhkan waktu. Ini biasanya diukur dalam milidetik. Namun, fungsi yang kompleks mungkin memerlukan beberapa detik untuk diinisialisasi, sehingga menyebabkan latensi yang lebih besar.
Ada dua metode umum untuk menginisialisasi fungsi — mulai hangat dan mulai dingin. Peringatan mulai menggunakan kembali sumber daya dari peristiwa sebelumnya, sedangkan mulai dingin menyebarkan wadah baru. Waktu yang diperlukan untuk menginisialisasi dan menjalankan suatu fungsi akan bergantung pada jumlah kode, bahasa pemrograman, jumlah pustaka yang digunakan skrip, serta banyak faktor lainnya. Dalam hal latensi, cold start membutuhkan lebih banyak waktu untuk memulai suatu fungsi.
Bagaimana Komputasi Tanpa Server Dibandingkan dengan BaaS, PaaS, dan IaaS?
Seperti halnya tren perangkat lunak, tidak ada definisi resmi yang menjelaskan apa itu tanpa server dan apa yang bukan. Itulah mengapa komputasi tanpa server sering dikacaukan dengan layanan cloud dan model penerapan lainnya. Konsep komputasi tanpa server berkisar pada dua bidang yang serupa:
Backend-sebagai-Layanan — BaaS memungkinkan pengembang untuk fokus pada penulisan antarmuka frontend sambil membongkar semua operasi backend ke penyedia layanan. Tugas di balik layar ini biasanya melibatkan autentikasi pengguna yang siap digunakan, penyimpanan, pengelolaan database, dan layanan hosting. Selain itu, pengembang tidak perlu mengelola server yang menjalankan backend mereka, memungkinkan penerapan aplikasi yang lebih cepat.
Fungsi sebagai Layanan — Model layanan cloud tanpa server ini menghilangkan manajemen infrastruktur. Penyedia layanan ditugaskan untuk menyebarkan sumber daya komputasi sesuai permintaan untuk mengeksekusi kode pengguna. Ini terjadi setiap kali suatu peristiwa atau permintaan dipicu. Fungsi tanpa server berjalan dalam wadah tanpa status, artinya sumber daya komputasi hanya diterapkan saat fungsi dipanggil.
Titik utama kebingungan adalah antara Backend-as-a-Service dan Platform-as-a-Service (PaaS). Yang pertama adalah teknik komputasi tanpa server, sedangkan yang kedua adalah model penyebaran cloud. Meskipun mereka memiliki beberapa karakteristik dasar, PaaS tidak selaras dengan persyaratan tanpa server.
Platform-as-a-Service — Dengan PaaS, pengguna menyewa solusi perangkat keras dan perangkat lunak yang diperlukan untuk beban kerja pengembangan dari penyedia layanan dengan biaya berlangganan. Hal ini memungkinkan pengembang untuk menghabiskan lebih banyak waktu coding tanpa khawatir tentang manajemen infrastruktur. Di sisi lain, BaaS menawarkan fitur tambahan seperti otentikasi pengguna out-of-the-box, database terkelola, pemberitahuan email, dan sejenisnya. BaaS juga memungkinkan pengembang untuk fokus hanya pada membangun frontend sambil mengintegrasikan berbagai layanan backend sesuai permintaan.
Infrastruktur-sebagai-Layanan — IaaS mengacu pada solusi cloud swalayan di mana penyedia menghosting infrastruktur atas nama pengguna. Semua penyediaan server dan operasi manajemen termasuk instalasi perangkat lunak ditangani oleh pengguna. Beberapa penyedia IaaS juga menawarkan solusi tanpa server tetapi sebagai produk yang sangat berbeda.
Kasus Penggunaan Komputasi Tanpa Server yang Umum
Seperti disebutkan sebelumnya, tanpa server bukan untuk semua orang. Tetapi jika kebutuhan Anda selaras dengan beberapa kasus penggunaan ini, Anda mungkin mendapat manfaat dari tanpa server.
Membangun API
Tanpa server untuk dikelola, membangun API yang sangat skalabel dan responsif adalah salah satu kasus penggunaan yang lebih populer untuk tanpa server. Fitur penskalaan otomatis tanpa server memastikan bahwa API akan selalu tersedia bahkan di bawah lalu lintas yang padat. Selain itu, pengguna tidak dikenakan biaya untuk sumber daya yang menganggur saat tidak ada panggilan ke API.
Situs Web dan Aplikasi
Menyebarkan situs web dan aplikasi berbasis web pada platform tanpa server tidak memerlukan penyiapan infrastruktur sebelumnya. Ini secara signifikan memotong waktu yang diperlukan untuk meluncurkan aplikasi web yang berfungsi penuh. Fitur penskalaan otomatis juga memainkan peran penting di sini karena pengguna tidak perlu khawatir tentang penyediaan lebih banyak server untuk mendukung peningkatan permintaan. Hasilnya, lebih mudah mempertahankan waktu aktif 100%.
Aplikasi Multi-Bahasa
Dengan tanpa server, satu aplikasi dapat ditulis dalam berbagai bahasa. Tanpa server memungkinkan pengembang untuk memecah aplikasi monolit menjadi bagian-bagian yang lebih kecil dan menjalankannya sebagai layanan mikro. Layanan mikro tersebut kemudian berkomunikasi satu sama lain melalui API. Setiap segmen aplikasi dapat ditulis menggunakan bahasa pemrograman yang berbeda.
Pipa CI/CD
Otomatisasi adalah kunci untuk menjalankan pengembangan, pengujian, dan pipeline integrasi yang sukses. Tanpa server memungkinkan pengembang untuk menguji kode secara otomatis dan memperbaiki bug lebih cepat. Karena tanpa server berbasis peristiwa, pengguna dapat menyetel peristiwa untuk memicu pengujian otomatis tanpa intervensi manual.
Apa Keuntungan Komputasi Tanpa Server?
Dibandingkan dengan komputasi awan berorientasi server tradisional, komputasi tanpa server mengabstraksikan operasi infrastruktur. Semuanya bekerja di luar kotak yang pada gilirannya memastikan rilis kode lebih cepat dan skalabilitas otomatis pada titik harga yang lebih rendah.
Ini adalah tiga manfaat paling umum dari tanpa server:
Penskalaan Otomatis
Penyedia tanpa server menskalakan sumber daya infrastruktur berdasarkan permintaan. Operasi penskalaan dilakukan secara dinamis dan otomatis tanpa campur tangan pengembang.
Waktu Lebih Cepat ke Pasar
Tanpa perlu menyediakan cluster server yang kompleks, pengembang dapat lebih fokus untuk mencapai kecepatan rilis yang lebih tinggi. Ini mempercepat waktu yang diperlukan untuk merilis kode ke produksi atau menerapkan perubahan kode tambahan, sehingga pengiriman aplikasi ke pelanggan lebih cepat.
Biaya yang Dioptimalkan
Karena semuanya disediakan sesuai permintaan, organisasi tidak perlu membayar untuk ruang penyimpanan, waktu komputasi, atau jaringan yang tidak digunakan. Konsumsi layanan tanpa server biasanya diukur dalam milidetik dan ditagih sesuai dengan itu.
Apa Kelemahan Komputasi Tanpa Server?
Seperti halnya solusi perangkat lunak apa pun, tanpa server juga memiliki beberapa kelemahan. Namun, bergantung pada aplikasi yang Anda buat, Anda mungkin tidak terlalu peduli dengan beberapa kelemahan tanpa server ini.
Latensi
Saat menjalankan suatu fungsi, penyedia tanpa server secara otomatis menerapkan sumber daya yang diperlukan pada setiap pemanggilan. Bergantung pada ukuran beban kerja, container biasanya disediakan dalam milidetik tetapi bahkan dapat memakan waktu beberapa detik. Latensi dapat dikurangi melalui “peringatan mulai” yang menggunakan kembali instance dari eksekusi sebelumnya.
Durasi Eksekusi
Waktu eksekusi fungsi tanpa server terbatas dan dibatalkan setelah jangka waktu tertentu. Ini biasanya sekitar lima menit setelah permintaan tetapi bervariasi di seluruh penyedia. Batas eksekusi adalah kelemahan utama untuk aplikasi yang memulai proses berdurasi panjang. Mengurangi masalah ini dapat dilakukan dengan mengelompokkan kode menjadi potongan yang lebih kecil dan menjalankannya sebagai layanan mikro.
Penguncian Vendor
Penyedia biasanya menggunakan teknologi eksklusif untuk mengaktifkan layanan tanpa server mereka. Ini dapat menyebabkan masalah bagi pengguna yang ingin memigrasikan beban kerja mereka ke platform lain. Saat pindah ke penyedia lain, perubahan pada kode dan arsitektur aplikasi tidak dapat dihindari.
Keamanan
Pengguna memiliki sedikit kendali atas konfigurasi instans yang menjalankan kode mereka. Ini tersembunyi dari pengguna dan termasuk dalam ranah penyedia layanan. Dengan demikian, operasi keamanan juga berada di tangan penyedia. Pengguna tidak berdaya jika terjadi serangan, hanya mengandalkan penyedia untuk mengurangi kerusakan dan memulihkan sistem. Aplikasi yang memiliki banyak titik masuk dalam lingkungan tanpa server lebih rentan terhadap kerentanan karena meningkatnya permukaan serangan.
Apa Masa Depan untuk Komputasi Tanpa Server?
Komputasi tanpa server masih merupakan teknologi yang relatif baru. Masa depannya tergantung pada kemampuan penyedia layanan untuk mengatasi beberapa kelemahan yang tercantum di atas — yang paling penting, cold start. Penyedia perlu memangkas waktu yang diperlukan untuk menjalankan suatu fungsi setelah berada dalam keadaan idle untuk sementara waktu. Memecahkan masalah ini akan mengurangi latensi dan memastikan pengalaman pengguna yang lancar.
Tanpa server saat ini bergantung pada wadah tanpa status untuk eksekusi fungsi. Masa depan tanpa server bergerak menuju memungkinkan aplikasi stateful untuk memanfaatkan manfaat tanpa server. Ini akan memungkinkan pengembang untuk membangun aplikasi stateful tanpa khawatir tentang pengelolaan data backend.
Dalam hal DevOps, tanpa server akan mengarah pada perluasan NoOps. Tren ini akan menyebabkan penyedia tanpa server menangani semua operasi infrastruktur atas nama pelanggan. Dalam pengaturan seperti itu, perusahaan tidak perlu memiliki tim operasi internal.
Di tahun-tahun mendatang, Kubernetes diharapkan menjadi fondasi dari serverless. Dengan dukungan untuk jaringan, penskalaan otomatis yang gesit, dan penerapan multi-cloud, portabilitas Kubernetes meningkatkan komputasi tanpa server dengan lebih dari satu cara. Menjalankan kelas aplikasi tertentu tanpa server tidak praktis karena penyedia layanan terkadang membatasi perilaku mereka. Dengan Kubernetes, developer akan dapat mengatasi keterbatasan tersebut dan membangun platform tanpa server berdasarkan kebutuhan spesifik mereka.
Kesimpulan
Meskipun namanya menyiratkan tidak adanya server, komputasi tanpa server masih mengandalkan cloud atau server fisik. Ini adalah model komputasi yang menghilangkan operasi infrastruktur, memungkinkan pengembang untuk fokus pada penulisan dan penerapan aplikasi. Model tanpa server berkisar pada dua area utama:Backend-as-a-Service dan Functions-as-a-Service.
Yang pertama memberi pengguna arsitektur backend yang siap digunakan, sedangkan yang kedua memungkinkan menjalankan aplikasi dalam wadah tanpa status. Penampung ini disediakan secara otomatis berdasarkan peristiwa atau pemicu. Dengan demikian, tanpa server bukanlah solusi peluru perak untuk semua masalah pengembangan saat ini. Sebagian besar ditujukan untuk aplikasi non-monolitik yang menggunakan arsitektur berbasis layanan mikro.