Front End Web Application แบบ Monolithic กับแบบ Microservice
Monolithic Front End
เป็น Single UI ที่จะทำการ Integrate ทุกสิ่งทุกอย่างไว้ที่ UI เดียวนี้ทั้งหมด
ข้อดี
- สวยงาม
- แต่ล่ะหน้าจอภายใต้ Single UI นี้ จะมีความสอดคล้องกัน (เพราะ dev โดยทีมเดียวกัน หรือ dev โดยใช้ module ร่วมกัน)
- ง่ายต่อการ Setup and Deployment
- การทำงานภายในทีมง่าย เพราะทำสิ่งเดียวกันแบบเดียวกัน สามารถให้เขียน Code เหมือนกันได้
ข้อเสีย
- เมื่อพัฒนาต่อๆไปความซับซ้อนจะเพิ่มขึ้นเรื่อยๆ
- การเพิ่ม Function หรือ Feature จะใช้เวลานานขึ้น เพราะว่าต้อง Test นานขึ้น หลาย Test Case ขึ้นเรื่อยๆ
- เริ่มงง ว่า Code ใครเป็น Code ใคร หากว่าใช้ Developer หลายๆคนหรือมีการเปลี่ยน Developer ไปจากเดิมในส่วนของ Code นั้นๆ
- ถ้าระบบ Front End ล่ม User ก็จะใช้งานไม่ได้เลย
จะเห็นได้ว่า ข้อเสียนั้น มีและน่ากลัว ยิ่งโดยเฉพาะข้อสุดท้าย ซึ่งส่งผลเสียต่างๆอย่างมากมายต่อการใช้งาน
อ่าวแล้วถ้ามันมีข้อเสียแบบนี้แล้ว เราจะ Desing and Architech Front End ยังไงดีล่ะ
คำตอบ: ปัจจุบันนี้ Trend Microservice Architecture กำลังมา… แต่คำว่า Microservice Architecture ไม่ได้หยุดอยู่ที่ Back End เท่านั้น เราสามารถนำเอามาใช้ที่ Front End ได้ด้วย
Microservice Front End
ในส่วนของ Microservice Front End ก็คือการมองว่า Front End เป็นส่วนประกอบที่อยู่ในแต่ล่ะ Microservice นั่นเอง
ข้อดี
- แยกงานกันชัดเจน, Focus บน Domain ของตนเอง
- เมื่อ Microservice ไหน Down แล้ว ก็จะไม่กระทบกับตัวอื่นๆ
- แยกการทำ Deployment and Expansion ได้อย่างชัดเจน
- ความ Complex ของระบบมีน้อย
ข้อเสีย
- ต่างคนต่างทำ ต่างออกแบบ ทำให้อาจจะมีการใช้ CSS หรือรูปแบบหน้าจอไม่เหมือนกัน ถ้าเกี่ยวกับต้องเอามารวมเป็นระบบเดียวกัน
แล้วเวลา User จะใช้งานล่ะ ต้องเข้าหลายๆระบบ หรือเปล่า
คำตอบคือเปล่า… เราสามารถเขียน Front End อีกตัวนึงขึ้นมา และครอบส่วนต่างๆไว้ แล้วเรียกกันด้วย iframe แต่จะต้องมีการแลกเปลี่ยน token กันหน่อย เพื่อการมี Security
แนวทางในการแลกเปลี่ยน token มีหลายวิธี ซึ่งสามารถหาข้อมูลได้ทั่วๆไป