สำรวจ JavaScript Module Federation Containers เพื่อการจัดการแอปพลิเคชันที่มีประสิทธิภาพ เรียนรู้วิธีปรับปรุงการพัฒนา เพิ่มความสามารถในการขยายขนาด และส่งเสริมการทำงานร่วมกันระหว่างทีม
JavaScript Module Federation Container: การจัดการคอนเทนเนอร์แอปพลิเคชัน
ในโลกของซอฟต์แวร์ที่เปลี่ยนแปลงอย่างรวดเร็วในปัจจุบัน การจัดการแอปพลิเคชันขนาดใหญ่และซับซ้อนอาจเป็นความท้าทายที่สำคัญ สถาปัตยกรรมแบบ Monolithic แบบดั้งเดิมมักนำไปสู่วงจรการพัฒนาที่ช้า คอขวดในการปรับใช้ และความยากลำบากในการขยายขนาดส่วนประกอบแต่ละส่วน นี่คือจุดที่ Module Federation และโดยเฉพาะอย่างยิ่ง Module Federation Containers เข้ามามีบทบาท โดยนำเสนอโซลูชันที่ทรงพลังสำหรับการสร้างแอปพลิเคชันที่สามารถขยายขนาดได้ บำรุงรักษาได้ และทำงานร่วมกันได้ บทความนี้จะเจาะลึกแนวคิดของ JavaScript Module Federation Containers สำรวจประโยชน์ การนำไปใช้ และแนวทางปฏิบัติที่ดีที่สุด
Module Federation คืออะไร?
Module Federation คือรูปแบบสถาปัตยกรรม JavaScript ที่มาพร้อมกับ Webpack 5 ซึ่งช่วยให้แอปพลิเคชัน JavaScript ที่สร้างและปรับใช้แยกกันสามารถแบ่งปันโค้ดและฟังก์ชันการทำงานกันได้ในขณะรันไทม์ (runtime) ลองนึกภาพว่ามันเป็นวิธีการเชื่อมโยงแอปพลิเคชันต่างๆ หรือส่วนต่างๆ ของแอปพลิเคชันเข้าด้วยกันแบบไดนามิกในเบราว์เซอร์
สถาปัตยกรรม microfrontend แบบดั้งเดิมมักอาศัยการผสานรวม ณ เวลาสร้าง (build-time integration) หรือโซลูชันที่ใช้ iframe ซึ่งทั้งสองอย่างมีข้อจำกัด การผสานรวม ณ เวลาสร้างอาจนำไปสู่แอปพลิเคชันที่เชื่อมโยงกันอย่างแน่นหนาและการปรับใช้ใหม่บ่อยครั้ง ในขณะที่ iframe แม้จะให้การแยกส่วน แต่ก็มักจะนำมาซึ่งความซับซ้อนในการสื่อสารและการจัดสไตล์
Module Federation นำเสนอโซลูชันที่สวยงามกว่าโดยการเปิดใช้งานการผสานรวมโมดูลที่พัฒนาอย่างอิสระ ณ ขณะรันไทม์ แนวทางนี้ส่งเสริมการใช้โค้ดซ้ำ ลดความซ้ำซ้อน และช่วยให้สถาปัตยกรรมแอปพลิเคชันมีความยืดหยุ่นและขยายขนาดได้มากขึ้น
ทำความเข้าใจ Module Federation Containers
Module Federation Container คือหน่วยที่สมบูรณ์ในตัวเองซึ่งเปิดเผย (expose) โมดูล JavaScript เพื่อให้แอปพลิเคชันหรือคอนเทนเนอร์อื่น ๆ นำไปใช้ได้ มันทำหน้าที่เป็นสภาพแวดล้อมรันไทม์สำหรับโมดูลเหล่านี้ จัดการการพึ่งพา (dependencies) และจัดเตรียมกลไกสำหรับการโหลดและดำเนินการแบบไดนามิก
ลักษณะสำคัญของ Module Federation Container:
- ความเป็นอิสระ: คอนเทนเนอร์สามารถพัฒนา ปรับใช้ และอัปเดตได้อย่างอิสระจากกันและกัน
- โมดูลที่เปิดเผย:แต่ละคอนเทนเนอร์จะเปิดเผยชุดของโมดูล JavaScript ที่แอปพลิเคชันอื่นสามารถนำไปใช้ได้
- การโหลดแบบไดนามิก: โมดูลจะถูกโหลดและดำเนินการ ณ ขณะรันไทม์ ทำให้พฤติกรรมของแอปพลิเคชันมีความยืดหยุ่นและปรับเปลี่ยนได้
- การจัดการการพึ่งพา: คอนเทนเนอร์จัดการการพึ่งพาของตนเองและสามารถแบ่งปันการพึ่งพากับคอนเทนเนอร์อื่นได้
- การควบคุมเวอร์ชัน: คอนเทนเนอร์สามารถระบุได้ว่าแอปพลิเคชันอื่นควรใช้โมดูลที่เปิดเผยของตนในเวอร์ชันใด
ประโยชน์ของการใช้ Module Federation Containers
การนำ Module Federation Containers มาใช้ให้ประโยชน์มากมายสำหรับองค์กรที่สร้างเว็บแอปพลิเคชันที่ซับซ้อน:
1. เพิ่มความสามารถในการขยายขนาด
Module Federation ช่วยให้คุณสามารถแบ่งแอปพลิเคชัน Monolithic ขนาดใหญ่ออกเป็น microfrontends ที่มีขนาดเล็กลงและจัดการได้ง่ายขึ้น microfrontend แต่ละตัวสามารถปรับใช้และขยายขนาดได้อย่างอิสระ ช่วยให้คุณสามารถจัดสรรทรัพยากรได้อย่างเหมาะสมและปรับปรุงประสิทธิภาพโดยรวมของแอปพลิเคชัน ตัวอย่างเช่น เว็บไซต์อีคอมเมิร์ซสามารถแบ่งออกเป็นคอนเทนเนอร์แยกสำหรับรายการสินค้า ตะกร้าสินค้า บัญชีผู้ใช้ และการประมวลผลการชำระเงิน ในช่วงที่มีการซื้อของสูงสุด คอนเทนเนอร์รายการสินค้าและการประมวลผลการชำระเงินสามารถขยายขนาดขึ้นได้อย่างอิสระ
2. ปรับปรุงการทำงานร่วมกัน
Module Federation ช่วยให้หลายทีมสามารถทำงานในส่วนต่างๆ ของแอปพลิเคชันพร้อมกันได้โดยไม่ก้าวก่ายกัน แต่ละทีมสามารถเป็นเจ้าของและบำรุงรักษาคอนเทนเนอร์ของตนเองได้ ซึ่งช่วยลดความเสี่ยงของความขัดแย้งและปรับปรุงความเร็วในการพัฒนา ลองนึกถึงบริษัทข้ามชาติที่ทีมในสถานที่ทางภูมิศาสตร์ต่างๆ รับผิดชอบคุณสมบัติต่างๆ ของเว็บแอปพลิเคชันระดับโลก Module Federation ช่วยให้ทีมเหล่านี้ทำงานได้อย่างอิสระ ส่งเสริมนวัตกรรมและลดการพึ่งพากัน
3. เพิ่มการใช้โค้ดซ้ำ
Module Federation ส่งเสริมการใช้โค้ดซ้ำโดยอนุญาตให้แอปพลิเคชันหรือคอนเทนเนอร์ต่างๆ แบ่งปันส่วนประกอบและยูทิลิตี้ทั่วไป ซึ่งช่วยลดการทำซ้ำของโค้ด ปรับปรุงความสอดคล้อง และทำให้การบำรุงรักษาง่ายขึ้น ลองจินตนาการถึงชุดเครื่องมือภายในที่องค์กรขนาดใหญ่ใช้ ส่วนประกอบ UI ทั่วไป ตรรกะการยืนยันตัวตน และไลบรารีการเข้าถึงข้อมูลสามารถแบ่งปันกันได้ในทุกเครื่องมือโดยใช้ Module Federation ซึ่งช่วยลดความพยายามในการพัฒนาและรับประกันประสบการณ์ผู้ใช้ที่สอดคล้องกัน
4. วงจรการพัฒนาที่เร็วขึ้น
ด้วยการแบ่งแอปพลิเคชันออกเป็นคอนเทนเนอร์ขนาดเล็กและเป็นอิสระ Module Federation ช่วยให้วงจรการพัฒนาเร็วขึ้น ทีมสามารถทำงานซ้ำบนคอนเทนเนอร์ของตนเองได้โดยไม่ส่งผลกระทบต่อส่วนอื่น ๆ ของแอปพลิเคชัน นำไปสู่การเปิดตัวที่รวดเร็วขึ้นและเวลาในการออกสู่ตลาดที่เร็วขึ้น องค์กรข่าวอัปเดตเว็บไซต์ของตนอย่างต่อเนื่องด้วยข่าวด่วนและคุณสมบัติต่างๆ ด้วยการใช้ Module Federation ทีมต่างๆ สามารถมุ่งเน้นไปที่ส่วนต่างๆ ของเว็บไซต์ (เช่น ข่าวโลก, กีฬา, ธุรกิจ) และปรับใช้อัปเดตได้อย่างอิสระ ทำให้มั่นใจได้ว่าผู้ใช้จะสามารถเข้าถึงข้อมูลล่าสุดได้เสมอ
5. การปรับใช้ที่ง่ายขึ้น
Module Federation ทำให้การปรับใช้ง่ายขึ้นโดยอนุญาตให้คุณปรับใช้แต่ละคอนเทนเนอร์ได้อย่างอิสระ ซึ่งช่วยลดความเสี่ยงของความล้มเหลวในการปรับใช้และช่วยให้คุณสามารถเปิดตัวอัปเดตทีละน้อยได้ ลองนึกถึงสถาบันการเงินที่ต้องการปรับใช้อัปเดตกับแพลตฟอร์มธนาคารออนไลน์ของตน ด้วยการใช้ Module Federation พวกเขาสามารถปรับใช้อัปเดตกับคุณสมบัติเฉพาะ (เช่น การชำระบิล, การโอนบัญชี) ได้โดยไม่ต้องทำให้ทั้งแพลตฟอร์มออฟไลน์ ซึ่งช่วยลดการรบกวนผู้ใช้ให้น้อยที่สุด
6. ไม่ขึ้นกับเทคโนโลยี
แม้ว่า Module Federation มักจะเกี่ยวข้องกับ Webpack แต่ก็สามารถนำไปใช้กับ bundlers และเฟรมเวิร์กอื่น ๆ ได้ ซึ่งช่วยให้คุณสามารถเลือกชุดเทคโนโลยีที่ดีที่สุดสำหรับแต่ละคอนเทนเนอร์ได้โดยไม่ถูกจำกัดโดยสถาปัตยกรรมโดยรวมของแอปพลิเคชัน บริษัทอาจเลือกใช้ React สำหรับส่วนประกอบส่วนติดต่อผู้ใช้, Angular สำหรับเลเยอร์การจัดการข้อมูล และ Vue.js สำหรับคุณสมบัติเชิงโต้ตอบ ทั้งหมดนี้อยู่ในแอปพลิเคชันเดียวกันได้ด้วย Module Federation
การนำ Module Federation Containers ไปใช้
การนำ Module Federation Containers ไปใช้เกี่ยวข้องกับการกำหนดค่าเครื่องมือสร้างของคุณ (โดยทั่วไปคือ Webpack) เพื่อกำหนดว่าโมดูลใดควรถูกเปิดเผยและโมดูลใดควรถูกนำไปใช้ นี่คือภาพรวมระดับสูงของกระบวนการ:
1. กำหนดค่า Host Application (ผู้ใช้คอนเทนเนอร์)
Host application คือแอปพลิเคชันที่ใช้โมดูลจากคอนเทนเนอร์อื่น ๆ ในการกำหนดค่า host application คุณต้อง:
- ติดตั้งแพ็คเกจ `webpack` และ `webpack-cli`:
npm install webpack webpack-cli --save-dev - ติดตั้งแพ็คเกจ `@module-federation/webpack-plugin`:
npm install @module-federation/webpack-plugin --save-dev - สร้างไฟล์ `webpack.config.js`: ไฟล์นี้จะมีการกำหนดค่าสำหรับ Webpack build ของคุณ
- กำหนดค่า `ModuleFederationPlugin`: ปลั๊กอินนี้รับผิดชอบในการกำหนดว่าโมดูลใดที่จะใช้จากคอนเทนเนอร์ระยะไกล
ตัวอย่างไฟล์ `webpack.config.js` สำหรับโฮสต์แอปพลิเคชัน:
const ModuleFederationPlugin = require('webpack').container.ModuleFederationPlugin;
const path = require('path');
module.exports = {
entry: './src/index',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
devServer: {
port: 3000,
},
plugins: [
new ModuleFederationPlugin({
name: 'HostApp',
remotes: {
'remoteApp': 'remoteApp@http://localhost:3001/remoteEntry.js',
},
}),
],
};
ในตัวอย่างนี้ `HostApp` ถูกกำหนดค่าให้ใช้โมดูลจากคอนเทนเนอร์ระยะไกลชื่อ `remoteApp` ซึ่งอยู่ที่ `http://localhost:3001/remoteEntry.js` คุณสมบัติ `remotes` จะกำหนดการจับคู่ระหว่างชื่อคอนเทนเนอร์ระยะไกลและ URL ของมัน
2. กำหนดค่า Remote Application (ผู้ให้บริการคอนเทนเนอร์)
Remote application คือแอปพลิเคชันที่เปิดเผยโมดูลเพื่อให้คอนเทนเนอร์อื่น ๆ นำไปใช้ ในการกำหนดค่า remote application คุณต้อง:
- ติดตั้งแพ็คเกจ `webpack` และ `webpack-cli`:
npm install webpack webpack-cli --save-dev - ติดตั้งแพ็คเกจ `@module-federation/webpack-plugin`:
npm install @module-federation/webpack-plugin --save-dev - สร้างไฟล์ `webpack.config.js`: ไฟล์นี้จะมีการกำหนดค่าสำหรับ Webpack build ของคุณ
- กำหนดค่า `ModuleFederationPlugin`: ปลั๊กอินนี้รับผิดชอบในการกำหนดว่าโมดูลใดที่จะเปิดเผยให้คอนเทนเนอร์อื่น ๆ
ตัวอย่างไฟล์ `webpack.config.js` สำหรับแอปพลิเคชันระยะไกล:
const ModuleFederationPlugin = require('webpack').container.ModuleFederationPlugin;
const path = require('path');
module.exports = {
entry: './src/index',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'remoteEntry.js',
libraryTarget: 'system',
},
devServer: {
port: 3001,
},
plugins: [
new ModuleFederationPlugin({
name: 'remoteApp',
filename: 'remoteEntry.js',
exposes: {
'./Button': './src/Button',
},
shared: ['react', 'react-dom'],
}),
],
externals: ['react', 'react-dom']
};
ในตัวอย่างนี้ `remoteApp` ถูกกำหนดค่าให้เปิดเผยโมดูลชื่อ `./Button` ซึ่งอยู่ที่ `./src/Button` คุณสมบัติ `exposes` จะกำหนดการจับคู่ระหว่างชื่อโมดูลและพาธของมัน คุณสมบัติ `shared` จะระบุว่าการพึ่งพาใดควรถูกแบ่งปันกับ host application นี่เป็นสิ่งสำคัญเพื่อหลีกเลี่ยงการโหลดสำเนาของไลบรารีเดียวกันหลายชุด
3. การใช้โมดูลระยะไกลใน Host Application
เมื่อกำหนดค่า host และ remote applications แล้ว คุณสามารถใช้โมดูลระยะไกลใน host application ได้โดยการนำเข้าโดยใช้ชื่อคอนเทนเนอร์ระยะไกลและชื่อโมดูล
ตัวอย่างการนำเข้าและใช้คอมโพเนนต์ `Button` ระยะไกลใน host application:
import React from 'react';
import ReactDOM from 'react-dom';
import RemoteButton from 'remoteApp/Button';
const App = () => {
return (
Host Application
);
};
ReactDOM.render( , document.getElementById('root'));
ในตัวอย่างนี้ คอมโพเนนต์ `RemoteButton` ถูกนำเข้าจากโมดูล `remoteApp/Button` จากนั้น host application สามารถใช้คอมโพเนนต์นี้ได้ราวกับว่าเป็นคอมโพเนนต์ในเครื่อง
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ Module Federation Containers
เพื่อให้แน่ใจว่าการนำ Module Federation Containers ไปใช้ประสบความสำเร็จ ให้พิจารณาแนวทางปฏิบัติที่ดีที่สุดต่อไปนี้:
1. กำหนดขอบเขตที่ชัดเจน
กำหนดขอบเขตระหว่างคอนเทนเนอร์ของคุณให้ชัดเจนเพื่อให้แน่ใจว่าแต่ละคอนเทนเนอร์มีความรับผิดชอบที่กำหนดไว้อย่างดีและมีการพึ่งพากับคอนเทนเนอร์อื่นน้อยที่สุด สิ่งนี้ส่งเสริมความเป็นโมดูลและลดความเสี่ยงของความขัดแย้ง พิจารณาโดเมนทางธุรกิจและฟังก์ชันการทำงาน สำหรับแอปพลิเคชันสายการบิน คุณอาจมีคอนเทนเนอร์สำหรับการจองเที่ยวบิน การจัดการสัมภาระ โปรแกรมสะสมคะแนนลูกค้า เป็นต้น
2. สร้างโปรโตคอลการสื่อสาร
สร้างโปรโตคอลการสื่อสารที่ชัดเจนระหว่างคอนเทนเนอร์เพื่ออำนวยความสะดวกในการโต้ตอบและการแบ่งปันข้อมูล ซึ่งอาจเกี่ยวข้องกับการใช้ events, message queues หรือ shared data stores หากคอนเทนเนอร์ต้องการสื่อสารโดยตรง ให้ใช้ API และรูปแบบข้อมูลที่กำหนดไว้อย่างดีเพื่อให้แน่ใจว่าเข้ากันได้
3. แบ่งปันการพึ่งพาอย่างชาญฉลาด
พิจารณาอย่างรอบคอบว่าการพึ่งพาใดควรถูกแบ่งปันระหว่างคอนเทนเนอร์ การแบ่งปันการพึ่งพาทั่วไปสามารถลดขนาด bundle และปรับปรุงประสิทธิภาพได้ แต่ก็อาจนำมาซึ่งความเสี่ยงของความขัดแย้งด้านเวอร์ชันได้เช่นกัน ใช้คุณสมบัติ `shared` ใน `ModuleFederationPlugin` เพื่อระบุว่าการพึ่งพาใดควรถูกแบ่งปันและควรใช้เวอร์ชันใด
4. ใช้การกำหนดเวอร์ชัน
ใช้การกำหนดเวอร์ชันสำหรับโมดูลที่คุณเปิดเผยเพื่อให้แน่ใจว่าผู้ใช้สามารถใช้เวอร์ชันที่ถูกต้องของแต่ละโมดูลได้ สิ่งนี้ช่วยให้คุณสามารถแนะนำการเปลี่ยนแปลงที่อาจส่งผลกระทบ (breaking changes) ได้โดยไม่กระทบต่อผู้ใช้ที่มีอยู่ คุณสามารถใช้ semantic versioning (SemVer) เพื่อจัดการเวอร์ชันโมดูลของคุณและระบุช่วงเวอร์ชันในการกำหนดค่า `remotes`
5. ตรวจสอบและติดตามประสิทธิภาพ
ตรวจสอบและติดตามประสิทธิภาพของ Module Federation Containers ของคุณเพื่อระบุคอขวดที่อาจเกิดขึ้นและปรับการจัดสรรทรัพยากรให้เหมาะสม ใช้เครื่องมือตรวจสอบเพื่อติดตามเมตริกต่างๆ เช่น เวลาในการโหลด การใช้หน่วยความจำ และอัตราข้อผิดพลาด พิจารณาใช้ระบบบันทึกข้อมูลส่วนกลางเพื่อรวบรวมบันทึกจากคอนเทนเนอร์ทั้งหมด
6. พิจารณาผลกระทบด้านความปลอดภัย
Module Federation นำมาซึ่งข้อพิจารณาด้านความปลอดภัยใหม่ๆ ตรวจสอบให้แน่ใจว่าคุณกำลังโหลดโมดูลจากแหล่งที่เชื่อถือได้และมีมาตรการรักษาความปลอดภัยที่เหมาะสมเพื่อป้องกันไม่ให้โค้ดที่เป็นอันตรายถูกฉีดเข้ามาในแอปพลิเคชันของคุณ ใช้ Content Security Policy (CSP) เพื่อจำกัดแหล่งที่มาที่แอปพลิเคชันของคุณสามารถโหลดทรัพยากรได้
7. ทำให้การปรับใช้เป็นอัตโนมัติ
ทำให้กระบวนการปรับใช้สำหรับ Module Federation Containers ของคุณเป็นอัตโนมัติเพื่อให้แน่ใจว่าการปรับใช้มีความสอดคล้องและเชื่อถือได้ ใช้ CI/CD pipeline เพื่อสร้าง ทดสอบ และปรับใช้คอนเทนเนอร์ของคุณโดยอัตโนมัติ พิจารณาใช้เครื่องมือจัดการคอนเทนเนอร์ เช่น Kubernetes เพื่อจัดการคอนเทนเนอร์ของคุณและการพึ่งพาของมัน
ตัวอย่างกรณีการใช้งาน
Module Federation Containers สามารถใช้ได้ในสถานการณ์ที่หลากหลาย รวมถึง:
- แพลตฟอร์มอีคอมเมิร์ซ: สร้างแพลตฟอร์มอีคอมเมิร์ซแบบโมดูลาร์พร้อมคอนเทนเนอร์แยกสำหรับรายการสินค้า ตะกร้าสินค้า บัญชีผู้ใช้ และการประมวลผลการชำระเงิน
- แอปพลิเคชันทางการเงิน: พัฒนาแพลตฟอร์มธนาคารออนไลน์พร้อมคอนเทนเนอร์แยกสำหรับการจัดการบัญชี การชำระบิล และการจัดการการลงทุน
- ระบบการจัดการเนื้อหา (CMS): สร้างแพลตฟอร์ม CMS ที่ยืดหยุ่นพร้อมคอนเทนเนอร์แยกสำหรับการสร้างเนื้อหา การเผยแพร่เนื้อหา และการจัดการผู้ใช้
- แอปพลิเคชันแดชบอร์ด: สร้างแอปพลิเคชันแดชบอร์ดที่ปรับแต่งได้พร้อมคอนเทนเนอร์แยกสำหรับวิดเจ็ตและการแสดงภาพข้อมูลต่างๆ
- พอร์ทัลองค์กร: พัฒนาพอร์ทัลองค์กรพร้อมคอนเทนเนอร์แยกสำหรับแผนกและหน่วยธุรกิจต่างๆ
ลองพิจารณาแพลตฟอร์มอีเลิร์นนิงระดับโลก แพลตฟอร์มนี้สามารถใช้ Module Federation เพื่อใช้งานหลักสูตรเวอร์ชันภาษาต่างๆ ซึ่งแต่ละเวอร์ชันโฮสต์อยู่ในคอนเทนเนอร์ของตัวเอง ผู้ใช้ที่เข้าถึงแพลตฟอร์มจากฝรั่งเศสจะได้รับบริการคอนเทนเนอร์ภาษาฝรั่งเศสอย่างราบรื่น ในขณะที่ผู้ใช้จากญี่ปุ่นจะเห็นเวอร์ชันภาษาญี่ปุ่น
บทสรุป
JavaScript Module Federation Containers นำเสนอแนวทางที่ทรงพลังและยืดหยุ่นในการสร้างเว็บแอปพลิเคชันที่สามารถขยายขนาดได้ บำรุงรักษาได้ และทำงานร่วมกันได้ ด้วยการแบ่งแอปพลิเคชันขนาดใหญ่ออกเป็นคอนเทนเนอร์ขนาดเล็กและเป็นอิสระ Module Federation ช่วยให้ทีมทำงานได้อย่างมีประสิทธิภาพมากขึ้น ปรับใช้อัปเดตได้บ่อยขึ้น และใช้โค้ดซ้ำได้อย่างมีประสิทธิผลมากขึ้น แม้ว่าการนำ Module Federation ไปใช้จะต้องมีการวางแผนและการกำหนดค่าอย่างรอบคอบ แต่ประโยชน์ที่ได้รับในแง่ของความสามารถในการขยายขนาด การทำงานร่วมกัน และความเร็วในการพัฒนา ทำให้เป็นเครื่องมือที่มีค่าสำหรับองค์กรที่สร้างเว็บแอปพลิบเคชันที่ซับซ้อน โดยการปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดที่ระบุไว้ในบทความนี้ คุณสามารถนำ Module Federation Containers ไปใช้ได้อย่างประสบความสำเร็จและปลดล็อกศักยภาพสูงสุดของมันได้