Masoud
Masoud
خواندن ۲ دقیقه·۳ سال پیش

میکرو-فرانت‌اند ها: چی، چرا و چطور؟

در سال های اخیر مبحث میکروفرانت‌اند ها بسیار مورد بحث بوده و در این مقاله قصد دارم درباره این که میکرو فرانت‌اندها چی هستند، چرا به میکرو فرانتدها نیاز داریم، و روش های متفاوت پیاده سازی آن ها بنویسم. این مبحث کمک بسیاری به من برای نوشتن پیشنهادی برای تغییر در معماری شرکت کرد و امیدوارم در پروژه های شما هم مفید باشه.

میکرو-فرانت‌اند چیه؟

در تعریف مارتین فولر از معماری میکرو-فرانت‌اند به عنوان؛ یک سبک معماری که اپ های مستقل و قابل تحویل فرانت‌اند باهم در مجموعه بزرگتر ترکیب شده اند، یاد شده است. در تعریف ساده تر، میکرو-فرانت‌اند، بخشی از صفحه web است( نه محتوای داخلی آن). در معماری میکرو-فرانت‌اند یک صفحه Host یا یک Container وجود دارد که میتوانید چندین میکروفرانت‌اند را میزبانی کند. صفحه Host/Container همچنین قابلیت اشتراک گذاری کامپوننت های میکروفرانت‌اند خود را دارد. برای مثال mfe1 یک هاست هست که یک button از mfe1 دارد.

معماری میکروفرانت‌اند از سه قسمت تشکیل شده:

  • میکروفرانت‌اندها
  • یک Host یا Container
  • فریم ورک میکروفرانت‌اند، اینجا از Webpack 5 Module Federation Plugin استفاده میکنیم.

چرا میکرو-فرانت‌اند ؟

جهت برطرف کردن مشکلات توسعه SPA فرانت‌اند، این معماری عرضه شده است. من رشد یک وب سایت را تا حدی تجربه کرده ام، مقیاس پذیری،‌ تغییر یا حتی آموزش مهندسان جدید در آن بسیار دشوار است. توسعه دهندگان بلاک یکدیگر میشوند تا تغییر کوچکی اعمال شود. برخی از مزایای میکروفرانت‌اند:

  • مقیاس پذیری تیم
  • مسولیت یکتا
  • قابل استفاده مجدد
  • مستقل از نوع تکنولوژی: با react یا انگولار یا ویو مهم نیست.
  • یادگیری آسان
  • معماری Domain-Driven

نحوه پیاده سازی میکرو-فرانت‌اند

کلید اصلی میکروفرانت‌اند، ادغام هاست و میکروفرانت‌اند هاست. دو روش جهت یکپارچه سازی یا ادغام وجود داره:

۱- یکپارچه سازی در زمان بیلد (Build-Time):

روش معمول بیشتر کدهای پیاده سازی شده امروزی است. به صورت library اجزا در هاست نصب میشوند. مشابه کتابخانه های npm . مشکلات و مسائل مربوط به این رویکرد بیشتر مربوط به همگام سازی نسخه های مختلف کتابخانه هاست. همچنین استفاده از فناوری های مختلف دشوار است. همچنین سایز بسته نهایی چون شامل همه بسته های قبلی است بزرگ است.علاوه بر این، برای هر تغییر در dependecy ها باید بیلد جدید گرفت. همچنین یک رابطه محکم بین هاست و همه میکرو‌فرانت‌اندها وجود دارد.

۲- پکپارچه سازی در زمان اجرا (Run-Time):

ادغام در زمان اجرا سه نوع ترکیب داره:

۱- روش سمت بکند یا سرورساید:

در این روش کل عملیات سمت بکند انجام میشه و بکند تصمیم میگیره که کدام میکروفرانتند اجرا بشه. سرور تصمیم میگیره که کدام مسیر نمایش داده شود. با وسیله Nginx reverse-proxy امکان پیاده سازی چنین ترکیبی وجود دارد.

۲. روش سمت لبه

در این رویکرد از CDN (Ex: AWS CloudFront) و Lambda@Edge استفاده میشه. تنظیمات در cdn انجام میشود.

3- ترکیب سمت کلاینت

در این روش هاست مجزا بیلد میشود و هر میکروفرانتندی هم به صورت مجزا به عنوان یک پکیج منتشر میشود که هاست میتواند میکروفرانت هایی که نیاز هست رو فراخوانی کند. در این روش هاست و میکرو کاملا از هم جداشده و هیچگونه اشتراکی در بیلد و deploy نداشته و میتوانند از تکنولوژی های متفاوتی استفاده کنند. هاست میتواند ورژن میکروفرانتد را انتخاب کند.

در این زمینه اخیرا Webpack 5 Module Federation Plugin نتایج خوبی ارائه میکند.

منبع: برگرفته از مقاله

#Micro-Frontends, #میکروفرانت

micro frontend
شاید از این پست‌ها خوشتان بیاید