معماری میکروفرانتاند بهعنوان یکیاز رویکردهای جدید در توسعه نرمافزارهای وب، از مفهوم میکروسرویسها در بکاند الهام گرفته است و هدف آن، ایجاد ساختاری سازمانیافته و ماژولار برای بخش فرانتاند است. در این رویکرد، قسمتهای مختلف یک برنامه وب بهعنوان ماژولهای کوچک و مستقل طراحی میشوند که فرایند توسعه، بهروزرسانی و نگهداری آنهابهصورت جداگانه انجام میشود.
چرا از معماری میکروفرانتاند استفاده میکنیم؟
نیاز به مهاجرت به میکروفرانتاند از جایی شروع میشود که با افزایش مقیاس برنامهها، هماهنگی بین تیمهای توسعه و مدیریت تغییرات به یک چالش تبدیل میشود. سازمانهای بزرگ بهویژه، با برنامههای وب پیچیده که دارای بخشهای متعدد و متنوع هستند، اغلب با مسائل زیر مواجهاند:
- سرعت توسعه: با افزایش حجم کدها و تعداد تیمهای درگیر، توسعه بهصورت متمرکز بهکندی پیش میرود.
- سرعت CI/CD: به دلیل حجم بالای کد و تعداد Dependencyها، سرعت بیلد میتواند کند و زمانبر باشد. این کندی در استفاده از babel و webpack بیشتر رخ میدهد.
- وابستگیهای پیچیده: تغییرات کوچک در یک بخش ممکن است تاثیرات گستردهای بر سایر بخشها داشته باشد، که این موضوع به زمان و تلاش زیادی برای هماهنگی نیاز دارد.
- انعطافپذیری فناوری: به دلیل یکپارچگی ساختار فعلی، امکان استفاده از فناوریهای جدید و بهینهتر محدود میشود.
در چنین شرایطی، معماری میکروفرانتاند میتواند راهحلی برای این چالشها ارائه دهد:
- استقلال تیمی: تیمهای مختلف میتوانند بهصورت مستقل روی ماژولهای مربوط به خود کار کنند، بدون آنکه بر کار دیگر تیمها تأثیر بگذارند.
- توسعه تدریجی: ارتقاء و بهروزرسانی بخشها بهصورت تدریجی و مستقل از هم انجام میشود که باعث افزایش سرعت در ارائه ویژگیهای جدید میشود.
- انتخاب فناوری مناسب: هر ماژول میتواند با فناوری مختص به خود توسعه یابد و این امکان وجود دارد که از بهترین ابزارها و زبانها برای هر بخش بهرهبرداری شود.
پشتیبانی تکنولوژیها از ماژول فدریشن
توسعه ماژول فدریشن توسط Zack Jackson در سال 2018 با نسخه 4.20 Webpack شروع شد و در نسخه Webpack 5 بهصورت رسمی معرفی شد و تا اوایل سال 2024 فقط در وبپک قابل استفاده بود. این ابزار در با هدف استفاده در Bundlerهای دیگر ریدیزاین شد و در حال حاضر بهصورت Built-in داخل Rspack نیز قرار دارد. علاوه بر داشتن پتانسیل استفاده در ابزارهای بیلد دیگر، در نسخه جدید شما میتوانید ماژول فدریشن را بهصورت Runtime استفاده کنید. این ویژگی این امکان را به شما میدهد تا بدون محدودیت Bundler یا تکنولوژی از ماژول فدریشن استفاده کنید و ریسورسهای جاوا اسکریپتی خود را به اشتراک بگذارید.آپدیتهای جدید ماژول فدریشن را میتوانید از اینجا دریافت کنید. تمامی ویژگیهای جدید در این پکیج وجود دارند.
Rspack چیست؟
Rspack یک Bundler جاوا اسکریپت میباشد که مبتنیبر Rust توسعه داده شده و بسیار پرفورمنس بالایی نسبت به Bundlerهای دیگر دارد و سازگاری خوبی با Webpack جهت مهاجرت یا استفاده از پلاگینها دارد. کامپایلر این ابزار بهصورت پیشفرض swc میباشد که نسبت به bable از سرعت خوبی برخوردار است. جزئیات بیشتر در رابطه با Rspack را میتوانید در صفحه مستندات این ابزار مطالعه کنید.
پیشنیازهای استفاده از ماژول فدریشن
ماژول فدریشن میکروفرانتاند را در تکنولوژی و حالتهای زیر میتوانید استفاده کنید:
- پروژههایی که از Webpack 5 یا بالاتر استفاده میکنند.
- سرویسهایی که با NextJS توسعه داده شده باشند. (در Turbopack پشتیبانی نمیشود.)
- پروژههایی که از Rspack یا Rsbuild استفاده میکنند.
- استفاده از ماژول فدریشن بهصورت Runtime بدون محدودیت تکنولوژی و Bundler.
جمعبندی
میکروفرانتاند و ماژول فدریشن مزایای قابل توجهی از نظر انعطافپذیری، قابلیت scalability و توسعه مستقل ارائه میدهد. با این حال، این روش پیچیدگی و چالشهای بالقوهای را در راهاندازی، مدیریت وابستگیها و ادغام معرفی میکند. برنامهریزی دقیق و اجرای صحیح برای بهرهبرداری مؤثر از مزایا ضروری تاثیر نقاط ضعف را میتواند کاهش دهد.
در بخش دوم این مقاله میتوانید درباره تجربه پیادهسازی میکروفرانتاند در همروش بخوانید.