
آموزش مباحث اساسی معماری میکروسرویس ها
آموزش مباحث اساسی معماری میکروسرویس ها یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی مباحث اساسی معماری میکروسرویس ها است که با نام اصلی Microservices Fundamentals از شرکت Pluralsight منتشر شده است.
معماری میکروسرویس ها (Microservices Architecture) چیست؟
معماری مایکروسرویس ها که به آن Microservices Architecture نیز می گوییم یک سبک معماری و یا architectural style می باشد که طبق آن یک برنامه در قالب مجموعهای از سرویس ها ایجاد می شود. این سرویس ها باید دارای شرایط زیر باشند:

- قابلیت نگهداری و تست پذیری بسیار بالا
- loosely coupled بودن
- به طور مستقل از یکدیگر قابل develop و deploy کردن باشند
معماری مایکروسرویس ها باعث می شود که توسعه و تحویل نرم افزارهای پیچیده و بسیار بزرگ به روشی سریع و قابل اطمینان انجام پذیرد. در پیاده سازی معماری مایکروسرویس ها، سرویس ها می توانند هم با پروتکل های از قبیل HTTP/REST و هم پروتکل های asynchronous از قبیل AMQP با یکدیگر ارتباط برقرار کنند. علاوه بر این، سرویس ها می توانند به صورت مستقل از یکدیگر develop و deploy بشوند. هر سرویس دیتابیس انحصاری خودش را دارد و این موضوع باعث میشود که سرویس ها از یکدیگر decoupled بشوند. علاوه بر این data consistency بین سرویس ها با استفاده از الگوی saga پیاده سازی می شود.
اجزای اصلی یک سیستم مبتنی بر Microservices
برای درک بهتر معماری میکروسرویسها، ابتدا باید با نحوه تقسیم یک سیستم نرمافزاری به سرویسهای کوچکتر آشنا شوید. هر سرویس مسئولیت مشخصی بر عهده دارد و میتواند بهصورت مستقل توسعه داده شود. این رویکرد به تیمهای توسعه کمک میکند بخشهای مختلف یک برنامه را با تمرکز بیشتری پیادهسازی و نگهداری کنند. شناخت اصول پایهای این معماری، دید روشنتری درباره ساختار برنامههای توزیعشده و نحوه همکاری اجزای آنها ایجاد میکند.
در یک سیستم مبتنی بر Microservices، سرویسها برای تکمیل فرایندهای نرمافزاری با یکدیگر ارتباط برقرار میکنند. به همین دلیل، طراحی مرزهای هر سرویس و مشخص کردن مسئولیتهای آن اهمیت زیادی دارد. اگر قصد دارید از معماری یکپارچه به سمت سیستمهای توزیعشده حرکت کنید، آشنایی با این مفاهیم به شما کمک میکند تصمیمهای فنی آگاهانهتری بگیرید و ارتباط میان اجزای مختلف برنامه را بهتر درک کنید.
ارتباط بین میکروسرویسها چگونه انجام میشود؟
یکی از موضوعات مهم در طراحی برنامههای مبتنی بر Microservices، نحوه تبادل اطلاعات بین سرویسهاست. هر سرویس میتواند وظیفهای مستقل داشته باشد، اما برای اجرای بسیاری از قابلیتهای یک برنامه، لازم است با سرویسهای دیگر تعامل کند. انتخاب روش مناسب برای این ارتباطها بر نحوه طراحی سیستم، میزان وابستگی اجزا و مدیریت خطاهای احتمالی تأثیر میگذارد. شناخت اصول ارتباطی، بخش مهمی از درک معماری نرمافزارهای توزیعشده است.
هنگام طراحی ارتباطات بین میکروسرویسها، باید به نحوه ارسال درخواستها، دریافت پاسخها و مدیریت شرایطی توجه کرد که یکی از سرویسها در دسترس نیست. وابستگی بیش از حد میان سرویسها ممکن است استقلال آنها را کاهش دهد و نگهداری سیستم را دشوارتر کند. آشنایی با مفاهیم پایهای ارتباطات به توسعهدهندگان کمک میکند ساختاری طراحی کنند که مسئولیت هر سرویس مشخص باشد و تعامل میان بخشهای مختلف به شکل قابلفهمتری انجام شود.
امنیت در معماری Microservices
امنیت در سیستمهای مبتنی بر Microservices فقط به محافظت از یک نقطه ورود محدود نمیشود. از آنجا که برنامه از چند سرویس تشکیل شده است، باید دسترسیها و ارتباطات میان این اجزا نیز بهدرستی مدیریت شوند. هر سرویس ممکن است دادهها یا قابلیتهای متفاوتی در اختیار داشته باشد؛ بنابراین، شناخت اصول امنیتی و توجه به مرزهای دسترسی برای جلوگیری از استفاده غیرمجاز از منابع نرمافزاری اهمیت دارد.
در طراحی امنیت میکروسرویسها، باید مشخص باشد چه کسی یا چه سیستمی اجازه دسترسی به هر قابلیت را دارد و درخواستها چگونه بررسی میشوند. همچنین، ارتباط میان سرویسها باید با توجه به نیازهای امنیتی سیستم طراحی شود. آشنایی با این ملاحظات به توسعهدهندگان کمک میکند امنیت را از مراحل اولیه طراحی در نظر بگیرند، نه اینکه آن را تنها پس از پیادهسازی قابلیتهای اصلی به برنامه اضافه کنند.
استقرار و تحویل میکروسرویسها در محیط اجرا
پس از توسعه سرویسها، باید آنها را به محیطی منتقل کرد که امکان اجرای واقعی برنامه را فراهم میکند. در معماری Microservices، استقرار هر سرویس نیازمند توجه به وابستگیها، تنظیمات و ارتباط آن با سایر اجزای سیستم است. از آنجا که سرویسها میتوانند مستقل توسعه داده شوند، فرایند تحویل و انتشار تغییرات نیز باید با ساختار توزیعشده برنامه هماهنگ باشد تا مدیریت نسخههای مختلف سادهتر انجام شود.
آشنایی با فرایند Deliver کردن میکروسرویسها به درک بهتر چرخه توسعه نرمافزار کمک میکند. توسعهدهنده باید بداند انتشار یک سرویس چه ارتباطی با وضعیت سایر سرویسها دارد و چگونه میتوان تغییرات را با کمترین اختلال در عملکرد سیستم مدیریت کرد. برای افرادی که در ابتدای مسیر یادگیری Microservices هستند، شناخت این مفاهیم پایهای، درک ارتباط میان توسعه، اجرا و نگهداری برنامههای توزیعشده را آسانتر میکند.
سرفصل مطالب آموزش ویدئویی مباحث اساسی معماری میکروسرویس ها
فصل اول: مقدمه دوره آموزشی
- مقدمه
فصل دوم: معرفی کردن ماکروسرویس ها
- مقدمه دوره آموزشی
- مارکوسرویس ها چه هستند؟
- بررسی معضلات مربوط به معماری Monolith
- مزیت های استفاده از ماکروسرویس ها
- چالش های استفاده کردن از ماکروسرویس ها
- معرفی کردن یک Demo Application
فصل سوم: بررسی معماری میکروسرویس ها
- مقدمه
- تکامل یک برنامه به سمت ماکروسرویس ها و حضور انحصاری داده ها در بین آنها
- بررسی معماری EShopOnContainers
- بررسی Component های یک ماکروسرویس
- ماکروسرویس ها می بایست به طور مستقل قابل Deploy کردن باشند (Independently Deployable)
- معرفی کردن مرزهای (Boundary) ماکروسرویس ها
- بررسی Service Boundary ها در EShopOnContainers
- جمع بندی
فصل چهارم: ساختن میکروسرویس ها
- مقدمه
- میزبانی کردن و یا Host کردن ماکروسرویس ها
- بررسی عملی اجرا کردن ماکروسرویس ها به صورت Local در Container ها
- ایجاد کردن یک ماکروسرویس جدید
- تست کردن ماکروسرویس ها
- الگوهای موجود در یک ماکروسرویس
- جمع بندی
فصل پنجم: ارتباطات بین میکروسرویس ها
- مقدمه
- الگوهای ارتباط بین ماکروسرویس ها
- بررسی Synchronous Communication
- بررسی Asynchronous Communication
- بررسی الگوهای Resilient Communication
- بررسی مفهوم Service Discovery
- جمع بندی
فصل ششم: امنیت در ماکروسرویس ها
- مقدمه
- رمز کردن داده ها
- بررسی مبحث Authentication
- بررسی مبحث Authorization
- بررسی امنیت سازی در شبکه
- بررسی مفهوم Defense in Depth
- جمع بندی
فصل هفتم: تحویل دادن و یا Deliver کردن میکروسرویس ها
- مقدمه
- بررسی Automated Deployment
- بررسی Deployment Environment های مختلف
- بررسی Artifact Registries
- بررسی به روز رسانی های مستقل از یکدیگر
- بررسی مانیتورینگ در ماکروسرویس ها
- بررسی عملی Centralized Logging و Health Check ها
- جمع بندی دوره آموزشی







