หลายองค์กรในปัจจุบันเริ่มทยอยปรับโครงสร้างระบบ IT ให้ทันสมัยยิ่งขึ้นในรูปแบบของ Microservices และได้มีการนำ Kubernetes เข้ามาใช้เพื่อจัดการกับแอปพลิเคชันภายในระบบ ในเซสชัน “ปรับแอปพลิเคชันให้ทันสมัยด้วยเทคโนโลยี Container และ Serverless” จากงาน TTT Virtual Summit: Enterprise Cloud & Data Center 2022 คุณอุดมศักดิ์ สุขสันติ Solutions Architect จาก Red Hat (Thailand) ชวนเราไปเรียนรู้เกี่ยวกับกับเทคโนโลยี Serverless ในสถาปัตยกรรมแบบ Microservices ทำงานอย่างไร เหมาะกับแอปพลิเคชันแบบไหนบ้าง ทีมงานสรุปมาให้อ่านกันแล้วในบทความนี้
Serverless คืออะไร และอยู่ตรงไหนของระบบ IT ในปัจจุบัน
Serverless คือแนวคิดของการประมวลผลที่มีผู้ให้บริการคลาวด์เป็นผู้จัดสรรและดูแลทรัพยากรต่างๆ ตามความต้องการของระบบในขณะทำงาน ในการใช้งาน ผู้ใช้บริการเพียงนำแอปพลิเคชันหรือฟังก์ชันเข้ามาติดตั้งโดยไม่ต้องยุ่งเกี่ยวกับ Infrastructure เบื้องหลังใดๆ เสมือนไม่มีเซิฟเวอร์ ซึ่งนี่เองเป็นที่มาของชื่อ Serverless
แรกเริ่มเดิมทีนั้นหากองค์กรต้องการพัฒนาระบบ IT นั้นย่อมจะต้องจัดหาฮาร์ดแวร์และดูแลทุกอย่างด้วยตนเอง ถัดมาจึงมาผู้ให้บริการที่จัดตั้ง Data Center ขึ้น และการพัฒนาเทคโนโลยี Virtualization ก็ก่อให้เกิดการเปิดบริการคลาวด์ในรูปแบบต่างๆ ตั้งแต่การให้บริการ Infrastructure ซึ่งเป็นบริการในระยะแรกของคลาวด์ มาจนถึงการให้บริการซอฟต์แวร์ในรูปแบบ Software-as-a-Service
ควบคู่กันนั้นคือแนวคิดในการพัฒนาระบบที่เปลี่ยนไปอย่างมาก นักพัฒนาระบบมองเห็นถึงข้อจำกัดของสถาปัตยกรรมแบบ Monolithic และเริ่มมีแนวคิดในการแบ่งแยกระบบออกมาเป็นระบบย่อยๆ ที่ทำงานบางส่วนจนกระทั่งกลายเป็นระบบย่อยหรือ Service ที่มีหน้าที่เฉพาะเจาะจงและคอยสื่อสารหากันในสถาปัตยกรรมที่เราเรียกว่า Microservices
การมีสถาปัตยกรรมแบบ Microservices นั้นจะช่วยให้องค์กรสามารถพัฒนาระบบได้รวดเร็วยิ่งขึ้น เพราะสามารถใช้ Service เดิมที่มีอยู่เป็นส่วนประกอบของระบบใหม่ๆ อีกทั้งยังง่ายต่อการดูแลรักษาและตรวจสอบปัญหา และยังเพิ่มความยืดหยุ่นให้กับระบบ รองรับเทคโนโลยีใหม่ๆ เช่น Automation อีกด้วย ในบางครั้ง เราจึงอาจพูดกันว่าการปรับโครงสร้างไอทีให้อยู่ในรูปแบบ Microservices เป็นการปรับระบบให้ทันสมัยขึ้นนั่นเอง
Service ในระบบแบบ Microservices ในปัจจุบันนั้นอาจมีหน้าที่เพียงหนึ่งอย่าง อาจเป็นแอปพลิเคชันหนึ่งชิ้น หรือฟังก์ชันบางอย่างทีคอยตอบสนองต่อ Request ที่ได้รับ ซึ่งเทคโนโลยี Serverless นั้นก็ถูกพัฒนาขึ้นมาตอบโจทย์ของ Service ในประเภทนี้ โดยขจัดภาระในการจัดเตรียมทรัพยากรล่วงหน้าออกไป
คุณลักษณะของ Serverless และข้อดี
การทำงานของ Serverless จะเป็นไปในลักษณะของการรับ Request หรือเริ่มทำงานเมื่อมี Event เกิดขึ้น จากนั้นก็จะนำไปประมวลผลเพื่อได้มาซึ่งผลลัพธ์ โดยอาจได้รับ Request ผ่านการสื่อสารทาง API หรือการรับข้อความผ่าน Message Queue เช่น Kafka
Serverless นั้นมีคุณลักษณะ 5 ข้อที่สำคัญ ได้แก่
- Easy to Get Started – ผู้ใช้บริการไม่จำเป็นจะต้องเตรียมทรัพยากรหรือรับภาระเกี่ยวกับ Infrastructure ใดๆ
- Stateless – ทำงานโดยไม่มี State หรืออาจเก็บ State ไว้ที่ส่วนอื่นๆ ภายนอก
- Scale on Demand – สเกลเพิ่มขึ้นหรือลดลงตามการเรียกใช้งาน
- Distributed and Elastic – แยกประมวลผลใน Data Center หรือคลาวด์ที่ต่างๆ เพื่อให้การสเกลเป็นได้ง่าย
- Event Driven – ตอบสนองต่อ Event ที่เกิดขึ้นในระบบ
จากคุณลักษณะ 5 ข้อนี้ ทำให้ Serverless เป็นเทคโนโลยีที่สามารถช่วยให้องค์กรสามารถพัฒนาแอปพลิเคชันได้รวดเร็วยิ่งขึ้น ลดภาระในการจัดการทรัพยากรและดูแล Infrastructure ช่วยลดค่าใช้จ่ายที่เกิดขึ้นในการเตรียมทรัพยากรภายในระบบไว้ในตอนที่ไม่ใช้งาน และในขณะเดียวกันองค์กรก็สามารถมั่นใจได้ว่าทรัพยากรจะเพียงพอต่อ Request ที่ใช้งานจริง เพราะ Serverless สามารถสเกลเพิ่มขึ้นเพื่อรองรับการทำงานที่จำเป็น
Serverless และ Kubernetes
ในปัจจุบัน เราได้เห็นผู้ให้บริการคลาวด์รายใหญ่ทุกรายได้เปิดให้บริการ Serverless เช่น AWS Lambda, Google Cloud Function, และ Azure Function และเทคโนโลยี Serverless ก็ยังมีการพัฒนาอย่างต่อเนื่อง หนึ่งในเป้าหมายของการพัฒนาขั้นต่อไปของ Serverless คือการพัฒนาให้เทคโนโลยีนี้ทำงานร่วมกับระบบ IT ภายในองค์กรได้ดียิ่งขึ้น แน่นอนว่าความต้องการใช้งาน Serverless ร่วมกับเทคโนโลยี Container และระบบจัดการ Container เช่น Kubernetes ซึ่งเป็นพื้นฐานของระบบไอทีจำนวนมากในปัจจุบัน และกำลังจะกลายเป็นมาตรฐานของระบบ IT ทั่วไปก็เป็นหนึ่งในปัจจัยสำคัญในการพัฒนาด้วย
นอกจากการใช้บริการ Serverless จากผู้ให้บริการคลาวด์แล้ว องค์กรยังสามารถใช้ Serveless ในแพลตฟอร์มของตัวเองซึ่งก็มีซอฟต์แวร์และแพลตฟอร์มหลายรายที่รองรับการใช้ Serverless ใน Kubernetes เช่นกัน เช่น Knative, Openfaas, และ Kubeless โดยในการทำงาน ซอฟต์แวร์จะเป็นผู้จัดสรรทรัพยากรภายในระบบให้กับ Container ที่เป็นแอปพลิเคชันหรือฟังก์ชัน Serverless ในตอนที่มีความต้องการใช้งาน โดยอาศัยความสามารถในการจัดการทรัพยากรของ Kubernetes เช่น การทำ Resource Request/Limit, Horizontal Scaling, และ Autoscaling
โดยแพลตฟอร์ม OpenShift นั้นรองรับการ Deploy Container ในรูปแบบ Serverless เป็นที่เรียบร้อยแล้ว
Serverless เหมาะกับแอปพลิเคชันประเภทใด
Serverless นั้นเป็นเทคโนโลยีที่มีคุณสมบัติเฉพาะตัวเหมาะสมกับงานบางประเภท โดยมีการนำไปใช้งานจริงในธุรกิจแล้ว เช่น
- Service หรือแอปพลิเคชันที่มีการใช้งานปริมาณมากในบางช่วงเวลา หรือมี Workload ที่ไม่แน่นอน
- ระบบที่ต้องการใช้งานทรัพยากรอย่างคุ้มค่าที่สุด ไม่ต้องการใช้ทรัพยากรในตอนที่ไม่ทำงาน
- ระบบที่ทำงานแบบ Event-driven จะทำงานเมื่อมี Event เกิดขึ้นเท่านั้น
- การทดสอบระบบ หรือการทดลองใช้งานแอปพลิเคชันหลายเวอร์ชันพร้อมกัน เช่น การทำ A/B Testing
- การพัฒนาระบบที่ไม่ต้องการกังวลเกี่ยวกับการเตรียม Infrastructure และการตั้งค่า Config ใน Kubernetes
ผู้ที่สนใจการทำ Application Modernization สามารถรับชมวิดีโอการบรรยายเรื่อง “ปรับแอปพลิเคชันให้ทันสมัยด้วยเทคโนโลยี Container และ Serverless” โดยคุณอุดมศักดิ์ สุขสันติ Solutions Architect จาก Red Hat (Thailand) ภายในงานสัมมนา TTT Virtual Summit: Enterprise Cloud & Data Center 2022 ที่เพิ่งจัดไปเมื่อวันที่ 21 – 23 มิถุนายน ได้ที่นี่
บถามรายละเอียดเพิ่มเติมได้ที่คุณ Sanjay Sanjay, Market Development Representative จาก Red Hat ได้ที่อีเมล [email protected]