Serverless: มันคืออะไรและทำไมมันถึงแตกต่าง

เผยแพร่แล้ว: 2019-01-11

คอมพิวเตอร์ไร้เซิร์ฟเวอร์คืออะไร

คุณอาจเคยเห็นโฆษณาล่าสุดเกี่ยวกับเซิร์ฟเวอร์ไร้เซิร์ฟเวอร์ในชุมชนนักพัฒนาแล้ว แล้วมันคืออะไรกันแน่? ฉันหมายถึงว่าโค้ดจะต้องยังคงทำงานอยู่ที่ไหนสักแห่งที่ถูกต้อง ดังนั้นมันจึงไร้เซิร์ฟเวอร์จริง ๆ ได้อย่างไร

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

ระบบปฏิบัติการไม่ทราบ!?!?

วิธีง่ายๆ วิธีหนึ่งในการแยกความแตกต่างแบบไร้เซิร์ฟเวอร์จากการจัดระบบคลาวด์แบบแฟนซีบางรูปแบบ เช่น Kubernetes คือไม่มีใครในบริษัทของคุณรู้ว่าเซิร์ฟเวอร์ที่รันโค้ดของคุณใช้ระบบปฏิบัติการใด คุณอาจเชื่อเพราะคุณกำลังรันโค้ด .Net บางอย่าง นั่นคือ Windows หรือเพราะเป็น Ruby ซึ่งอยู่บน Linux แต่ในท้ายที่สุด คุณไม่แน่ใจ และไม่เป็นผลต่อการพัฒนาของคุณ

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

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

คุณต้องการเซิร์ฟเวอร์กี่เครื่องเพื่อรองรับการรับส่งข้อมูลของคุณ?

หากคุณสามารถตอบคำถามนี้ด้วยการเดาเกี่ยวกับเซิร์ฟเวอร์ X หรือเราต้องการ Y CPU แสดงว่าคุณไม่ได้ทำการพัฒนาแบบไร้เซิร์ฟเวอร์

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

รูปแบบการเรียกเก็บเงินตามการคำนวณ พื้นที่เก็บข้อมูล และเครือข่าย ไม่ใช่เซิร์ฟเวอร์ ซีพียู และฮาร์ดไดรฟ์

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

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

ว่างที่ศูนย์

การเปลี่ยนแปลงที่สำคัญอื่นๆ ในระบบไร้เซิร์ฟเวอร์คือเมื่อแอปของคุณไม่ได้ใช้งาน แอปจะปรับขนาดเป็นศูนย์โดยอัตโนมัติ เนื่องจากคุณจะไม่ถูกเรียกเก็บเงินโดย CPU แต่ด้วยการคำนวณ ดังนั้นเมื่อคุณไม่ได้ใช้มัน ค่าใช้จ่ายของคุณจึงเป็นศูนย์

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

คุณสามารถคิดได้เล็กน้อยเหมือนร้านขายของชำ หน้าที่ของพวกเขาคือดูแลสต๊อกนมให้เต็มร้าน เพื่อที่เมื่อคุณในฐานะลูกค้ากระหายน้ำ คุณสามารถแวะเข้าไปซื้อนมเพื่อดื่มได้ แล้วจากไป คุณไม่ต้องจ่ายเงินล่วงหน้าเพื่อซื้อนม และคุณไม่ต้องจ่ายหากพวกเขามีนมที่ไม่ดีเพราะไม่มีใครซื้อ นั่นคือทั้งหมดธุรกิจของร้านขายของชำคือเพื่อให้แน่ใจว่าพวกเขามีสินค้าคงคลังในขณะที่ระมัดระวังไม่ให้ล้นเกินและเสียนมที่เน่าเสีย สิ่งที่คุณรู้ก็คือพวกเขามีสิ่งที่คุณต้องการเมื่อคุณต้องการ และส่วนที่เหลือจะลดความซับซ้อนของความกังวลของคุณ

การประนีประนอมสำหรับเซิร์ฟเวอร์ไร้เซิร์ฟเวอร์

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

แทนที่การล็อคอินของระบบปฏิบัติการด้วยการล็อคอินของผู้ให้บริการคลาวด์

ในรุ่นอื่นๆ คุณมีข้อแลกเปลี่ยนและข้อจำกัดต่างๆ เนื่องจากระบบปฏิบัติการหรือเซิร์ฟเวอร์ที่โค้ดของคุณทำงาน ขณะนี้เฟรมเวิร์กแบบไร้เซิร์ฟเวอร์ช่วยปลดภาระความรับผิดชอบนี้ให้กับผู้ให้บริการ มีข้อจำกัดใหม่ๆ ที่คุณต้องปฏิบัติตาม

ณ ตอนนี้ ยังไม่มีชุดมาตรฐานที่ตกลงกันซึ่งกำหนดข้อจำกัดและการรับประกันระหว่างผู้ให้บริการ นั้นก็หมายความเหมือนกับว่าในอดีตการย้ายแอพพลิเคชั่นจาก Windows ไปเป็น Linux นั้นยากเพียงใด ตอนนี้คุณจะต้องเผชิญกับสิ่งนั้นเมื่อพยายามย้ายแอปแบบไร้เซิร์ฟเวอร์ของคุณจากระบบคลาวด์ของ Google ไปยังของ Amazon

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

มองเห็นประสิทธิภาพและต้นทุนน้อยลง

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

ด้วยโมเดลแบบไร้เซิร์ฟเวอร์ การเพิ่มประสิทธิภาพจะเปลี่ยนเป็นจำนวนการเรียกใช้การคำนวณ เครือข่าย และ API ที่โค้ดของคุณใช้ เพื่อความเป็นธรรมสิ่งเหล่านี้เกี่ยวข้องกับ CPU และ RAM ในอดีต แต่เมื่อแยกออกไปมากขึ้นก็จะขัดขวางไม่ให้เครื่องมือเหล่านี้มีประโยชน์

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

แอปพลิเคชั่นที่ใช้เวลานานไม่ใช่จุดที่น่าสนใจ

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

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

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