MF EP.1 MicroFrontend คืออะไร

MF EP.1 MicroFrontend คืออะไร

MicroFrontend คืออะไร?

MicroFrontend เป็นแนวทางการออกแบบ Frontend ที่แบ่งแอปพลิเคชันออกเป็นส่วนย่อยๆ ที่มีความเป็นอิสระ โดยแต่ละส่วนสามารถพัฒนาโดยทีมที่แตกต่างกัน ใช้เทคโนโลยีหรือเฟรมเวิร์กที่หลากหลาย และ deploy แยกจากกันได้ ขณะเดียวกันก็ยังคงทำงานร่วมกันเป็นระบบเดียวอย่างมีประสิทธิภาพ

องค์ประกอบหลัก:

ทำไมต้องใช้ MicroFrontend

ในโลกของการพัฒนาแอปพลิเคชันยุคใหม่ ที่ซึ่ง Frontend มีขนาดใหญ่และซับซ้อนขึ้นทุกวัน MicroFrontend ปรากฏขึ้นเพื่อเป็นแนวทางแก้ไขปัญหาสำคัญต่อไปนี้:

  1. ความยุ่งยากในการพัฒนา - เมื่อหลายทีมต้องทำงานบนโค้ดเบสเดียวกัน
  2. ความท้าทายในการบำรุงรักษา - การอัปเดตระบบขนาดใหญ่ที่เชื่อมโยงกันอย่างซับซ้อน
  3. กระบวนการ Deploy ที่ไม่คล่องตัว - การเปลี่ยนแปลงเล็กน้อยอาจต้อง Deploy ระบบทั้งหมด

MicroFrontend ให้ทางออกด้วยการแปลง monolithic application ให้กลายเป็นชุดของโมดูลอิสระ ที่พัฒนาและ deploy แยกจากกันได้ โดยยังคงทำงานร่วมกันอย่างสมบูรณ์

ข้อดีของ MicroFrontend

  1. แยกส่วนการทำงานชัดเจน:
    • แต่ละโดเมนงานมีหน้าที่เฉพาะ
    • ทีมต่างๆ สามารถพัฒนาแยกกันได้
  2. ความยืดหยุ่นในการจัดการ:
    • อัปเดตและบำรุงรักษาง่ายขึ้น
    • การแก้ไขหนึ่งส่วนไม่กระทบส่วนอื่น
  3. ใช้เทคโนโลยีหลากหลาย:
    • แต่ละส่วนสามารถเลือกใช้เฟรมเวิร์กที่เหมาะสม

ข้อเสียของ MicroFrontend

  1. ความซับซ้อนในการตั้งค่า:
    • ต้องจัดการ Configuration และเครื่องมือร่วมกัน
    • การเริ่มต้นโครงการอาจยุ่งยาก
  2. การทดสอบ:
    • การทดสอบการทำงานร่วมกันระหว่าง MicroFrontend ต่างๆ เป็นเรื่องท้าทาย
  3. Performance Overhead:
    • อาจมีผลกระทบด้านประสิทธิภาพหากออกแบบระบบไม่ดี

วิธีการต่างๆ ในการทำ Microfrontend

Microfrontend เป็นสถาปัตยกรรมที่แบ่งส่วน Frontend ของแอปพลิเคชันออกเป็นส่วนย่อยที่สามารถพัฒนาและปรับใช้แยกกันได้ โดยแต่ละส่วนอาจใช้เทคโนโลยีต่างกัน วิธีการหลักๆ มีดังนี้:

1. Module Federation (Webpack 5+)

ใช้เครื่องมือของ Webpack 5 ในการแชร์โมดูลระหว่างแอปพลิเคชันย่อยผ่านการกำหนดค่า Remote Entry แอปหลัก (Host) สามารถดึงโค้ดจากแอปรอง (Remote) แบบไดนามิกได้

2. Iframe

ใช้แท็ก <iframe> เพื่อฝังแอปพลิเคชันย่อยไว้ในหน้าเว็บหลัก

3. Web Components

สร้างคอมโพเนนต์ด้วยมาตรฐานเว็บ (Custom Elements) ที่ทำงานข้ามเฟรมเวิร์กได้

4. Server-Side Composition

รวมส่วนประกอบ Frontend บนเซิร์ฟเวอร์ก่อนส่งให้ผู้ใช้ โดยใช้เทคนิคเช่น SSI (Server Side Includes) หรือ ESI (Edge Side Includes)

5. Build-Time Integration

แยกส่วน Frontend เป็น Package (เช่น npm) และนำเข้ามารวมกันในขั้นตอน Build

เปรียบเทียบ

วิธีการความซับซ้อนการแยกทีมประสิทธิภาพ
Module Federationสูงดีสูง
Iframeต่ำดีมากปานกลาง
Web Componentsปานกลางดีสูง
Server-Side Compositionปานกลางปานกลางสูง

คำแนะนำ: เลือกวิธีตามขนาดโครงการ ความต้องการของทีม และข้อจำกัดทางเทคนิค เช่น หากต้องการแยกทีมงานชัดเจนและใช้เทคโนโลยีหลากหลาย Module Federation อาจเป็นทางเลือกที่ดีที่สุด

Last edited Mar 30