Serverless คืออะไรกัน

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

traditional-vs-serverless


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

เริ่มกันที่ ยุคสมัยก่อน เมื่อเราต้องทำ Server ขึ้นมาเพื่อวาง Web Application กัน เราจะต้องมี Server จริงๆ จึงไปเบิกงบประมาณมาสั่งซื้อ Server เพื่อทำ Hosting ระบบของเราให้ทุกคนเข้าถึงในรูปแบบ Online หรือถ้าเป็นบริษัทขนาดใหญ่ ก็จะมีศูนย์ประมวลผล ห้อง Data center ขนาดใหญ่มี Server จำนวนมากอยู่ในนั้น

ทีนี้คนที่ดูแลก็จะต้องมีความสามารถในการจัดการ ตั้งแต่เรื่องของ Hardware อย่าง Hard disk, RAM, Network Card และอื่นๆอีกเยอะแยะ แล้วก็จะต้องรู้จักกับเรื่องของ Operating System สำหรับทำงานอีก ซึ่งงานนี้ก็ต้องออกมาเป็นแนว System Engineer ซะเป็นหลัก คนฝั่ง Dev ก็จะไม่ค่อยเข้าใจ ส่วนคนที่พอทำได้ก็จะเรียกกันว่า Dev Ops

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

ทีนี้หาก Server ของเราวันดีคืนดี มันเกิดล่มขึ้นมา User เข้าใช้งานระบบกันไม่ได้ ปัญหาเกิดแล้วคราวนี้ กว่าจะหาทางซ่อมได้ หรือจะหา Server สำรองมาใช้งานได้ เล่นเอาปวดหัวกันเลยทีเดียว เราก็เลยยกระดับเรื่องนี้ขึ้นมา โดยเอาความเป็น Virtualization เข้ามาช่วยด้วยเทคโนโลยีที่เรียกกันว่า VM หรือ Virtual Machine ซึ่งมาเป็นพระเอกเลยทีเดียว เรียกได้ว่าคราวนี้ Dev แค่ต้องดูเรื่องของการ Config ตัว VM ก็พอ ไม่ต้องไปลงลึกขนาดเครื่อง Hardware อะไรแล้ว

หนทางดูสวยหรูครับ ทุกคนคิดว่างั้น VM ก็ตอบโจทย์ได้แล้ว ปรากฏว่า ยังไงซะ VM ก็ยังต้องขึ้ยอยู่กับทีมงานผู้เชียวชาญอยู่ดีที่เป็นผู้ดูแล และหากจะเพิ่มขยาย Scale up ตัวระบบก็ยังยากเพราะต้องมานั่ง Set ที่ส่วนของ Hardware อีก ปัญหาเหล่านี้จึงเกิดเป็นแนวทางของ Cloud Computing ขึ้นมาครับ งั้นถ้าเราไม่สะดวกดูแลเอง เราก็ยกเรื่องนี้ไปให้กับผู้เชี่ยวชาญเค้าจัดการสิ จากการเอาเงินทุนทั้งหมดไปวางเครื่องแล้วทำ VM ก็เปลี่ยนเป็น ซื้อ VM ตรงมาจากผู้ให้บริการเลย อยากได้อะไรก็ กดๆๆๆ สั่งๆๆ เดี๋ยวสิ้นเดือนก็จ่ายเงิน

อันนี้ที่คนไทยรู้จักกันดีก็จะเป็น Amazon Web Services หรือ AWS ยอดนิยม และอีกฝั่งคู่แข่งอย่าง Microsoft Azure หรืออีกเจ้าของตลาดอย่าง Google Cloud ทั้งสามค่ายก็ยึดหัวหาดมายาวนาน และหลังจากนั้นมาเราก็จะเริ่มเห็น ผู้ให้บริการ Cloud Hosting ทยอยออกมากันเพียบไปหมด อย่างเช่น Digital Ocean, Linode

แต่การใช้งาน Cloud ก็ยังไม่สามารถตอบโจทย์ได้ทั้งหมด มี Dev อยู่กี่คนกันเชียวที่จะสามารตั้งค่า Server อย่าง Apache, NginX เป็นหรือจะฝั่ง IIS ก็ด้วยเถอะ เพราะถึงยังไงซะ เราก็ยังต้องมานั่งดู CPU, Harddisk, RAM, Traffic, OS และอื่นๆ อะไรกันอยู่ดี ผมว่าในตอนนี้ยังมี Develop อีกมากที่ยังทำเรื่องพวกนี้ไม่ได้ แต่บอกเลยนะครับว่า ตอนนี้ ปัจจุบันนี้ เราเพิ่งมาถึงตรงจุดนี้สำหรับความเป็นเรื่องปรกติ

