انواع مرسومِ الگوهای طراحی میکروسرویسها که مجموعهای از بهترین روشها و راهحلها برای طراحی و پیادهسازی سیستمهای مبتنی بر معماری میکروسرویس هستند. این الگوها به توسعهدهندگان کمک میکنند تا چالشهای رایج در این حوزه را مدیریت کنند.
این الگو پیشنهاد میکند که سیستم بر اساس دامنههای کسبوکار (Business Domains) به میکروسرویسهای کوچکتر تقسیم شود. هر میکروسرویس مسئول یک بخش خاص از کسبوکار است. این کار باعث میشود که هر سرویس مستقل و متمرکز بر یک وظیفه خاص باشد. البته برای اطلاع بهتر از این رویکرد حتما از مطالب مفید منتشر شده از بنیانگذار آن Eric Evans در وبسایت های مطرح مراجعه نمایید و مطابق صحبت های ارائه کننده این الگوی طراحی در سیستم هایی نظیر راه کارهای جامع کشتیرانی و برنامه ریزی بارگیری آنها که تغییر پذیری بالایی را به صورت ذاتی دارد توصیه میشود.
به عنوان یک نقطه ورود واحد برای تمام درخواستهای کلاینتها عمل میکند. این الگو درخواستها را به میکروسرویسهای مناسب هدایت میکند و همچنین میتواند وظایفی مانند احراز هویت، لاگگیری و تبدیل پروتکلها را انجام دهد. استفاده از این الگو به عنوان مثال در راهکار PGSB از سازمان فناوری اطلاعات کشور و مطابق اسم آن برای ارائه خدمات دولت الکترونیک مناسب بوده و توسط برخی از اپراتورهای آن به کار گرفته شده است.
این الگو برای جلوگیری از شکستهای زنجیرهای در سیستم استفاده میشود. اگر یک میکروسرویس از کار بیفتد، Circuit Breaker درخواستها را به آن سرویس قطع میکند تا از انتشار خطا به سایر بخشهای سیستم جلوگیری شود. پیاده سازی این الگوی طراحی در سیستم های اطلاع رسانی و استعلامی در مقیاس های بزرگ نیز توصیه میشود.
در این الگو، تمام تغییرات حالت سیستم بهصورت رویداد (Event) ذخیره میشوند. این کار به شما امکان میدهد تا در هر لحظه وضعیت سیستم را بازسازی کنید و از آن برای دیباگ یا تحلیل استفاده کنید. البته به کارگیری این الگوی طراحی می تواند در زمینه های و صنایع مختلفی توصیه شود که بعنوان مثال راه کاری های CRM نیز استعداد بالایی برای به کارگیری این الگوی طراحی نیز دارد.
این الگو عملیات خواندن (Query) و نوشتن (Command) را از هم جدا میکند. با این کار میتوانید پایگاه دادههای جداگانه برای خواندن و نوشتن داشته باشید و عملکرد سیستم را بهبود بخشید. راه کارهای مربوط به بازارهای مالی و سرمایه مانند کارگزاری ها بسیار مناسب برای استفاده از این الگوی طراحی هستند.
برای مدیریت تراکنشهای توزیعشده بین چندین میکروسرویس استفاده میشود. هر مرحله از تراکنش توسط یک میکروسرویس انجام میشود و در صورت شکست، مراحل جبرانی (Compensating Transactions) اجرا میشوند. برای تایید نهایی چند مرحله در سرویس های مجزا این الگوی طراحی نیز پرکاربرد و مفید خواهد بود که به عنوان نمونه تراکنش های مالی بین بانکی و افتتاح حساب های دسته ای و... نیز از نمونه کاربردهای این الگوی طراحی هستند.
این الگو برای مدیریت و کشف سرویسها استفاده میشود. هر میکروسرویس هنگام راهاندازی خود را در یک رجیستری ثبت میکند و سایر سرویسها میتوانند از طریق این رجیستری سرویسهای مورد نیاز خود را پیدا کنند.
مقیاس پذیری، پویایی سرویس ها و موارد دیگیری نیز از فواید و کاربردهای این الگوی طراحی در رویکرد میکرو سرویس است.
این الگو شبیه به دیوارههای کشتی است که از گسترش آسیب به کل سیستم جلوگیری میکند. با جداسازی منابع (مانند threadها یا connectionها) برای هر میکروسرویس، از تأثیر خطاهای یک سرویس بر سایر سرویسها جلوگیری میشود. سرویس پرداخت، سرویس کاربران و سرویس محصولات همگی از کاربردها و مثال های خوب برای این الگوی طراحی هستند که با مدیریت و محدودسازی میزان منابع آنها در مدیریت بهتر محیط عملیاتی می توان عمل کرد.
سایر الگوهای قابل استفاده در این رویکرد شامل موارد زیر می شود تا همگی در طراحی و چگونگی پیاده سازی این دست سیستم های نرم افزاری به کمک تیم های توسعه و طراحان/معماران شوند.
الگوهای طراحی میکروسرویسها به شما کمک میکنند تا سیستمهای مقیاسپذیر، قابل اعتماد و انعطافپذیر بسازید. انتخاب الگوی مناسب به نیازهای کسبوکار و پیچیدگی سیستم شما بستگی دارد. اگر سوالی دارید یا نیاز به توضیح بیشتری دارید، همیشه از طریق لینکدین حامد سهامی و در قالب پیام های خصوصی کنارتون هستم. در صورتیکه ادامه و تشریح هر کدوم از بخش های این نوشته براتون جذاب بود حتما بهم اطلاع بدید تا براتون به شکل مفصل تری نوشته های جدیدی رو آماده کنم. ;)