Apa itu tanpa server? Komputasi tanpa server menjelaskan

Pengembang menghabiskan banyak waktu untuk memecahkan masalah bisnis dengan kode. Kemudian giliran tim operasi untuk menghabiskan waktu berjam-jam, pertama mencari tahu bagaimana mendapatkan kode yang ditulis dan dijalankan oleh pengembang di komputer apa pun yang tersedia, dan kedua memastikan komputer tersebut beroperasi dengan lancar. Bagian kedua benar-benar merupakan tugas yang tidak pernah berakhir. Mengapa tidak menyerahkan bagian itu kepada orang lain?

Banyak inovasi dalam TI selama dua dekade terakhir — mesin virtual, komputasi awan, kontainer — telah difokuskan untuk memastikan Anda tidak perlu terlalu memikirkan mesin fisik yang mendasari tempat kode Anda berjalan. Komputasi tanpa server adalah paradigma yang semakin populer yang membawa keinginan ini ke kesimpulan logisnya: Dengan komputasi tanpa server, Anda tidak perlu tahu apa - apa tentang perangkat keras atau OS yang menjalankan kode Anda, karena semuanya diurus oleh penyedia layanan untuk Anda .

Apa itu komputasi tanpa server?

Komputasi tanpa server adalah model eksekusi untuk awan di mana penyedia awan mengalokasikan secara dinamis — dan kemudian menagih pengguna untuk — hanya sumber daya komputasi dan penyimpanan yang diperlukan untuk mengeksekusi bagian kode tertentu. Biasanya, masih ada server yang terlibat, tetapi penyediaan dan pemeliharaannya sepenuhnya ditangani oleh penyedia. Chris Munns, advokat Amazon untuk tanpa server, mengatakan pada konferensi 2017 bahwa, dari perspektif tim yang menulis dan menerapkan kode, “tidak ada server untuk dikelola atau disediakan sama sekali. Ini tidak termasuk apa pun yang akan menjadi logam murni, tidak ada yang virtual, tidak ada yang merupakan wadah — apa pun yang melibatkan Anda mengelola host, menambal host, atau menangani apa pun di tingkat sistem operasi, bukanlah sesuatu yang harus Anda lakukan di dunia tanpa server. ” 

Seperti yang dijelaskan oleh pengembang Mike Roberts, istilah itu pernah digunakan untuk apa yang disebut skenario back-end-as-a-service , di mana aplikasi seluler akan terhubung ke server back-end yang dihosting sepenuhnya di cloud. Namun saat ini, saat orang berbicara tentang komputasi tanpa server, atau arsitektur tanpa server, yang dimaksud adalah penawaran fungsi sebagai layanan , di mana pelanggan menulis kode yang hanya menangani logika bisnis dan mengunggahnya ke penyedia. Penyedia tersebut menangani semua penyediaan perangkat keras, mesin virtual dan pengelolaan kontainer, dan bahkan tugas seperti multithreading yang sering kali dimasukkan ke dalam kode aplikasi.

Fungsi tanpa server didorong oleh peristiwa, yang berarti kode hanya dipanggil ketika dipicu oleh permintaan. Penyedia hanya mengenakan biaya untuk waktu komputasi yang digunakan oleh eksekusi tersebut, bukan biaya bulanan tetap untuk memelihara server fisik atau virtual. Fungsi-fungsi ini dapat dihubungkan bersama untuk membuat pipeline pemrosesan, atau dapat berfungsi sebagai komponen aplikasi yang lebih besar, berinteraksi dengan kode lain yang berjalan di container atau di server konvensional.

Manfaat dan kelemahan komputasi tanpa server

Dari uraian tersebut, dua manfaat terbesar dari komputasi tanpa server harus jelas: pengembang dapat fokus pada tujuan bisnis dari kode yang mereka tulis, bukan pada pertanyaan infrastruktur; dan organisasi hanya membayar sumber daya komputasi yang sebenarnya mereka gunakan dengan cara yang sangat terperinci, daripada membeli perangkat keras fisik atau menyewa instance cloud yang sebagian besar tidak digunakan.