แต่อนาคตที่กำลังจะมา…ด้วยปัญหาเหล่านี้ จึงมีคนคิดว่างั้น Developer ก็มีหน้าที่แค่เขียน Code ของตัวเองไปก็แล้วกัน เอาเวลาของคุณไปนั่ง Focus อยู่ที่เรื่องของ Code Application เถอะ ทีนี้เลยมาถึงเรื่องของเทคโนโลยีอย่าง Serverless จนได้

ส่วนประกอบของ Serverless ก็จะประกอบไปด้วย

  1. Function-as-a-Service (FaaS) สำหรับ Run ตัว Code ของ Application ที่เราเขียนขึ้นมานั้นเอง
  2. Backend-as-a-Service (BaaS) ส่วนนี้จะเป็นพวก Service ทั้งหลายที่เราสามารถทำงานร่วมด้วยได้เช่นพวก Database, Authentication, Payments, Form, Logging อะไรพวกนี้

แล้วใครบ้างที่ให้บริการ Serverless ที่เห็นๆตอนนี้ก็จะมีรายชื่อใหญ่ๆอย่าง AWS Lambda Functions, Firebase Cloud Functions โดยที่ผมต้องยกนิ้วให้กับ Firebase เลยเพราะมาแรงแซงทุกทางจริงๆ แถมทดลองเล่นได้ฟรีๆด้วย

เมื่อ Serverless เข้ามาอะไรจะเปลี่ยนไปบ้างก็มีทั้งเรื่องของความรวดเร็วในการพัฒนาครับ เพราะว่าเราไม่ต้องมาเตรียมเรื่องของ Server เลย…แล้วยังพวก Database ต่างๆอีก มันทำให้เรามา Focus กันอยู่ที่ความสามารถของฝั่ง Application ของเราตรงๆและยังมี BaaS ต่างๆให้ใช้งานเพียบ ไม่ต้องมานั่งทำเองใหม่ทั้งหมด ลดเวลาและภาระในการพัฒนาไปเยอะ

ไม่ต้องกังวลเรื่องค่าใช้จ่าย เพราะมันจะลดราคาลงไปได้เยอะมาก เพราะ Serverless จะคิดราคาเฉพาะที่ Service ถูกเรียกขึ้นมาใช้งานจริงๆเท่านั้น นอกจากนั้นก็ไม่ได้คิดเงิน ลักษณะแบบ pay-per-trigger เช่นบางส่วนคิดตามจำนวนผู้ใช้งาน ถ้าผู้ใช้ไม่เกินก็ไม่คิดเพิ่ม ทีนี้มันก็ขึ้นกับลักษณะของงานด้วยนะครับ ถ้างานเรามีคนใช้เยอะ ยังไงอันนี้ก็ต้องถูกเรียกเก็บเยอะตามไปด้วยนะ

ไม่ต้องเพิ่งผู้เชี่ยวชาญที่ต้องคอยมานั่งดูแล คอย Set up คอย Optimize อย่างที่บอกไปครับ ว่าเรื่องนี้ยังมีคนเป็นน้อยมาก ลองคิดดูว่าตอนนี้รอบตัวคุ้นมีคนเป็นทั้งหมดนี้แล้วยังเขียน Code เก่งอีกต่างหากมีกันซักกี่คน

การเขียน Code เปลี่ยนไปอย่างแน่นอน เพราะจากเดิมที่เราเขียนเป็น Application ขนาดใหญ่ File เยอะๆ บรรทัดเยอะๆ ก็จะกลายเป็น Code สั้นๆ Upload ขึ้นไปง่ายๆ ส่วนมากก็จะเป็นแนว One Function Per Route เรียก 1 ครั้งก็ทำ 1 อย่างซึ่งตรงนี้ทำให้มันเหมาะกับภาษาที่ทันสมัยมากๆในตอนนี้อย่าง JavaScript หรือ NodeJS มากๆ หรือแม้แต่ภาษาอย่าง Go, Python, Java, C++ ก็ยังทำงานได้ แต่ฝั่งของ C-Sharp นั้นต้องไปบน .NET Core แทนนะครับ

ถ้ามุมของผมเอง Serverless อาจจะยังใช้เวลาอีกหน่อย เพื่อให้คนเข้าใจมันมากขึ้น เพราะอาจจะไม่เหมาะกับการทำงานในลักษณะของ Software Enterprise ใหญ่ๆในทางธุรกิจ แต่ถ้าระบบขนาดเล็กๆ หรือตัวเสริมของ API สำหรับเข้าถึงแบบนี้ก็ไม่น่ายากอะไร หรือจะเป็นพวก Website, Web Content อะไรนี่ ง่ายเลยครับ ตอนนี้ก็ได้แต่รอดูกันต่อไปครับ

อ้างอิงจาก https://aws.amazon.com/th/serverless/

Leave a Reply

Your email address will not be published. Required fields are marked *