در سال های اخیر مبحث میکروفرانتاند ها بسیار مورد بحث بوده و در این مقاله قصد دارم درباره این که میکرو فرانتاندها چی هستند، چرا به میکرو فرانتدها نیاز داریم، و روش های متفاوت پیاده سازی آن ها بنویسم. این مبحث کمک بسیاری به من برای نوشتن پیشنهادی برای تغییر در معماری شرکت کرد و امیدوارم در پروژه های شما هم مفید باشه.
در تعریف مارتین فولر از معماری میکرو-فرانتاند به عنوان؛ یک سبک معماری که اپ های مستقل و قابل تحویل فرانتاند باهم در مجموعه بزرگتر ترکیب شده اند، یاد شده است. در تعریف ساده تر، میکرو-فرانتاند، بخشی از صفحه web است( نه محتوای داخلی آن). در معماری میکرو-فرانتاند یک صفحه Host یا یک Container وجود دارد که میتوانید چندین میکروفرانتاند را میزبانی کند. صفحه Host/Container همچنین قابلیت اشتراک گذاری کامپوننت های میکروفرانتاند خود را دارد. برای مثال mfe1 یک هاست هست که یک button از mfe1 دارد.
معماری میکروفرانتاند از سه قسمت تشکیل شده:
جهت برطرف کردن مشکلات توسعه SPA فرانتاند، این معماری عرضه شده است. من رشد یک وب سایت را تا حدی تجربه کرده ام، مقیاس پذیری، تغییر یا حتی آموزش مهندسان جدید در آن بسیار دشوار است. توسعه دهندگان بلاک یکدیگر میشوند تا تغییر کوچکی اعمال شود. برخی از مزایای میکروفرانتاند:
کلید اصلی میکروفرانتاند، ادغام هاست و میکروفرانتاند هاست. دو روش جهت یکپارچه سازی یا ادغام وجود داره:
روش معمول بیشتر کدهای پیاده سازی شده امروزی است. به صورت library اجزا در هاست نصب میشوند. مشابه کتابخانه های npm . مشکلات و مسائل مربوط به این رویکرد بیشتر مربوط به همگام سازی نسخه های مختلف کتابخانه هاست. همچنین استفاده از فناوری های مختلف دشوار است. همچنین سایز بسته نهایی چون شامل همه بسته های قبلی است بزرگ است.علاوه بر این، برای هر تغییر در dependecy ها باید بیلد جدید گرفت. همچنین یک رابطه محکم بین هاست و همه میکروفرانتاندها وجود دارد.
ادغام در زمان اجرا سه نوع ترکیب داره:
در این روش کل عملیات سمت بکند انجام میشه و بکند تصمیم میگیره که کدام میکروفرانتند اجرا بشه. سرور تصمیم میگیره که کدام مسیر نمایش داده شود. با وسیله Nginx reverse-proxy امکان پیاده سازی چنین ترکیبی وجود دارد.
در این رویکرد از CDN (Ex: AWS CloudFront) و Lambda@Edge استفاده میشه. تنظیمات در cdn انجام میشود.
در این روش هاست مجزا بیلد میشود و هر میکروفرانتندی هم به صورت مجزا به عنوان یک پکیج منتشر میشود که هاست میتواند میکروفرانت هایی که نیاز هست رو فراخوانی کند. در این روش هاست و میکرو کاملا از هم جداشده و هیچگونه اشتراکی در بیلد و deploy نداشته و میتوانند از تکنولوژی های متفاوتی استفاده کنند. هاست میتواند ورژن میکروفرانتد را انتخاب کند.
در این زمینه اخیرا Webpack 5 Module Federation Plugin نتایج خوبی ارائه میکند.
منبع: برگرفته از مقاله
#Micro-Frontends, #میکروفرانت