Serverless คืออะไร


42

ผู้ให้บริการคลาวด์ทั้งหมดกำลังทำการตลาดโซลูชัน "ไร้เซิร์ฟเวอร์" ของพวกเขา คำมั่นสัญญาก็คือว่า serverless จะเข้ามาแทนที่วิธีที่นักพัฒนากำลังพัฒนาซอฟต์แวร์ของพวกเขาอยู่ในขณะนี้และการดำเนินการจัดการในการผลิต

"serverless" คืออะไร? หนึ่งสามารถเรียนรู้เพิ่มเติมเกี่ยวกับมันและวิธีการที่สามารถนำมาใช้ในวันนี้?


การคำนวณแบบ serverless คือ "server less" ในฐานะ "chicken burger" นั้นเป็นวีแก้นเนื่องจากคุณไม่ได้พบไก่เป็นการส่วนตัว
Sai Addanki

คำตอบ:


43

บทความของ Wikipedia เกี่ยวกับการคำนวณแบบไม่มีเซิร์ฟเวอร์ให้การแนะนำที่ดีในหัวข้อ:

การคำนวณแบบไม่มีเซิร์ฟเวอร์ (Serverless computing) หรือที่เรียกว่า function as a service (FaaS) เป็นรูปแบบการประมวลผลแบบคลาวด์คอมพิวติ้งซึ่งผู้ให้บริการคลาวด์สามารถจัดการการเริ่มต้นและหยุดแพลตฟอร์มคอนเทนเนอร์ของฟังก์ชั่น ถูกเรียกเก็บเงินโดยการวัดที่เป็นนามธรรมของทรัพยากรที่จำเป็นในการตอบสนองการร้องขอมากกว่าต่อเครื่องเสมือนต่อชั่วโมง

แนวคิดก็คือผู้พัฒนาไม่ควรกังวลเกี่ยวกับโครงสร้างพื้นฐานเซิร์ฟเวอร์เลย ผู้ให้บริการคลาวด์จัดการเซิร์ฟเวอร์ทางกายภาพระบบปฏิบัติการที่ใช้และปัญหาดั้งเดิมทั้งหมดที่เกี่ยวข้องกับการใช้งานเซิร์ฟเวอร์

คอมพิวเตอร์ serverless เปลี่ยนแปลงสถาปัตยกรรมของคุณจากความคิดเกี่ยวกับสิ่งที่เครื่องกำลังทำสิ่งที่ฟังก์ชั่นกำลังทำ AWS แลมบ์ดาเป็นตัวอย่างที่มาถึงใจ - คุณจ่ายสำหรับการและเรียกใช้ฟังก์ชั่นโดยไม่ต้องเอ่ยถึงใด ๆ เกี่ยวกับสิ่งที่ประเภทของโครงสร้างพื้นฐานทางกายภาพกำลังทำงานอยู่ด้านล่าง นอกจากนี้ยังมีโฮสต์ที่ไม่ต้องแข่งขันกับเซิร์ฟเวอร์เช่นฟังก์ชัน Azure (หรือคุณสามารถค้นหาได้ว่าคุณไม่สนใจทั้งคู่หรือไม่)

มีข้อดีเล็กน้อยสำหรับ serverless (แม้ว่าคุณจะต้องเขียนด้วยวิธีที่แตกต่างเล็กน้อยกว่าที่คุณคุ้นเคยในบางกรณีเพราะมันเป็นสถาปัตยกรรมที่แตกต่างกันโดยสิ้นเชิง):

  • ความสามารถในการปรับขยายนั้นมาจากฟรี - เพราะคุณแค่จ่ายเงินเพื่อใช้งานฟังก์ชั่นผู้ให้บริการคลาวด์สามารถอุทิศฮาร์ดแวร์เพิ่มเติมได้อย่างง่ายดายตามที่จำเป็นในการเรียกใช้รหัสของคุณ นอกจากนี้คุณยังสามารถปรับขนาดได้ตามความต้องการที่เพิ่มขึ้นแทนที่จะจ่ายในอัตราคงที่ไม่ว่าจะใช้แอปพลิเคชันของคุณครั้งเดียวหรือล้านครั้ง

  • ซอฟต์แวร์เซิร์ฟเวอร์และฮาร์ดแวร์ไม่จำเป็นต้องได้รับการจัดการโดยนักพัฒนาอีกต่อไปผู้ให้บริการคลาวด์จะจัดการกับมัน หากคุณเคยใช้บางสิ่งบางอย่างเช่น Arch บนเซิร์ฟเวอร์คุณจะรู้ว่ามันง่ายแค่ไหนที่จะกำจัดแพ็คเกจสำคัญและทำลายทุกอย่าง!

  • มันอิสระขึ้นนักพัฒนาที่จะมุ่งเน้นไปที่สิ่งที่พวกเขากำลังดีที่ - รหัส นักพัฒนาส่วนใหญ่อาจจะไม่เก่งทั้งในเรื่องโครงสร้างพื้นฐานของเซิร์ฟเวอร์และการเขียนโปรแกรมโดยที่เซิร์ฟเวอร์ไม่มีปัญหาเพียงอย่างเดียวจากสมการ