Seperti yang ditunjukkan Bernard Golden, poin terakhir itu memiliki manfaat khusus untuk aplikasi yang digerakkan oleh peristiwa. Misalnya, Anda mungkin memiliki aplikasi yang sering tidak digunakan tetapi dalam kondisi tertentu harus menangani banyak permintaan peristiwa sekaligus. Atau Anda mungkin memiliki aplikasi yang memproses data yang dikirim dari perangkat IoT dengan konektivitas Internet terbatas atau terputus-putus. Dalam kedua kasus tersebut, pendekatan tradisional akan memerlukan penyediaan server yang besar yang dapat menangani kapasitas kerja puncak — tetapi server tersebut akan sering kali kurang digunakan. Dengan arsitektur tanpa server, Anda hanya membayar sumber daya server yang benar-benar Anda gunakan. Komputasi tanpa server juga bagus untuk jenis pemrosesan batch tertentu.Salah satu contoh kanonik kasus penggunaan arsitektur tanpa server adalah layanan yang mengunggah dan memproses serangkaian file gambar individual dan mengirimkannya ke bagian lain dari aplikasi.

Mungkin kelemahan yang paling jelas dari fungsi tanpa server adalah bahwa fungsi tersebut sengaja dibuat sementara dan, seperti yang dikatakan AlexSoft, "tidak cocok untuk tugas jangka panjang". Sebagian besar penyedia tanpa server tidak akan membiarkan kode Anda dieksekusi selama lebih dari beberapa menit, dan saat Anda menjalankan suatu fungsi, itu tidak menyimpan data stateful dari instance yang dijalankan sebelumnya. Masalah terkait adalah kode tanpa server dapat memerlukan waktu selama beberapa detik untuk dijalankan — bukan masalah untuk banyak kasus penggunaan, tetapi jika aplikasi Anda memerlukan latensi rendah, berhati-hatilah.

Banyak kelemahan lainnya, seperti yang ditunjukkan oleh Rohit Akiwatkar dan Gary Arora, berkaitan dengan lock-in vendor. Meskipun ada opsi open source yang tersedia, pasar tanpa server didominasi oleh penyedia cloud komersial besar, seperti yang akan kita bahas sebentar lagi. Itu berarti pengembang sering kali akhirnya menggunakan perkakas dari vendor mereka, yang membuatnya sulit untuk beralih jika mereka menjadi tidak puas. Dan karena begitu banyak komputasi tanpa server yang terjadi, menurut definisi, pada infrastruktur vendor, mungkin sulit untuk mengintegrasikan kode tanpa server ke dalam pengembangan internal dan pipeline pengujian.

Vendor tanpa server: AWS Lambda, Azure Functions, dan Google Cloud Functions

Era modern komputasi tanpa server dimulai dengan peluncuran AWS Lambda, platform berbasis layanan cloud Amazon, pada 2014. Microsoft mengikutinya dengan Azure Functions pada 2016. Google Cloud Functions, yang telah dalam versi beta sejak 2017, akhirnya mencapai status produksi pada Juli 2018. Ketiga layanan tersebut memiliki batasan, kelebihan, bahasa yang didukung, dan cara melakukan sesuatu yang sedikit berbeda. Rohit Akiwatkar memiliki ikhtisar yang baik dan terperinci tentang perbedaan di antara ketiganya. Yang juga sedang berjalan adalah IBM Cloud Functions, yang didasarkan pada platform open source Apache OpenWhisk.

Di antara semua platform komputasi tanpa server, AWS Lambda adalah yang paling menonjol, dan jelas memiliki waktu paling banyak untuk berkembang dan matang. memiliki cakupan pembaruan dan fitur baru yang ditambahkan ke AWS Lambda selama setahun terakhir.

Tumpukan tanpa server

Seperti halnya di banyak ranah perangkat lunak, dunia tanpa server telah menyaksikan evolusi tumpukan perangkat lunak, yang menyatukan berbagai komponen yang diperlukan untuk membangun aplikasi tanpa server. Setiap tumpukan terdiri dari bahasa pemrograman yang akan Anda gunakan untuk menulis kodenya, kerangka aplikasi yang menyediakan struktur untuk kode Anda, dan sekumpulan pemicu yang akan dipahami dan digunakan platform untuk memulai eksekusi kode.

Meskipun Anda dapat memadukan dan mencocokkan penawaran spesifik yang berbeda di setiap kategori ini, ada batasan bergantung pada vendor mana yang Anda gunakan, dengan beberapa tumpang tindih. Misalnya, untuk bahasa, Anda dapat menggunakan Node.js, Java, Go, C #, dan Python di AWS Lambda, tetapi hanya JavaScript, C #, dan F # yang berfungsi secara native pada fungsi Azure. Dalam hal pemicu, AWS Lambda memiliki daftar terpanjang, tetapi banyak di antaranya khusus untuk platform AWS, seperti Amazon Simple Email Service dan AWS CodeCommit; Google Cloud Functions, sementara itu, dapat dipicu oleh permintaan HTTP umum. Paul Jaworski melihat secara mendalam tumpukan untuk masing-masing dari tiga penawaran besar.

