Komputasi Tanpa Server
Komputasi Tanpa Server adalah model eksekusi Komputasi Awan di mana 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. [1] 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. [3] 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. [4]
AWS Lambda , diperkenalkan oleh Amazon pada tahun 2014, [5] adalah vendor cloud publik pertama dengan penawaran komputasi tanpa server abstrak.
Google Cloud Platform menawarkan Google Cloud Functions sejak 2016. [6]
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. [7]
IBM telah menerbitkan OpenWhisk sebagai platform server tanpa sumber terbuka . [8] [9] 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. [10]
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, [11] menyertakan basis data hierarkis dan tersedia melalui paket tetap dan bayar-saat -Anda-gunakani. [12]
Serverless dapat lebih efektif biaya daripada menyewa atau membeli sejumlah server yang tetap, [13] yang umumnya melibatkan periode waktu kurang beraktivitas atau waktu idle yang signifikan. [1] 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 [13] atau bare-code [13] karena Anda dibebankan hanya berdasarkan waktu dan memori yang dialokasikan untuk menjalankan kode Anda; tanpa biaya terkait untuk waktu idle. [13]
Imbalan biaya langsung terkait dengan kurangnya biaya sistem operasi, termasuk: lisensi, instalasi, ketergantungan, pemeliharaan, dukungan, dan penambalan. [13]
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. [1] [10] [13] . Seperti yang dikatakan Google: 'dari prototipe hingga produksi hingga skala planet'. [13]
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. [13]
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, [2] biasanya tidak ada kemampuan untuk menggali lebih detail dengan melampirkan profiler , debugger atau alat APM . Lebih jauh lagi, lingkungan di mana kode berjalan biasanya bukan sumber terbuka , sehingga karakteristik kinerjanya tidak dapat direplikasi secara tepat dalam lingkungan local.
Serverless kadang-kadang keliru dianggap sebagai lebih aman daripada arsitektur tradisional. Meskipun hal ini benar sampai batas tertentu karena kerentanan OS ditangani oleh penyedia cloud, total permukaan serangan secara signifikan lebih besar karena terdapat lebih banyak komponen pada aplikasi dibandingkan dengan arsitektur tradisional dan setiap komponen merupakan titik masuk ke aplikasi tanpa server . Selain itu, solusi keamanan yang digunakan pelanggan untuk melindungi beban kerja cloud mereka menjadi tidak relevan karena pelanggan tidak dapat mengontrol dan memasang apa pun di tingkat akhir dan jaringan seperti IDS / IPS . [14]
Ini diintensifkan oleh properti mono-budaya dari seluruh jaringan server. (Satu cacat tunggal dapat diterapkan secara global.)
Banyak lingkungan fungsi tanpa server didasarkan pada lingkungan cloud publik eksklusif. Di sini, beberapa implikasi privasi harus dipertimbangkan, seperti sumber daya dan akses bersama oleh karyawan eksternal. Namun, komputasi tanpa server juga dapat dilakukan pada lingkungan cloud pribadi atau bahkan di tempat, menggunakan misalnya platform Kubernetes. Ini memberi perusahaan kontrol penuh atas mekanisme privasi, seperti halnya hosting dalam pengaturan server tradisional.
Komputasi Tanpa Server ditutupi oleh IDCA ( Otoritas Pusat Data Internasional dalam Kerangka Kerja mereka AE360) Namun, bagian yang terkait dengan portabilitas dapat menjadi masalah ketika memindahkan logika bisnis dari satu cloud publik ke yang lain yang solusi docker dibuat. Cloud Native Computing Foundation (CNCF) juga bekerja mengembangkan spesifikasi dengan Oracle. [15]
Kerangka kerja tanpa server dirancang untuk mempermudah pembuatan, pengujian, dan penerapan tanpa server. Beberapa kerangka kerja ini termasuk:
Fn Project , platform server tanpa kode sumber terbuka dan kontainer yang dapat dijalankan di lingkungan cloud atau di lokasi. [16]
Nuclio , platform open-source yang berjalan di atas Docker atau Kubernetes, atau sebagai layanan cloud dari iguazio. [17]
Serverless Framework , untuk membuat aplikasi tanpa server yang disebarkan ke AWS Lambda, Fungsi Azure, atau GCP Cloud Functions dengan Node.js dan Python.
Komputasi Tanpa Server menawarkan manajemen server nol, tidak ada penyediaan awal, penskalaan otomatis untuk memenuhi kebutuhan lalu lintas, dan hemat biaya: Anda hanya membayar sumber daya yang digunakan. Ini masih awal tetapi tanda-tandanya jelas: serverless menghemat uang dan dapat mengurangi kerumitan.