Microfrontend adalah pendekatan arsitektur yang memecah aplikasi frontend menjadi beberapa aplikasi yang independen, yang masing-masing dapat dikembangkan, diuji, dan dideploy secara terpisah. Dengan microfrontend, developer team dapat bekerja secara paralel pada bagian-bagian aplikasi yang berbeda tanpa saling mengganggu.
Kenapa Microfrontend? Kenapa ga Monolith Aja?
Sebenarnya gak ada masalah sama monolith, hanya saja untuk beberapa case, khususnya ketika aplikasi frontend menjadi terlalu besar dan semakin kompleks, maka penggunaan monolith akan sulit dikelola dan dikembangkan, khususnya kalo tim developer udah cukup besar. Masalah-masalah yang biasanya terjadi pada monolith frontend di antaranya adalah:
- Coupling Deployment: Semua tim harus deploy bersamaan. Satu bug kecil di satu fitur bisa menjadi hambatan untuk tim lain yang ingin deploy fitur mereka. Biasanya tim lain harus menunggu tim yang mengalami bug untuk memperbaikinya dulu sebelum mereka bisa deploy atau melakukan rollback pada fitur yang memiliki bug jika memang tidak ada irisan dengan fitur lain.
- Build Time Lama & Bundle Size Bengkak: Semakin banyak fitur ditambahkan ke satu codebase, waktu build makin lama, bundle JS makin besar, dan performa biasanya makin lambat.
- Team Scalability Lemah: Semakin besar tim, semakin sulit untuk mengatur komunikasi dan koordinasi antar tim. Hal ini bisa menyebabkan konflik dalam pengembangan fitur, terutama jika ada banyak tim yang bekerja pada codebase yang sama.
Sebenarnya itu hanya sebagian kecil dari banyak masalah yang bisa muncul pada monolith frontend jika aplikasi dan tim sudah terlalu besar. Nah, di sini microfrontend bisa menjadi salah satu solusi untuk mengatasi masalah-masalah tersebut. Dengan microfrontend, setiap tim bisa fokus pada bagian aplikasi mereka sendiri tanpa harus khawatir tentang konflik dengan tim lain. Setiap tim bisa deploy fitur mereka secara independen, sehingga mengurangi risiko dan meningkatkan kecepatan pengembangan.
Catatan Penting: Ga ada yang lebih baik atau lebih buruk antara monolith dan microfrontend. Keduanya cuma pendekatan arsitektur yang memiliki kelebihan dan kekurangan masing-masing, tergantung dari case dan kondisi dari sebuah project. Pilihan antara keduanya harus disesuaikan dengan kebutuhan proyek, ukuran tim, dan kompleksitas aplikasi.