Apa itu tanpa pelayan? Penjelasan tanpa pelayan dijelaskan

Pemaju menghabiskan berjam-jam menyelesaikan masalah perniagaan dengan kod. Kemudian giliran pasukan ops untuk menghabiskan berjam-jam, pertama sekali mengetahui cara mendapatkan kod yang ditulis oleh pembangun dan berjalan pada komputer apa sahaja yang ada, dan kedua memastikan komputer tersebut beroperasi dengan lancar. Bahagian kedua benar-benar adalah tugas yang tidak pernah berakhir. Mengapa tidak menyerahkan bahagian itu kepada orang lain?

Banyak inovasi dalam IT selama dua dekad terakhir - mesin maya, pengkomputeran awan, kontena - telah difokuskan untuk memastikan anda tidak perlu memikirkan banyak mesin fizikal yang mendasari kod anda. Pengkomputeran tanpa server adalah paradigma yang semakin popular yang menjadikan hasrat ini menjadi kesimpulan yang logik: Dengan pengkomputeran tanpa pelayan, anda tidak perlu mengetahui apa-apa mengenai perkakasan atau OS yang dijalankan oleh kod anda, kerana semuanya dijaga oleh anda oleh penyedia perkhidmatan .

Apakah pengkomputeran tanpa pelayan?

Pengkomputeran tanpa pelayan adalah model pelaksanaan untuk awan di mana penyedia awan memperuntukkan secara dinamis — dan kemudian mengenakan caj kepada pengguna — hanya sumber daya dan penyimpanan komputasi yang diperlukan untuk melaksanakan sekeping kod tertentu. Secara semula jadi, masih ada pelayan yang terlibat, tetapi penyediaan dan penyelenggaraannya sepenuhnya dijaga oleh penyedia. Chris Munns, penyokong Amazon untuk tanpa server, mengatakan pada persidangan 2017 bahawa, dari perspektif pasukan menulis dan menggunakan kod, "tidak ada pelayan untuk mengurus atau menyediakan sama sekali. Ini tidak termasuk apa-apa yang akan menjadi logam kosong, tidak ada yang maya, tidak ada wadah — apa pun yang melibatkan anda menguruskan hos, menambal hos, atau berurusan dengan apa-apa di peringkat sistem operasi, bukanlah sesuatu yang harus anda lakukan dalam dunia tanpa pelayan. " 

Seperti yang dijelaskan oleh pemaju Mike Roberts, istilah itu pernah digunakan untuk senario yang disebut back-end-as-a-service , di mana aplikasi mudah alih akan menyambung ke pelayan belakang yang dihoskan sepenuhnya di awan. Tetapi hari ini ketika orang bercakap mengenai pengkomputeran tanpa pelayan, atau seni bina tanpa pelayan, mereka bermaksud penawaran fungsi sebagai perkhidmatan , di mana pelanggan menulis kod yang hanya menangani logik perniagaan dan memuat naiknya ke penyedia. Penyedia itu mengurus semua penyediaan perkakasan, mesin maya dan pengurusan kontena, dan bahkan tugas seperti multithreading yang sering dimasukkan ke dalam kod aplikasi.

Fungsi tanpa server didorong oleh peristiwa, yang bermaksud kod hanya dipanggil apabila dipicu oleh permintaan. Pembekal mengenakan caj hanya untuk masa pengiraan yang digunakan oleh pelaksanaan itu, dan bukannya bayaran bulanan tetap untuk mengekalkan pelayan fizikal atau maya. Fungsi-fungsi ini dapat dihubungkan bersama untuk membuat saluran paip pemprosesan, atau berfungsi sebagai komponen aplikasi yang lebih besar, berinteraksi dengan kod lain yang berjalan di dalam wadah atau pada pelayan konvensional.

Faedah dan kekurangan pengkomputeran tanpa pelayan

Dari keterangan itu, dua faedah terbesar pengkomputeran tanpa pelayan harus jelas: pembangun dapat memfokus pada tujuan perniagaan kod yang mereka tulis, dan bukannya pada persoalan infrastruktur; dan organisasi hanya membayar sumber perkiraan yang sebenarnya mereka gunakan dengan cara yang sangat terperinci, daripada membeli perkakasan fizikal atau menyewa contoh awan yang kebanyakannya tidak berfungsi.

