Apa itu Serverless?

42

Semua penyedia cloud memasarkan solusi "serverless" mereka. Janji adalah bahwa serverless akan menggantikan cara pengembang saat ini mengembangkan perangkat lunak mereka, dan operasi mengelolanya dalam produksi.

Apa itu "tanpa server"? Di mana orang dapat mempelajari lebih lanjut tentang hal itu, dan bagaimana hal itu dapat digunakan hari ini?

Evgeny
sumber
komputasi tanpa server adalah "server kurang" sebagai "burger ayam" adalah vegan karena Anda tidak memenuhi ayam secara pribadi
Sai Addanki

Jawaban:

43

Artikel Wikipedia tentang komputasi tanpa server memberikan pengantar yang layak untuk topik ini:

Komputasi tanpa server, juga dikenal sebagai fungsi sebagai layanan (FaaS), adalah model eksekusi kode komputasi awan di mana penyedia cloud sepenuhnya mengelola memulai dan menghentikan platform wadah fungsi sebagai layanan (PaaS) sebagaimana diperlukan untuk melayani permintaan, dan permintaan ditagih oleh ukuran abstrak dari sumber daya yang diperlukan untuk memenuhi permintaan, bukan per mesin virtual, per jam.

Idenya adalah bahwa pengembang tidak perlu peduli dengan infrastruktur server sama sekali . Penyedia cloud mengelola server fisik, sistem operasi yang digunakan dan semua kesulitan tradisional yang terlibat dalam menjalankan server.

Komputasi tanpa server mengubah arsitektur Anda dari memikirkan tentang apa yang dilakukan mesin hingga fungsi apa yang dilakukan. AWS Lambda adalah contoh yang muncul di benak Anda - Anda membayar dan menjalankan fungsi , tanpa menyebutkan jenis infrastruktur fisik apa yang berjalan di bawah ini. Ada juga host tanpa server yang bersaing seperti Azure Functions (atau Anda dapat mencari jika Anda tidak tertarik pada keduanya).

Ada beberapa keuntungan untuk serverless (walaupun Anda perlu menulis dengan cara yang sedikit berbeda dari yang biasa Anda lakukan dalam beberapa kasus, karena arsitekturnya sangat berbeda):

  • Skalabilitas pada dasarnya datang secara gratis - karena Anda hanya membayar untuk menjalankan suatu fungsi, penyedia cloud dapat dengan mudah mendedikasikan lebih banyak perangkat keras yang diperlukan untuk menjalankan kode Anda. Anda juga dapat meningkatkan skala saat permintaan meningkat, daripada membayar tarif tetap apakah aplikasi Anda digunakan sekali atau jutaan kali.

  • Perangkat lunak dan perangkat keras server tidak lagi perlu dikelola oleh pengembang - penyedia cloud menanganinya. Jika Anda pernah menggunakan sesuatu seperti Arch di server, Anda akan tahu betapa mudahnya menghapus paket penting dan menghancurkan semuanya!

  • Ini membebaskan pengembang untuk fokus pada apa yang mereka kuasai - kode . Sebagian besar pengembang mungkin tidak akan hebat dalam infrastruktur dan pemrograman server - serverless hanya mengeluarkan satu masalah dari persamaan.

Aurora0001
sumber
"Seharusnya tidak perlu peduli dengan infrastruktur server sama sekali". Itu hal yang sangat baik karena, dalam pengalaman saya, terlalu banyak dari mereka sudah / tidak /, dengan konsekuensi bencana!
Phill W.
15

Martin Fowler memiliki ikhtisar yang baik:
https://martinfowler.com/articles/serverless.html

TL; DR
"Serverless" menjelaskan pengembangan aplikasi dan arsitektur yang mendesain aplikasi di mana infrastruktur bersifat sementara , yang berarti bahwa mereka cenderung berbasis kontainer dan dapat "datang dan pergi" berdasarkan mekanisme penskalaan dinamis. Ini menentukan penggunaan arsitektur stateless yang bergantung pada teknologi terdistribusi (seperti toko kunci / nilai.)

Dave Swersky
sumber
2
Tidak hanya sesaat, tetapi diabstraksi sepenuhnya. Dalam banyak pengaturan non-serverless modern (seperti AWS EC2 ASGs), infrastrukturnya juga bersifat sementara; turunan EC2 dalam ASG dapat dihentikan kapan saja.
Adrian
14

'Serverless', seperti banyak hal di ruang kami, menjadi istilah yang kelebihan beban .. tetapi umumnya artinya "Secara fungsional, arsitektur kami tidak bergantung pada penyediaan atau pemeliharaan server yang sedang berlangsung"

