หมดกังวลกับปัญหาระบบล่ม เมื่อนำเทคโนโลยี Microservices มาใช้งานได้จริง

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

รู้จักกับ Microservices กันก่อน

Microservices แปลตรงตัวก็คือ บริการ (service) ขนาดเล็ก ๆ หลาย ๆ ตัว โดยที่ในแต่ละ service จะมีหน้าที่ในการทำงานเพียงแค่อย่างเดียวเท่านั้น แต่ละ service จะต้องมีอิสระต่อกันไม่ผูกพันกับส่วนอื่น ๆ และอยู่ได้ด้วยตัวเอง (autonomous) การออกแบบ service จะต้องรองรับการทดแทนได้ เพื่อที่ว่า ถ้า service ตัวใดตัวหนึ่งไม่สามารถใช้งานได้ต้องปิดตัวลง หรือต้องการการปรับปรุงใหม่เนื่องด้วยความต้องการ (Requirements) เปลี่ยนแปลง หรือต้องการนำเทคโนโลยีใหม่ ๆ เข้ามาใช้ ระหว่างที่ระงับการใช้งาน service ตัวนั้น service ตัวอื่น ๆ จะต้องยังคงต้องสามารถทำงานต่อไปได้โดยไม่ได้รับผลกระทบใด ๆ

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

ระบบล่มคืออะไร?

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

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