

ลองจินตนาการว่าคุณกำลังดูแลระบบ E-commerce แห่งหนึ่ง วันนี้ธุรกิจต้องการให้ลูกค้าสามารถเลือกประเภทเพลงที่ชอบไว้ในโปรไฟล์ของตัวเอง ฟีเจอร์เล็กๆ น้อยๆ แค่นี้ แต่ด้วยสถาปัตยกรรมแบบเก่าที่แบ่งระบบออกเป็นชั้นๆ ตามหลัก Three-Tiered Architecture งานชิ้นนี้กลับกลายเป็นภารกิจย่อยที่ต้องประสานงานข้ามทีม ทีม Frontend ต้องปรับหน้าจอ, ทีม Backend ต้องเขียน API รับส่งค่า, และทีม DBA ต้องไปแก้ Schema ในฐานข้อมูล ทั้งหมดต้อง Deploy พร้อมกันในลำดับที่ถูกต้อง ถ้ามีอะไรผิดพลาด ทั้งระบบล่ม
นี่คือสภาพที่เกิดขึ้นเมื่อองค์กรจัดโครงสร้างทีมโดยพิจารณาจากความเชี่ยวชาญทางเทคนิค (Technical Silos) มากกว่าโดเมนทางธุรกิจ กฎของ Conway ได้บอกเราไว้ชัดเจนว่า สถาปัตยกรรมของระบบใดๆ มักจะเลียนแบบโครงสร้างการสื่อสารขององค์กรนั้นๆ เมื่อทีมแบ่งแยกกันอยู่ตามฝีมือ ระบบก็จะแบ่งแยกเป็นชั้นๆ จนการปรับเปลี่ยนธุรกิจต้องเสียค่าใช้จ่ายสูงเกินไป

ในอดีต เรามี Service-Oriented Architecture (SOA) ซึ่งแนวคิดพื้นฐานนั้นดีมาก แต่กลับล้มเหลวในทางปฏิบัติ เหตุผลหลักคือการถูกผูกขาดโดยเครื่องมือจาก Vendor ต่างๆ จนหาความเป็นมาตรฐานที่แท้จริงไม่ได้ ทีมปฏิบัติการหน้างานจำนวนมากพยายามทำให้บริการเหล่านั้นเล็กลง แต่สุดท้ายกลับยังคงแชร์ฐานข้อมูลเดียวกัน และยังคงต้อง Deploy พร้อมกันทั้งก้อน
Microservices จึงถือกำเนิดขึ้นมาจากความเจ็บปวดในสนามจริง (Real-world Use) มันไม่ใช่แค่การตั้งชื่อใหม่ แต่เป็นแนวทางเฉพาะเจาะจงที่พัฒนาขึ้นเพื่อทำ SOA ให้สำเร็จ ประดุจดั่งที่ Extreme Programming (XP) หรือ Scrum คือแนวทางเฉพาะตัวของ Agile หนึ่งในหัวใจสำคัญคือแนวคิด Hexagonal Architecture ที่ช่วยแยกส่วน Internal Implementation ออกจาก External Interfaces ทำให้ระบบสามารถซ่อนรายละเอียดที่ไม่ควรรู้ไว้ข้างหลังกำแพง และเปิดเผยเฉพาะสิ่งที่จำเป็นต้องใช้สื่อสารเท่านั้น