"ไม่จำเป็นต้องสนใจโครงสร้างพื้นฐานเซิร์ฟเวอร์เลย" นั่นเป็นสิ่งที่ดีจริง ๆ เพราะจากประสบการณ์ของฉันมีมากเกินไปแล้ว / ไม่ / ด้วยผลที่ตามมาหายนะ!
Phill W.

15

Martin Fowler มีภาพรวมที่ดี:
https://martinfowler.com/articles/serverless.html

TL; DR
"Serverless" อธิบายการพัฒนาแอพพลิเคชั่นและสถาปัตยกรรมที่ออกแบบแอพพลิเคชั่นที่โครงสร้างพื้นฐานเป็นแบบชั่วคราวซึ่งหมายความว่าพวกเขามีแนวโน้มที่จะใช้ตู้คอนเทนเนอร์และสามารถ "ไปมา" โดยใช้กลไกการปรับขนาด สิ่งนี้กำหนดให้ใช้สถาปัตยกรรมไร้สัญชาติที่ขึ้นอยู่กับเทคโนโลยีแบบกระจาย (เช่นที่เก็บคีย์ / ค่า)


2
ไม่เพียงชั่วคราวเท่านั้น แต่แยกออกไปอย่างสมบูรณ์ ในการตั้งค่าที่ไม่ใช่เซิร์ฟเวอร์ที่ทันสมัยจำนวนมาก (เช่น AWS EC2 ASGs) โครงสร้างพื้นฐานก็มีความสำคัญเช่นกัน อินสแตนซ์ EC2 ใน ASG สามารถยกเลิกได้ตลอดเวลา
Adrian

14

'Serverless' เหมือนกับหลาย ๆ สิ่งในพื้นที่ของเรากำลังกลายเป็นคำที่ใช้บ่อยเกินไป แต่โดยทั่วไปแล้วมันหมายถึง "การทำงานตามหน้าที่สถาปัตยกรรมของเราไม่ได้ขึ้นอยู่กับการจัดสรรหรือการบำรุงรักษาเซิร์ฟเวอร์อย่างต่อเนื่อง"

อินสแตนซ์แรกที่นึกถึงคือแอพพลิเคชั่นจาวาสคริปต์หน้าเดียวที่ใช้ที่จัดเก็บในตัวเครื่องและเก็บไว้ในบางอย่างเช่น Amazon S # หรือ Github Pages (หรือไซต์คงที่ - เป็นเพียงตัวอย่างทั่วไป) ลองนึกภาพบางสิ่งเช่น 'สิ่งที่ต้องทำ' หรือ 'ทำให้แอพพลิเคชั่นเสร็จสิ้น' ซึ่งทำงานในเบราว์เซอร์ของคุณ เบราว์เซอร์ของคุณให้บริการเช่น S3 เพื่อดาวน์โหลดรหัสและรายการที่คุณจัดเก็บจะถูกเก็บไว้ในที่จัดเก็บในเบราว์เซอร์ของคุณ ไม่มีเซิร์ฟเวอร์ที่คุณบำรุงรักษาสำหรับสิ่งนี้

อินสแตนซ์ที่สองและมีความซับซ้อนขึ้นเล็กน้อย (และเป็นที่นิยมใช้คำว่า 'serverless') ใช้บริการเช่น AWS Lambda ให้ฉันอธิบายสิ่งนี้โดยนำเสนอปัญหาที่แก้ได้:

หลายครั้งในอาชีพการงานของฉันฉันได้แก้ปัญหาทางธุรกิจสำหรับลูกค้าที่มีรหัสทับทิมน้อยกว่าเล็กน้อยซึ่งทำการแยก, แปลง, และโหลดเป็นระยะ ๆ เมื่อแก้ไขแล้วฉันจะทำให้ cron เป็นอัตโนมัติ จากนั้นปัญหาจะกลายเป็น 'ฉันจะโฮสต์สิ่งนี้ที่ทำงานหนึ่งครั้งทุกชั่วโมงหรือไม่' สำหรับลูกค้าบางรายเราจะตั้งเซิร์ฟเวอร์ในโครงสร้างพื้นฐานที่มีอยู่ สำหรับคนอื่นเราจะตั้งค่าอินสแตนซ์ EC2 แม้ว่าจะไม่ได้ใช้งาน 99% ของเวลา ในสถานการณ์เหล่านี้มีเซิร์ฟเวอร์ที่ต้องการการเตรียมการแก้ไขการตรวจสอบการอัพเดทและอื่น ๆ

