3 รูปแบบการย้ายระบบไปเป็น Microservices จากเอกสารเรื่อง Blowing Up the Monolith

Microservices

จากเอกสารเรื่อง Blowing Up the Monolith: Adopting a Microservices-Based Architecture 
ทาง KongHQ ทำการอธิบายเกี่ยวกับการนำแนวคิด Microservices มาปรับใช้สำหรับการปรับปรุงระบบเดิมที่มีลักษณะแบบ Monolith ให้ดีขึ้น ว่าควรพิจารณาในเรื่องใดบ้าง
รวมทั้งควรมี strategy ในเรื่องต่าง ๆ ที่ชัดเจน หนึ่งในนั้นคือ Transition strategy

จากเอกสารอธิบายไว้ว่า 

Transition strategy คือรูปแบบในการนำแนวคิดมาปรับใช้กับองค์กรและระบบงาน
โดยแบ่งออกเป็น 3 รูปแบบคือ

  1. Ice Cream Scoop
  2. Lego
  3. Nuclear Option

มาดูรายละเอียดรวมทั้งข้อดีข้อเสียกันนิดหน่อย

รูปแบบที่ 1 Ice Cream Scoop

เป็นรูปแบบการแยกส่วนการทำงานออกมาจากระบบเดิม โดยค่อย ๆ แยกออกมา เหมือนกับการตัก Ice cream มาทีละ scoop

ข้อดีคือ เป็นการทำงานแบบค่อยเป็นค่อยไป ดังนั้นผลกระทบจากการเปลี่ยนแปลงจะน้อยหรือไม่มีเลย ผู้ใช้งานยังใช้งานเช่นเดิมเช่นเดิม ไม่มีผลกระทบหรือน้อยมาก ๆ แต่กว่าจะแยกออกมาหมดก็ต้องใช้เวลามากเช่นกัน !!

รูปแบบที่ 2 Lego

ในระบบงานแบบ Monolith นั้นมีขนาดใหญ่มาก การจะมาแก้ไขหรือปรับปรุงให้ดีขึ้น เป็นเรื่องที่ยากหรือเป็นไปไม่ได้ เลยมีอีกแนวทางคือ อย่าไปยุ่งกับของเดิม แต่ก็อย่าสร้างเพิ่ม

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

รูปแบบที่ 3 Nuclear option

เป็นรูปแบบที่ใช้น้อยมาก ๆ นั่นคือ สร้างระบบใหม่ขึ้นมาเลย ออกแนวทาง ทุบหม้อข้าวหม้อแกงก่อนออกรบนั่นเอง หรืออาจยังคง support ระบบเดิม

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

จากรูปแบบการย้ายไป Microservices ทั้ง 3 แบบ

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