Microservices Architecture

معماری Microservices رویکردی معماری است که Application را به Serviceهای مستقل کوچک (Micro) تقسیم می‌کند و هر Service روی یک قابلیت مشخص تمرکز دارد. این Serviceها در کنار هم کار می‌کنند تا برای End-User مانند یک موجودیت واحد ظاهر شوند. Netflix را در نظر بگیرید: رابط آن به شما اجازه می‌دهد ویدیوها را جست‌وجو، مشاهده و پیش‌نمایش کنید. این قابلیت‌ها احتمالاً توسط Serviceهای کوچک‌تری پشتیبانی می‌شوند که هر کدام یک عملکرد را انجام می‌دهند؛ مانند Authentication، Search و اجرای Preview در مرورگر شما.

این رویکرد معماری اجازه می‌دهد توسعه‌دهندگان قابلیت‌های جدید را بسیار سریع‌تر از زمانی که همه‌چیز Tightly Coupled در یک Application Monolithic بود، منتشر یا به‌روزرسانی کنند.

مسئله‌ای که حل می‌کند

Application از بخش‌های مختلفی تشکیل شده که هر کدام مسئول یک قابلیت خاص هستند. تقاضا برای یک قابلیت خاص لزوماً طبق تقاضا برای بخش‌های دیگر App تغییر نمی‌کند. به مثال Netflix برگردیم: فرض کنید پس از یک کمپین بازاریابی بزرگ، Netflix جهش بزرگی در Signup تجربه می‌کند، اما پخش ویدیو در ساعات اولیه روز تقریباً ثابت می‌ماند. افزایش Signup به ظرفیت بیشتر برای Signup نیاز دارد. در رویکرد سنتی (Monolithic)، برای پاسخ به افزایش، باید کل App را Scale می‌کردیم؛ کاری بسیار ناکارآمد از نظر منابع.

معماری‌های Monolithic همچنین باعث می‌شود توسعه‌دهندگان راحت‌تر در دام Pitfallهای طراحی بیفتند. چون تمام کد در یک مکان است، راحت‌تر می‌توان کد را Tightly Coupled کرد و اعمال اصل جداسازی وظایف سخت‌تر می‌شود. همچنین Monolithها اغلب ایجاب می‌کنند توسعه‌دهندگان پیش از اعمال هر تغییری کل Codebase را درک کنند. معماری Microservices پاسخی به این چالش‌هاست.

چگونه کمک می‌کند

جدا کردن قابلیت‌ها در Microserviceهای مختلف باعث می‌شود استقرار، به‌روزرسانی و Scale آن‌ها به‌طور مستقل آسان‌تر شود. این رویکرد همچنین اجازه می‌دهد تیم‌های مختلفِ کاری به‌صورت هم‌زمان روی بخش کوچکی از Application بزرگ‌تر کار کنند بدون آن‌که ناخواسته تأثیر منفی روی بخش‌های دیگر بگذارند. هرچند معماری Microservices بسیاری از مشکلات را حل می‌کند، سربار عملیاتی نیز ایجاد می‌کند ـ چیزهایی که باید مستقر و پایش شوند به‌صورت تصاعدی افزایش می‌یابد. بسیاری از فناوری‌های Cloud Native تلاش می‌کنند استقرار و مدیریت Microserviceها را آسان‌تر کنند.


آخرین ویرایش September 26, 2025: [fa] Add Persian to the list of localized languages (6511f5f)