Komputasi Tanpa Server
Komputasi Tanpa Server adalah model eksekusi Komputasi Awan dimana penyedia bertindak sebagai server, secara dinamis mengelola alokasi sumber daya mesin. Penentuan harga layanan didasarkan pada jumlah aktual sumber daya yang dikonsumsi oleh aplikasi, bukan pada kapasitas unit yang dibeli sebelumnya. Ini adalah bentuk komputasi utilitas. Nama "komputasi tanpa server"
digunakan karena manajemen server dan keputusan perencanaan kapasitas benar-benar tidak terkait dari pengembang atau operator. Komputasi Tanpa Server memungkinkan Anda menulis dan menyebarkan kode tanpa perlu repot mengelola infrastruktur yang mendasarinya. Sementara server tentu saja masih diperlukan untuk menjalankan aplikasi- atau (lebih tepatnya) fungsi- arsitektur dirancang
agar pengembang tidak perlu khawatir tentang manajemen server, atau untuk membuat keputusan perencanaan kapasitas. Bagaimana ini bisa terjadi? Aplikasi tanpa server yang khas akan terdiri dari sejumlah fungsi- itulah sebabnya Anda akan menemukan penyedia platform tanpa server yang menawarkan fungsi-as-a-service (FaaS). Setiap fungsi adalah komponen
aplikasi, yang dihubungkan bersama di bagian belakang oleh platform penyedia, atau oleh jaringan pihak ketiga. Mekanisme cara kerjanya adalah provinsi penyedia, yang mengelola proses dan tagihan berdasarkan fungsi bisnis yang dikirim, bukan perangkat keras. Dengan kata lain, ini adalah eksekusi kode bayar-saat-anda-pakai. Pengembang hanya perlu memperhatikan diri
mereka sendiri dengan menciptakan kode yang berperilaku dengan cara tertentu sebagai tanggapan terhadap masukan spesifik; kode modular yang berjalan secara independen dari sisa aplikasi, dengan kata lain. Ini berjalan ketika dipicu, dan setelah menyelesaikan tugasnya berputar ke bawah, menunggu doa berikutnya.
Sebagian besar, tetapi tidak semua, vendor tanpa server menawarkan runtime komputasi, juga dikenal sebagai platform fungsi (FaaS), yang menjalankan logika aplikasi tetapi tidak untuk menyimpan data. Platform eksekusi pembayaran pertama "bayar saat Anda gunakan" adalah Zimki, dirilis pada 2006, tetapi tidak berhasil secara komersial. Pada tahun 2008, Google merilis Google App
Engine, yang menampilkan tagihan terukur untuk aplikasi yang menggunakan kerangka Python khusus, tetapi tidak dapat mengeksekusi kode arbitrer. AWS Lambda, diperkenalkan oleh Amazon pada tahun 2014, adalah vendor cloud publik pertama dengan penawaran komputasi tanpa server abstrak. Google Cloud Platform menawarkan Google Cloud Functions sejak 2016. Oracle memperkenalkan Fn Project, sebuah framework komputasi open source serverless yang ditawarkan pada Oracle Cloud
Platform dan tersedia di GitHub untuk penyebaran pada platform lain. IBM telah menerbitkan OpenWhisk sebagai platform server tanpa sumber terbuka. OpenWhisk termasuk dukungan asli untuk berbagai bahasa pemrograman Node.js, dan mendukung lebih banyak bahasa dan runtime melalui kontainer Docker. Microsoft Azure menawarkan Azure Functions dan nuclio, ditawarkan baik di cloud publik Azure atau di tempat melalui Azure Stack.
Beberapa database tanpa server telah dirilis. Sistem ini memperluas model eksekusi tanpa server ke RDBMS, menghilangkan kebutuhan untuk penyediaan atau skala perangkat keras database virtual atau fisik. Azure Data Lake adalah layanan penyimpanan data dan analitik yang sangat skalabel. Layanan ini diselenggarakan di Azure, cloud publik Microsoft. Azure Data Lake Analytics menyediakan infrastruktur terdistribusi yang dapat secara dinamis mengalokasikan atau
mendelegasikan sumber daya sehingga pelanggan hanya membayar layanan yang mereka gunakan. Google Cloud Datastore adalah toko dokumen yang pada akhirnya konsisten. Ini menawarkan komponen database Google App Engine sebagai layanan yang berdiri sendiri. Firebase, juga dimiliki oleh Google, menyertakan basis data hierarkis dan tersedia melalui paket tetap dan bayar-saat-Anda-gunakani.
Serverless dapat lebih efektif biaya daripada menyewa atau membeli sejumlah server yang tetap, yang umumnya melibatkan periode waktu kurang beraktivitas atau waktu idle yang signifikan. Ia bahkan dapat lebih hemat biaya daripada menyediakan grup penskalaan otomatis, karena pengepakan bin yang lebih efisien dari sumber daya mesin yang mendasarinya. Ini dapat digambarkan sebagai
komputasi bayar-saat-anda-gunakan atau bare-code karena Anda dibebankan hanya berdasarkan waktu dan memori yang dialokasikan untuk menjalankan kode Anda; tanpa biaya terkait untuk waktu idle. Imbalan biaya langsung terkait dengan kurangnya biaya sistem operasi, termasuk: lisensi, instalasi, ketergantungan, pemeliharaan, dukungan, dan penambalan.
Selain itu, arsitektur tanpa server berarti pengembang dan operator tidak perlu menghabiskan waktu untuk menyiapkan dan menyetel kebijakan atau sistem penskalaan otomatis; penyedia cloud bertanggung jawab untuk menyesuaikan kapasitas dengan permintaan secara mulus.. Seperti yang dikatakan Google: 'dari prototipe hingga produksi hingga skala planet'. Karena sistem asli cloud secara inheren diperkecil dan
naik, sistem ini dikenal sebagai elastis daripada dapat diskalakan. Tim pengembang kecil dapat menjalankan kode mereka sendiri tanpa ketergantungan pada tim infrastruktur dan insinyur dukungan; lebih banyak pengembang menjadi DevOps terampil dan perbedaan antara menjadi pengembang perangkat lunak atau insinyur perangkat keras yang kabur.
Dengan Fungsi sebagai layanan, unit kode yang terpapar ke dunia luar adalah fungsi sederhana. Ini berarti bahwa biasanya, programmer tidak perlu khawatir tentang multithreading atau langsung menangani permintaan HTTP dalam kode mereka, menyederhanakan tugas pengembangan perangkat lunak back-end.
Di antara manfaat inti dari serverless adalah efektivitas biaya yang lebih besar, karena Anda membayar hanya untuk waktu yang dibutuhkan untuk mengeksekusi kode, bukan untuk waktu idle. Dan karena fungsi serverless dapat dipanggil dalam pecahan detik, biaya bisa sangat terperinci. Ini juga meningkatkan produktivitas pengembang dengan berfokus pada hal yang paling penting: membangun
aplikasi dan mengaburkan isu-isu seputar perangkat keras dan kompatibilitas, atau detail back-end seperti multi-threading.
Misalnya, daripada membayar untuk menjalankan server basis data selalu-up, fungsi FaaS mungkin merespons permintaan http dari klien. Menjadi tanpa server, bagaimanapun, tidak perlu berjalan sepanjang waktu, tidak seperti server database tradisional. Bagaimana permintaan yang diarahkan di bagian belakang adalah tanggung jawab penyedia FaaS, sehingga tidak memuat rakit penyediaan
dan keputusan manajemen dari pengembang atau SMB. Ini juga berarti bahwa fungsi ini secara otomatis terukur: fungsi serverless akan berjalan ketika diperlukan, tanpa harus disediakan.
Kode serverless jarang digunakan mungkin menderita latency respon yang lebih besar daripada kode yang terus berjalan pada dedicated server, mesin virtual, atau wadah. Ini karena, tidak seperti dengan penskalaan otomatis, penyedia cloud biasanya "memutar" kode tanpa server sepenuhnya saat tidak digunakan. Ini berarti bahwa jika runtime (misalnya, Java runtime) membutuhkan waktu yang cukup lama untuk memulai, itu akan menciptakan latensi tambahan.
Komputasi Tanpa Server tidak cocok untuk beberapa beban kerja komputasi, seperti komputasi berkinerja tinggi, karena batas sumber daya yang dikenakan oleh penyedia cloud, dan juga karena kemungkinan akan lebih murah untuk penyediaan massal jumlah server yang diyakini diperlukan pada setiap diberikan titik waktu.
Mendiagnosis kinerja atau masalah penggunaan sumber daya yang berlebihan dengan kode serverless mungkin lebih sulit daripada dengan kode server tradisional, karena meskipun seluruh fungsi dapat diatur waktunya, biasanya tidak ada kemampuan untuk menggali lebih detail dengan melampirkan profiler, debugger atau alat APM. Lebih jauh lagi, lingkungan dimana kode berjalan biasanya bukan sumber