Seperti yang ditunjukkan oleh Bernard Golden, titik terakhir ini sangat bermanfaat bagi aplikasi berdasarkan acara. Sebagai contoh, anda mungkin mempunyai aplikasi yang tidak aktif banyak waktu tetapi dalam keadaan tertentu mesti menangani banyak permintaan acara sekaligus. Atau anda mungkin mempunyai aplikasi yang memproses data yang dihantar dari peranti IoT dengan sambungan Internet terhad atau sekejap-sekejap. Dalam kedua kes tersebut, pendekatan tradisional memerlukan penyediaan pelayan yang baik yang dapat menangani kapasiti kerja yang tinggi - tetapi pelayan tersebut akan sering tidak digunakan. Dengan seni bina tanpa pelayan, anda hanya akan membayar sumber pelayan yang sebenarnya anda gunakan. Pengkomputeran tanpa server juga bagus untuk jenis pemprosesan kumpulan tertentu.Salah satu contoh kanonik kes penggunaan seni bina tanpa server adalah perkhidmatan yang memuat naik dan memproses serangkaian fail gambar individu dan menghantarnya ke bahagian aplikasi yang lain.

Mungkin kelemahan fungsi pelayan yang paling jelas adalah bahawa mereka sengaja tidak sementara dan, seperti yang dinyatakan oleh AlexSoft, "tidak sesuai untuk tugas jangka panjang." Sebilangan besar penyedia tanpa pelayan tidak akan membiarkan kod anda dijalankan lebih dari beberapa minit, dan apabila anda menjalankan fungsi, ia tidak menyimpan data yang bernas dari contoh yang dijalankan sebelumnya. Masalah yang berkaitan ialah kod tanpa pelayan boleh memakan masa selama beberapa saat untuk berputar — bukan masalah untuk banyak kes penggunaan, tetapi jika aplikasi anda memerlukan latensi rendah, berhati-hatilah.

Banyak kelemahan lain, seperti yang ditunjukkan oleh Rohit Akiwatkar dan Gary Arora, ada kaitan dengan lokap masuk vendor. Walaupun terdapat pilihan sumber terbuka, pasaran tanpa pelayan dikuasai oleh penyedia awan komersial yang besar, seperti yang akan kita bincangkan sebentar lagi. Ini bermaksud pembangun sering menggunakan alat dari vendor mereka, yang menjadikannya sukar untuk beralih jika mereka tidak berpuas hati. Oleh kerana banyak pengkomputeran tanpa pelayan berlaku, menurut definisi, pada infrastruktur vendor, sukar untuk mengintegrasikan kod tanpa pelayan ke dalam saluran pembangunan dan pengujian dalaman.

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

Zaman moden pengkomputeran tanpa pelayan bermula dengan pelancaran AWS Lambda, platform berdasarkan perkhidmatan cloud Amazon, pada tahun 2014. Microsoft mengikuti Azure Functions pada tahun 2016. Google Cloud Functions, yang telah di beta sejak 2017, akhirnya mencapai status pengeluaran pada bulan Julai 2018. Ketiga-tiga perkhidmatan mempunyai batasan, kelebihan, bahasa yang disokong, dan cara melakukan sesuatu. Rohit Akiwatkar mempunyai kelebihan yang baik dan terperinci mengenai perbezaan antara ketiga-tiganya. Juga sedang dijalankan adalah IBM Cloud Functions, yang berdasarkan platform sumber terbuka Apache OpenWhisk.

Di antara semua platform pengkomputeran tanpa pelayan, AWS Lambda adalah yang paling terkenal, dan jelas paling banyak mempunyai masa untuk berkembang dan matang. mempunyai liputan kemas kini dan ciri baru yang ditambahkan pada AWS Lambda sejak setahun lalu.

Tumpukan tanpa pelayan

Seperti halnya di banyak bidang perangkat lunak, dunia tanpa server telah melihat evolusi tumpukan perisian, yang menyatukan komponen yang diperlukan untuk membangun aplikasi tanpa server. Setiap timbunan terdiri dari bahasa pengaturcaraan yang akan digunakan untuk menulis kodnya, kerangka aplikasi yang menyediakan struktur untuk kod anda, dan sekumpulan pencetus yang akan dipahami dan digunakan oleh platform untuk memulakan pelaksanaan kod.

Walaupun anda dapat menggabungkan dan memadankan penawaran khusus yang berbeza dalam setiap kategori ini, ada batasan bergantung pada vendor mana yang anda gunakan, dengan beberapa pertindihan. Sebagai contoh, untuk bahasa, anda dapat menggunakan Node.js, Java, Go, C #, dan Python pada AWS Lambda, tetapi hanya JavaScript, C #, dan F # yang berfungsi secara asli pada fungsi Azure. Ketika datang ke pencetus, AWS Lambda mempunyai senarai terpanjang, tetapi banyak di antaranya khusus untuk platform AWS, seperti Perkhidmatan E-mel Mudah Amazon dan AWS CodeCommit; Google Cloud Functions, sementara itu, dapat dipicu oleh permintaan HTTP generik. Paul Jaworski melihat secara terperinci tumpukan untuk setiap tiga persembahan besar.