Kerangka kerja tanpa server

Ada baiknya berlama-lama sedikit di bagian kerangka dari persamaan, karena itu akan menentukan banyak tentang bagaimana Anda akhirnya membangun aplikasi Anda. Amazon memiliki penawaran aslinya sendiri, Model Aplikasi Tanpa Server (SAM) open source, tetapi ada juga yang lain, yang sebagian besar bersifat lintas platform dan juga open source. Salah satu yang paling populer disebut, secara umum, Tanpa Server, dan menekankan bahwa ini memberikan pengalaman yang sama pada setiap platform yang didukung, yaitu AWS Lambda, Azure Functions, Google Cloud Functions, dan IBM OpenWhisk. Penawaran populer lainnya adalah Apex, yang dapat membantu membawa beberapa bahasa yang tidak tersedia di penyedia tertentu ke dalam medan perang.

Database tanpa server

Seperti yang kami catat di atas, satu kekhasan bekerja dengan kode tanpa server adalah tidak adanya status persisten, yang berarti bahwa nilai variabel lokal tidak bertahan di semua instansiasi. Data persisten apa pun yang perlu diakses kode Anda harus disimpan di tempat lain, dan pemicu yang tersedia di stack untuk vendor utama semuanya menyertakan database tempat fungsi Anda dapat berinteraksi.

Beberapa dari database ini sendiri disebut sebagai tanpa server. Ini berarti mereka berperilaku seperti fungsi tanpa server lainnya yang telah kita bahas dalam artikel ini, dengan pengecualian yang jelas bahwa data disimpan tanpa batas. Tetapi banyak dari overhead manajemen yang terlibat dalam penyediaan dan pemeliharaan database dikesampingkan. Seperti yang dikatakan oleh pengembang Jeremy Daly, "Yang perlu Anda lakukan hanyalah mengonfigurasi cluster, lalu semua pemeliharaan, patching, backup, replikasi, dan penskalaan ditangani secara otomatis untuk Anda". Seperti penawaran function-as-a-service, Anda hanya membayar waktu komputasi yang benar-benar Anda gunakan, dan resource diputar naik turun sesuai kebutuhan untuk menyesuaikan permintaan.

Tiga besar penyedia tanpa server masing-masing menawarkan database tanpa server mereka sendiri: Amazon memiliki Aurora Tanpa Server dan DynamoDB, Microsoft memiliki Azure Cosmos DB, dan Google memiliki Cloud Firestore. Ini bukan satu-satunya database yang tersedia. Nemanja Novkovic memiliki informasi tentang penawaran lainnya.

Komputasi tanpa server dan Kubernetes

Penampung membantu memberi daya pada teknologi tanpa server di balik terpal, tetapi overhead pengelolaannya diurus oleh vendor dan dengan demikian tidak terlihat oleh pengguna. Banyak yang melihat komputasi tanpa server sebagai cara untuk mendapatkan banyak keuntungan dari layanan mikro dalam container tanpa harus berurusan dengan kerumitannya, dan bahkan mulai berbicara tentang dunia pasca-container.

Sebenarnya, kontainer dan komputasi tanpa server hampir pasti akan hidup berdampingan selama bertahun-tahun yang akan datang, dan pada kenyataannya fungsi tanpa server dapat ada dalam aplikasi yang sama seperti layanan mikro dalam kontainer. Kubernetes, platform orkestrasi container paling populer, juga dapat mengelola infrastruktur tanpa server. Memang, dengan Kubernetes, Anda dapat mengintegrasikan berbagai jenis layanan pada satu cluster.  

Offline tanpa server

Anda mungkin menemukan prospek untuk memulai komputasi tanpa server sedikit mengintimidasi, karena tampaknya Anda perlu mendaftar dengan vendor untuk bermain-main dan melihat cara kerjanya. Tapi jangan takut: Ada cara untuk menjalankan kode tanpa server secara offline di perangkat keras lokal Anda sendiri. Misalnya, AWS SAM menyediakan fitur Lokal yang memungkinkan Anda menguji kode Lambda secara offline. Dan jika Anda menggunakan kerangka aplikasi Tanpa server, lihat tanpa server, sebuah plugin yang memungkinkan Anda menjalankan kode secara lokal. Selamat bereksperimen!