ด้วย Amazon แลมบ์ดาฉันสามารถทำภารกิจคราดนั้นและเรียกใช้บริการของพวกเขาในฐานะ ฉันยังสามารถกำหนดเวลาได้ ลูกค้าจะไม่ต้องการโครงสร้างพื้นฐานอีกต่อไปสำหรับสิ่งที่ทำได้ง่ายๆครั้งละหนึ่งชั่วโมง

ด้วย 'serverless' ยังคงมีเซิร์ฟเวอร์เหมือนกับ 'cloud' ยังมีคอมพิวเตอร์อยู่ มีเพียงระดับของความเป็นนามธรรมอยู่ด้านบนของสิ่งที่ต้องรับผิดชอบต่อสิ่งแวดล้อมสำหรับคุณ


upvote ของฉันสำหรับตัวอย่างในชีวิตจริงของงานครั้งเดียวในชั่วโมงที่จำเป็นต้องใช้ EC2 ตอนนี้คุณแค่ต้องการฟังก์ชั่นแลมบ์ดา!
HopeKing

10

คำตอบที่ยอดเยี่ยมทั้งหมดแล้ว ฉันกำลังผ่านโพสต์บล็อกThinking Serverless - วิธีการใหม่ที่อยู่การประมวลผลข้อมูลที่ทันสมัยต้องการ HighScalability ซึ่งฉันได้เจอคำอธิบายที่ยอดเยี่ยมนี้ของความหมายของ serverless:

วลี“ ไร้เซิร์ฟเวอร์” ไม่ได้หมายความว่าเซิร์ฟเวอร์ไม่มีส่วนเกี่ยวข้องอีกต่อไป หมายความว่านักพัฒนาซอฟต์แวร์ไม่ต้องคิดมากเกี่ยวกับพวกเขาอีกต่อไป ทรัพยากรการคำนวณใช้เป็นบริการโดยไม่ต้องจัดการกับขีดความสามารถหรือขีด จำกัด ทางกายภาพ ผู้ให้บริการมีหน้าที่รับผิดชอบในการจัดการเซิร์ฟเวอร์ที่เก็บข้อมูลและทรัพยากรโครงสร้างพื้นฐานอื่น ๆ มากขึ้น ... การไม่มีเซิร์ฟเวอร์ช่วยให้นักพัฒนาเปลี่ยนโฟกัสจากระดับเซิร์ฟเวอร์เป็นระดับงาน โซลูชันที่ไม่มีเซิร์ฟเวอร์ช่วยให้นักพัฒนาซอฟต์แวร์มุ่งเน้นไปที่สิ่งที่แอพพลิเคชั่นหรือระบบของพวกเขาต้องทำโดยการกำจัดความซับซ้อนของโครงสร้างพื้นฐานด้านหลัง

และอีกหนึ่งการเรียนรู้จากประสบการณ์ส่วนตัวของฉันในการสร้างโครงสร้างพื้นฐานแบบไร้เซิร์ฟเวอร์คือ:

  • ไปป์ไลน์ข้อมูลที่ไม่มีเซิร์ฟเวอร์ไม่จำเป็นต้องเป็นเรียลไทม์เท่านั้น หนึ่งสามารถสร้างท่อส่งแบบไม่มีเซิร์ฟเวอร์ที่ประมวลผลได้อย่างมีประสิทธิภาพผ่านกลไกการแจ้งเตือน CloudWatch ของ AWS ซึ่งช่วยให้หนึ่งสามารถตรวจสอบเครื่องมือและเพิ่มการแจ้งเตือนสำหรับแลมบ์ดา (AWS) เพื่อคำนวณ

ตัวอย่างเช่น: เก็บไฟล์ไว้ในคิว AWS SQS เมื่อจำนวนข้อความในคิวถึง 10 ให้เริ่มกิจกรรมไปที่ Lambda


6

นอกเหนือจากการอธิบายความหมายของคำว่า Serverless แล้วต้นกำเนิดของคำศัพท์และประวัติความเป็นมาก็ให้ความเข้าใจอย่างลึกซึ้งเกี่ยวกับความหมายของคำนั้น แนวความคิดที่เกิดขึ้นกับJAWS กรอบโดยออสเตนคอลลินซึ่งได้รับ ต่อมาเปลี่ยนชื่อเป็นServerless ฉันได้เรียนรู้เกี่ยวกับสิ่งนี้เป็นครั้งแรกใน AWS re: คิดค้น 2015 เซสชันซึ่งสามารถช่วยในการกำหนดแนวคิด นี่คือสิ่งที่จริงแล้วชื่อว่าคำว่า Serverless ซึ่งแพร่กระจายอย่างรวดเร็วไปยังระบบคลาวด์อื่น ๆ :

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.