All posts / Architecture / №07
Microservices in the frontend: do we really need them?
Micro-frontends pay off for big apps with several teams. For most projects a monorepo, or simply a modular structure inside one app, gets the benefits without the overhead.
This post is written in Arabic; the English summary is above.
في عالم الـ Frontend الحديث، صرنا نسمع كثير عن مفهوم Microservices، مو بس على مستوى الـ Backend، بل كمان على مستوى الواجهة
لكن السؤال الحقيقي:
شو يعني Microservices بالـ Frontend؟ وإيمتى فعلاً نحتاجها؟
شو هي Microservices بالـ Frontend؟
الفكرة ببساطة هي تقسيم التطبيق الكبير إلى أجزاء صغيرة مستقلة (Modules أو Apps)، كل جزء مسؤول عن Feature معينة، ويتم تطويره ونشره بشكل مستقل.
مثلاً:
- صفحة المنتجات → Module مستقل
- صفحة الدفع → Module مستقل
- لوحة التحكم → Module مستقل
إمتى نستخدمها؟
مو كل مشروع بحاجة لهالنوع من التعقيد، نستخدمها عادةً لما:
- المشروع كبير وفيه Teams متعددة
- في حاجة لنشر Features بشكل مستقل
- التطبيق عم يكبر بسرعة وصار صعب إدارته كمشروع واحد
أما بالمشاريع الصغيرة أو المتوسطة؟
غالباً بتكون Overkill وبتزيد التعقيد بدون فائدة حقيقية.
طيب شو قدم Next.js كحل؟
Next.js قدم حل قوي من خلال Monorepo Architecture
شو هو Monorepo؟
هو إنك تحط كل الـ Apps والـ Packages ضمن Repository واحد، مثل:
apps/web
apps/admin
packages/ui
packages/utilsوكل package او app اله ال dependencies الخاصة فيه ويمكن تشغيله بشكل مستقل
ميزاته:
- مشاركة الكود بسهولة (UI components, utils…)
- إدارة dependencies بشكل مركزي
- مناسب لفرق متعددة تشتغل على نفس المشروع
- قابل للتوسع بشكل كبير
بس… هل Monorepo هو الحل دائماً؟
مو بالضرورة 👀
لأنه:
- ممكن يكون معقد بالبداية
- Setup وصيانته تحتاج خبرة
- مو مناسب لكل الفرق أو المشاريع
الحل الأبسط
بدل ما تروح مباشرة لـ Monorepo، ممكن تبدأ بـ: Modular Architecture داخل نفس المشروع
يعني تقسيم المشروع إلى Modules او plugins واضحة:
plugin_dir/auth
plugin_dir/products
plugin_dir/checkoutميزاته:
- بسيط وسهل التطبيق
- يقلل التعقيد
- بيساعد بتنظيم الكود بشكل كبير
- خطوة انتقالية ممتازة قبل Microservices
الخلاصة
- الـ Microservices بالـ Frontend قوية… لكن مو دايماً ضرورية
- Monorepo حل ممتاز للمشاريع الكبيرة
- Modular structure هو الخيار الذكي كبداية
💬 هل اشتغلت قبل على Micro Frontend أو Monorepo؟ وكيف كانت التجربة؟