Contoh pertama yang muncul dalam pikiran adalah aplikasi javascript satu halaman, yang menggunakan penyimpanan lokal, dan disimpan pada sesuatu seperti Amazon S # atau Github Pages (atau situs statis mana pun - itu hanya contoh umum). Bayangkan sesuatu seperti aplikasi gaya 'todo' atau 'menyelesaikan sesuatu' yang sepenuhnya berjalan di browser Anda. Browser Anda membuka layanan seperti S3 untuk mengunduh kode, dan item yang Anda simpan semuanya disimpan dalam penyimpanan lokal di browser Anda. Tidak ada server yang Anda kelola untuk ini.

Contoh kedua, dan sedikit lebih rumit (dan juga yang mempopulerkan istilah 'serverless'), menggunakan layanan seperti AWS Lambda. Biarkan saya menjelaskan ini dengan menyajikan masalah yang dipecahkannya:

Berkali-kali dalam karir saya, saya telah memecahkan masalah bisnis untuk klien dengan sedikit lebih dari beberapa kode ruby ​​yang melakukan ekstrak, transformasi, dan memuat berkala (biasanya ditulis sebagai tugas menyapu). Setelah dipecahkan, saya biasanya mengotomatiskannya dengan cron. Lalu masalahnya menjadi 'di mana saya meng-host hal ini yang berjalan sekali setiap jam?' Untuk beberapa klien, kami akan menyiapkan server di infrastruktur yang ada. Untuk yang lain, kami akan membuat instance EC2, meskipun saat itu idle 99%. Dalam salah satu dari keadaan itu, ada server yang membutuhkan penyediaan, penambalan, pemantauan, pembaruan, dll.

Dengan Amazon Lambda, saya dapat mengambil tugas menyapu dan menjalankannya pada layanan mereka sebagai 'fungsi' murni. Aku bahkan bisa menjadwalkannya. Klien tidak lagi membutuhkan infrastruktur untuk hal yang sederhana sekali dalam satu jam.

Dengan 'serverless' masih ada server, sama seperti 'cloud' masih ada komputer. Hanya ada tingkat abstraksi di atasnya yang mengambil beberapa tanggung jawab lingkungan untuk Anda.

David Bock
sumber
Suara positif saya untuk contoh kehidupan nyata pekerjaan sekali dalam satu jam yang biasanya membutuhkan EC2. Sekarang Anda hanya perlu fungsi Lambda!
HopeKing
10

Semua jawaban bagus sudah. Saya telah melalui posting blog Thinking Serverless - Bagaimana Pendekatan Baru Menangani Kebutuhan Pemrosesan Data Modern di HighScalability, di mana saya menemukan penjelasan yang sangat bagus tentang apa arti serverless:

Frasa "tanpa server" tidak berarti server tidak lagi terlibat. Ini hanya berarti bahwa pengembang tidak lagi harus berpikir sebanyak itu tentang mereka. Sumber daya komputasi digunakan sebagai layanan tanpa harus mengelola kapasitas atau batasan fisik. Penyedia layanan semakin mengambil tanggung jawab mengelola server, penyimpanan data, dan sumber daya infrastruktur lainnya ... Pergi tanpa server memungkinkan pengembang mengalihkan fokus mereka dari tingkat server ke tingkat tugas. Solusi tanpa server memungkinkan pengembang fokus pada apa yang perlu dilakukan aplikasi atau sistem mereka dengan menghilangkan kompleksitas infrastruktur backend.

Dan, satu lagi pembelajaran dari pengalaman pribadi saya dalam membangun infrastruktur tanpa server adalah:

  • Jalur pipa data tanpa server tidak benar-benar harus real-time saja. Seseorang dapat membangun jaringan pipa tanpa-pemrosesan server yang efisien melalui mekanisme AWW's CloudWatch alert, yang memungkinkan seseorang untuk memonitor alat-alat dan meningkatkan peringatan untuk (AWS) Lambda untuk menghitung.

Seperti misalnya: Simpan file dalam antrian AWS SQS. Setelah jumlah pesan dalam antrian mencapai 10, aktifkan acara ke Lambda.

Dawny33
sumber
6

Selain hanya menjelaskan definisi istilah Serverless, asal-usul istilah dan sejarahnya juga memberikan beberapa wawasan tentang maknanya. Konsep ini berasal dari kerangka kerja JAWS oleh Austen Collins , yang kemudian diganti namanya menjadi Serverless . Saya telah mempelajarinya pertama kali di AWS re: Invent 2015 sesi , yang dapat membantu untuk tanggal konsep. Inilah yang sebenarnya menciptakan istilah Serverless, yang kemudian menyebar dengan cepat ke sistem cloud lain:

Jiri Klouda
sumber