Serverless คืออะไร
Serverless เป็น Cloud Computing รูปแบบหนึ่ง ที่มีรูปแบบการประมวลผลแบบ “Server ชั่วคราว” กล่าวคือ เมื่อมีความต้องการการประมวลผล ผู้ให้บริการ Cloud Computing จะจองทรัพยากรต่างๆ ที่จำเป็น เช่น CPU, Memory และ Disk Space แล้วสร้าง server ชั่วคราวขึ้นมาเพื่อประมวลผล และเมื่อส่งผลลัพธ์การประมวลผลเสร็จ ก็จะคืนทรัพยากรของ server กลับไป ทำให้ไม่จำเป็นต้องถือครองทรัพยากรสำหรับประมวลผลไว้ตลอด
แตกต่างจากการใช้งาน Cloud Computing ในลักษณะอื่นอย่างไร
เมื่อเทคโนโลยี Virtualization และ Cloud Computing เข้ามามีบทบาทในกระบวนการพัฒนาซอฟต์แวร์มากขึ้นเรื่อยๆ จะเห็นได้ว่าช่วยลดงานทางด้าน server infrastructure ไปได้อย่างมาก ไม่ว่าจะเป็น Virtual Machine (IaaS) ที่เราไม่ต้องสนใจเรื่องการบริหารจัดการ Server แต่โฟกัสอยู่ที่ environment และ Application ที่เราต้องการนำมาใช้งานเท่านั้น การมาของ Serverless Computing ทำให้เราสามารถโฟกัสไปที่ตัว Application ได้โดยตรง โดยที่แทบจะตัดภาระทางด้านการบริหารจัดการ server ออกไปได้เกือบทั้งหมด

สามารถใช้บริการ Serverless ได้จากที่ใดบ้าง
ขอยกตัวอย่างผู้ให้บริการเจ้าใหญ่ที่ให้บริการด้าน Serverless อยู่ ดังนี้
AWS Lambda – ให้บริการโดย Amazon Web Services (AWS) ซึ่งครองตลาด cloud computing อยู่มากที่สุด
Azure Functions – ให้บริการโดย Microsoft Azure
Google Cloud Functions – ให้บริการโดย Google Cloud
ข้อดีของการใช้ Serverless
- ลดค่าใช้จ่าย เพราะผู้ให้บริการส่วนใหญ่จะมีรูปแบบการคิดค่าใช้จ่ายตามที่ประมวลจริง
- ไม่จำเป็นต้องติดตั้งและเตรียม Environment สำหรับประมวลผลโปรแกรม
- ช่วยลดภาระงานทางด้าน server ได้ เนื่องจากไม่มี server ที่ต้องดูแล
- การทำงานถูกออกแบบให้ scale ได้ตั้งแต่แรกและสามารถทำได้โดยอัตโนมัติ จึงไม่ต้องห่วงเรื่องการ scale ในระบบ ในช่วงที่มีผู้ใช้งานจำนวนมากซึ่งอาจจะทำให้ระบบล่มได้
ข้อเสียของการใช้ Serverless
- มีความหน่วงของการประมวลผล ในช่วงที่มีการจองทรัพยากรและสร้าง server ขึ้นมาประมวลผลอยู่บ้าง ทำให้ความเร็วในการตอบสนองจะไม่เร็วเท่ากับการใช้ server ในลักษณะ virtual machine ที่มีการจองทรัพยากรทิ้งไว้ตลอด
- มีข้อจำกัดด้านทรัพยากรของเครื่อง จึงไม่เหมาะกับการประมวลผลที่ต้องใช้ทรัพยากรสูง หรือใช้ระยะเวลาประมวลผลยาวนาน ต้องแก้ปัญหาโดยการออกแบบให้เป็นงานประมวลผลที่เล็กลง มาทำงานประกอบกันแทน
- ผู้พัฒนาต้องปรับเปลี่ยนแนวคิดการออกแบบซอฟต์แวร์ ให้ออกมาในรูปแบบฟังก์ชันการทำงานย่อยๆ แทน
- เมื่อเลือกใช้บริการกับผู้ให้บริการเจ้าใดเจ้าหนึ่งแล้ว จะย้ายไปใช้บริการเจ้าอื่นได้ยาก เนื่องจากตัว software จะถูกพัฒนาให้อยู่ในรูปแบบเฉพาะของผู้ให้บริการนั้นๆ
ทิ้งท้าย
การทำงานแบบ Serverless Computing ถูกออกมาแบบมาให้ตอบโจทย์เรื่อง scalability และเรื่อง server management สามารถลดค่าใช้จ่ายและเวลา ทำให้ลูกค้าและทีมพัฒนาสามารถมุ่งเป้าไปที่การพัฒนาการทำงานของระบบให้ตอบโจทย์ทางธุรกิจมากขึ้นและสามารถย่นระยะเวลาในการส่งมอบซอฟต์แวร์ได้อีกด้วย
Credit: freepik