Rangka kerja tanpa pelayan

Perlu dipertimbangkan sedikit pada bahagian kerangka persamaan, kerana itu akan menentukan banyak bagaimana anda akhirnya membina aplikasi anda. Amazon mempunyai tawaran asalnya sendiri, Model Aplikasi Tanpa Server sumber terbuka (SAM), tetapi ada juga yang lain, yang kebanyakannya adalah platform silang dan juga sumber terbuka. Salah satu yang paling popular disebut, tanpa generik, Tanpa Server, dan menekankan bahawa ia memberikan pengalaman yang sama dengan setiap platform yang disokong, iaitu AWS Lambda, Azure Functions, Google Cloud Functions, dan IBM OpenWhisk. Penawaran lain yang popular adalah Apex, yang dapat membantu membawa beberapa bahasa yang tidak tersedia pada penyedia tertentu ke dalam pertandingan.

Pangkalan data tanpa pelayan

Seperti yang kami nyatakan di atas, satu kebiasaan bekerja dengan kod tanpa pelayan adalah yang tidak mempunyai keadaan berterusan, yang bermaksud bahawa nilai-nilai pemboleh ubah tempatan tidak bertahan di semua keadaan. Segala data berterusan yang perlu diakses oleh kod anda mesti disimpan di tempat lain, dan pencetus yang tersedia di tumpukan untuk vendor utama semuanya merangkumi pangkalan data yang dapat berinteraksi dengan fungsi anda.

Sebilangan pangkalan data ini disebut sebagai pelayan. Ini bermaksud bahawa mereka berkelakuan seperti fungsi tanpa pelayan lain yang telah kita bincangkan dalam artikel ini, dengan pengecualian yang jelas bahawa data disimpan selama-lamanya. Tetapi sebahagian besar overhead pengurusan yang terlibat dalam penyediaan dan penyelenggaraan pangkalan data dibuang. Seperti yang dinyatakan oleh pemaju Jeremy Daly, "Yang perlu anda lakukan adalah mengkonfigurasi kluster, dan kemudian semua penyelenggaraan, penambalan, cadangan, replikasi, dan penskalaan ditangani secara automatik untuk anda." Seperti penawaran fungsi-sebagai-layanan, Anda hanya membayar untuk waktu komputasi yang sebenarnya Anda gunakan, dan sumber daya diputar naik dan turun sesuai yang diperlukan untuk memenuhi permintaan.

Tiga penyedia tanpa pelayan besar masing-masing menawarkan pangkalan data tanpa pelayan mereka sendiri: Amazon mempunyai Aurora Serverless dan DynamoDB, Microsoft mempunyai Azure Cosmos DB, dan Google mempunyai Cloud Firestore. Ini bukan satu-satunya pangkalan data yang tersedia. Nemanja Novkovic mempunyai maklumat mengenai lebih banyak persembahan.

Pengkomputeran tanpa server dan Kubernetes

Kontainer membantu menggunakan teknologi tanpa pelayan, tetapi overhead menguruskannya dijaga oleh vendor dan oleh itu tidak dapat dilihat oleh pengguna. Ramai yang melihat pengkomputeran tanpa pelayan sebagai cara untuk mendapatkan banyak kelebihan perkhidmatan mikro tanpa kontena tanpa perlu menangani kerumitannya, dan bahkan mula bercakap mengenai dunia pasca kontena.

Sebenarnya, kontena dan pengkomputeran tanpa pelayan hampir pasti akan wujud selama bertahun-tahun yang akan datang, dan sebenarnya fungsi tanpa pelayan dapat wujud dalam aplikasi yang sama dengan perkhidmatan mikro yang dikemas. Kubernetes, platform orkestrasi kontena yang paling popular, juga dapat menguruskan infrastruktur tanpa pelayan. Dengan Kubernetes, anda boleh menggabungkan pelbagai jenis perkhidmatan pada satu kluster.  

Tanpa pelayan di luar talian

Anda mungkin mendapati prospek untuk memulakan dengan pengkomputeran tanpa pelayan agak menakutkan, kerana sepertinya anda perlu mendaftar dengan vendor untuk bermain-main dan melihat cara kerjanya. Tetapi jangan takut: Terdapat cara untuk menjalankan kod tanpa pelayan di perkakasan tempatan anda sendiri. Sebagai contoh, AWS SAM menyediakan ciri Tempatan yang membolehkan anda menguji kod Lambda di luar talian. Dan jika anda menggunakan kerangka aplikasi Tanpa Server, periksa tanpa server, di luar talian, pemalam yang membolehkan anda menjalankan kod secara tempatan. Selamat bereksperimen!