Mikro-frontend: Module Federation
Gunakan Webpack Module Federation atau Vite Federation untuk memecah frontend besar menjadi remote yang dideploy secara independen dan digunakan oleh aplikasi shell.
Mikro-frontend: Module Federation adalah pelajaran Frontend Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Frontend Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Frontend Academy mencakup 4 pelajaran total.
Apa Itu Micro-frontend?
Membagi frontend besar menjadi bagian-bagian yang dikembangkan dan di-deploy secara independen — biasanya satu bagian untuk setiap tim atau domain bisnis. Setiap bagian dapat memiliki framework, repositori, alur deployment, bahkan tumpukan teknologi sendiri. Aplikasi shell menyatukan semuanya saat runtime.
Mengapa Micro-frontend?
Organisasi dengan lebih dari 10 tim frontend menghadapi berbagai keterbatasan: hambatan dari satu repositori, waktu build yang lambat, dan jadwal rilis yang saling bertentangan. Micro-frontend memungkinkan tim melakukan deployment secara independen — dengan konsekuensi arsitektur yang lebih kompleks.
Module Federation — Teknik Inti
Webpack Module Federation (Webpack 5, juga Vite melalui plugin) memungkinkan aplikasi shell mengimpor kode dari remote yang di-deploy secara independen saat runtime. Remote mengekspos modul tertentu; shell menggunakannya.
Konfigurasi Remote
Aplikasi remote mengekspos modulnya melalui config webpack.
// remote app: webpack.config.js
const { ModuleFederationPlugin } = require('webpack').container;
module.exports = {
output: { publicPath: 'https://product-team.example.com/' },
plugins: [
new ModuleFederationPlugin({
name: 'productApp',
filename: 'remoteEntry.js',
exposes: {
'./ProductPage': './src/ProductPage',
'./productClient': './src/api/client'
},
shared: ['react', 'react-dom']
})
]
};Konfigurasi Shell (Host)
Shell menyatakan remote yang diimpornya.
// shell app: webpack.config.js
module.exports = {
plugins: [
new ModuleFederationPlugin({
name: 'shell',
remotes: {
product: 'productApp@https://product-team.example.com/remoteEntry.js'
},
shared: ['react', 'react-dom']
})
]
};Mengimpor Modul Remote
Gunakan impor dinamis — webpack menyelesaikannya melalui runtime federation.
// shell src/App.tsx
import { lazy, Suspense } from 'react';
const ProductPage = lazy(() => import('product/ProductPage'));
function App() {
return (
<Suspense fallback={<Spinner />}>
<ProductPage />
</Suspense>
);
}Federation Vite
Vite mendukung Module Federation melalui plugin @originjs/vite-plugin-federation — dengan API yang serupa.
// vite.config.ts
import federation from '@originjs/vite-plugin-federation';
export default {
plugins: [federation({
name: 'shell',
remotes: { product: 'https://product-team.example.com/remoteEntry.js' },
shared: ['react', 'react-dom']
})]
};Dependensi Bersama
Daftarkan pustaka seperti React dalam shared agar pustaka tersebut tidak dipaketkan dua kali. Runtime federation menyelesaikan versi kompatibel tertinggi saat runtime.
Deployment Independen
Setiap remote memiliki alur build/deployment sendiri. Shell menunjuk ke sebuah URL — mengirim remote baru akan menerapkannya secara otomatis kepada semua konsumen.
Komunikasi Antar-Aplikasi
Jangan berbagi status melalui impor langsung — gunakan event (CustomEvent), bus bersama yang kecil, atau postMessage. Pertahankan batas yang jelas untuk menjaga kemandirian.
Alternatif: iframe dan Web Components
iframe: isolasi terkuat, tetapi navigasi/CSS kurang praktis. Web Components: dukungan bawaan peramban, tanpa terikat pada kerangka kerja, tetapi status bersama terbatas. Module Federation menyeimbangkan isolasi dengan pengalaman pengembang.
Kompromi
Keuntungan: penerapan independen, kebebasan teknologi, dan kemandirian tim. Biaya: penyiapan build yang rumit, konflik dependensi bersama, galat saat dijalankan yang sulit di-debug, serta kompleksitas bundel yang meningkat. Hanya layak untuk organisasi yang benar-benar besar.
Kapan Harus Menghindarinya
Proyek dengan satu tim, MVP, dan situs dengan kurang dari 100 karyawan di tim antarmuka. Beban kompleksitasnya nyata — sebagian besar tim sebaiknya menggunakan monorepo.
Pemeriksaan Singkat
Apa yang dimungkinkan oleh Webpack Module Federation dalam arsitektur mikro-frontend?
Ringkasan: Mikro-frontend
Pisahkan bagian depan berdasarkan tim/domain untuk penerapan independen. Module Federation (plugin webpack 5 / Vite) — shell mengimpor dari aplikasi jarak jauh saat runtime. Aplikasi jarak jauh menyediakan modul; shell mendeklarasikan aplikasi jarak jauh; keduanya berbagi dependensi seperti react. Gunakan peristiwa untuk komunikasi lintas aplikasi. Rumit — gunakan hanya untuk organisasi yang benar-benar besar.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mikro-frontend: Module Federation” gratis?
Ya — teks lengkap “Mikro-frontend: Module Federation” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Frontend Academy, upgrade ke CoddyKit PRO. Kursus Frontend Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mikro-frontend: Module Federation”?
Gunakan Webpack Module Federation atau Vite Federation untuk memecah frontend besar menjadi remote yang dideploy secara independen dan digunakan oleh aplikasi shell. Kamu berlatih Frontend Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Frontend Academy?
Tidak diperlukan pengalaman sebelumnya. Frontend Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Mikro-frontend: Module Federation” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Frontend Academy ini?
Ya. Setiap pelajaran Frontend Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Desain Atomik: Atom Molekul Organisme
- Penyiapan Monorepo dengan Turborepo
- Mikro-frontend: Module Federation
- Struktur Folder Berbasis Fitur