สิ่งสำคัญที่สุดที่ควณต้องเข้าใจเกี่ยวกับ Microservices คือ Independent Deployability คือความสามารถในการเปลี่ยนแปลง ทดสอบ และปล่อยระบบบริการหนึ่งๆ ขึ้นสู่ Production ได้โดยที่ไม่ต้องไปยุ่งเกี่ยวกับระบบอื่นๆ เลย นี่ไม่ใช่แค่ความสามารถทางเทคนิค แต่เป็น 'ระเบียบวินัย' (Discipline) ที่ทีมหน้างานต้องยึดถือเป็นมาตรฐานในการปล่อยงาน
เพื่อให้ได้มาซึ่งสิ่งนี้ ระบบต้องมี Loose Coupling อย่างแท้จริง และนี่คือจุดที่การแชร์ฐานข้อมูล (Shared Databases) กลายเป็นศัตรูตัวญาติ เพราะมันเป็นการดึงรายละเอียดภายในของระบบหนึ่งไปผูกกับอีกระบบหนึ่ง ทำให้เกิด Backward-Incompatible Changes ได้ตลอดเวลา การที่ Microservices ต้องเป็นเจ้าของ State หรือข้อมูลของตัวเอง (Owning Their Own State) คือการห่อหุ้มข้อมูล (Encapsulation) ในระดับสถาปัตยกรรม ถ้าระบบอื่นต้องการข้อมูล ก็ต้องเรียกผ่าน API ที่กำหนดไว้ชัดเจนเท่านั้น
ส่วนคำถามยอดฮิตว่า 'Microservices ควรจะมีขนาดเล็กแค่ไหน?' คำตอบคือ ขนาดไม่สำคัญเท่ากับ 'ขอบเขตของ Interface' ที่ควรจะเล็กที่สุดเท่าที่จะเป็นไปได้ James Lewis จาก Thoughtworks เคยกล่าวไว้ชื่ดๆ ว่า 'Microservices ควรมีขนาดใหญ่พอที่หัวของคุณจะเข้าใจมันได้' สรุปคือ มันควรมีขนาดพอที่ทีมจะกุมความเข้าใจในระบบนั้นๆ ไว้ได้อย่างมั่นใจ
เมื่อทีมปฏิบัติการหน้างานเริ่มนำ Domain-Driven Design (DDD) มาใช้ในการหาขอบเขตของระบบ พวกเขาไม่ได้แบ่งระบบตามเทคโนโลยี (UI, Logic, DB) อีกต่อไป แต่หั่นระบบออกเป็น End-to-End Slices ของฟีเจอร์ทางธุรกิจ ทำให้ทุกครั้งที่ธุรกิจต้องการเปลี่ยนแปลง การแก้ไขจะถูกจำกัดอยู่ภายในขอบเขตของทีม Business Domain นั้นๆ เพียงทีมเดียว
แรงเสียดทานและความต้องการที่จะทำงานได้อย่างมีประสิทธิภาพของทีมระดับรากหญ้านี้เอง ที่ค่อยๆ ส่งผลกระทบกลับไปบังคับให้ระดับผู้บริหารต้องปรับโครงสร้างองค์กรจากแนวนอน (Horizontal) มาเป็นแนวตั้ง (Vertical) ตามกรอบของความสามารถทางธุรกิจ การเปลี่ยนผ่านสู่ Microservices จึงเหมือนกับการหมุนปรับจูนไดอัล (Turning a Dial) ไม่ใช่การกดสวิตช์เปิด-ปิด ยิ่งคุณหมุนไดอัลเพิ่ม ความยืดหยุ่นก็เพิ่ม แต่ความซับซ้อนก็จะเพิ่มขึ้นตาม ดังนั้นการเดินทางแบบ Incremental Migration จึงเป็นทางเลือกที่ปลอดภัยที่สุด
ที่ Customix พวกเราได้นำแนวคิดเหล่านี้มาผสานกับการให้บริการรับทำเว็บไซต์และพัฒนาระบบขั้นสูง เพื่อสร้างผลงานที่มี High Cohesion ทางธุรกิจ โดยใช้ Tech Stack สมัยใหม่อย่าง Next.js และ Node.js ควบคู่กับมาตรฐาน ISO/IEC 29110 ในการควบคุมคุณภาพ เพื่อให้แน่ใจว่าทุกโมดูลที่สร้างขึ้น ไม่ว่าจะเป็นระบบหลังบ้าน หรือการออกแบบ UX/UI สามารถขยายตัวและปรับเปลี่ยนได้อย่างอิสระ โดยไม่ทำลายโครงสร้างเดิม พร้อมรองรับ Technical SEO, AEO และ GEO เพื่อยกระดับธุรกิจของคุณสู่มาตรฐานสากลอย่างยั่งยืน

Sam Newman (2021). Building Microservices. O'Reilly Media. (เนื้อหาบางส่วนเรียบเรียงและอ้างอิงโครงสร้างระบบเทคนิคจากหนังสือ: Building Microservices)
ปรึกษาทีมผู้เชี่ยวชาญของเราได้ฟรี ไม่มีค่าใช้จ่าย