
آموزش پیاده سازی استراتژی مدیریت داده در معماری میکروسرویس ها با ASP.NET Core
آموزش پیاده سازی استراتژی مدیریت داده در معماری میکروسرویس ها با ASP.NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی پیاده سازی استراتژی مدیریت داده در معماری مایکروسرویس ها است که با نام اصلی Implementing a Data Management Strategy for an ASP.NET Core Microservices Architecture از شرکت Pluralsight منتشر شده است.
معماری میکروسرویس ها (Microservices Architecture) چیست؟
توسعه نرم افزارها با روش سنتی و یا همان معماری Monolithic دارای چالش ها و مشکلات مهمی است که معماری مایکروسرویسی تلاش در حل و فصل کردن آنها دارد. در معماری Monolithic امکان مدیریت کردن برنامه در زمان رشد بیش از حد آن عملاً امکان پذیر نخواهد بود. همین دلیل معماری مایکروسرویسی توسعه نرم افزار های بزرگ براساس اصل Single Responsibility Principle که یکی از اصول SOLID می باشد، مطرح شد. در معماری مایکروسرویسی یک نرم افزار بزرگ در قالب مجموعه ای از سرویس های کوچک تر که به صورت loosely coupled پیاده سازی می شوند ایجاد می گردد. این موضوع باعث می شود تا امکان build کردن مایکروسرویس ها و البته deploy کردن آنها به طور مستقل از یکدیگر امکان پذیر بگردد. علاوه بر این، امکان گسترش دادن و scale کردن چنین معماری در مقایسه با معماری Monolithic بسیار ساده تر خواهد بود.

همانطور که گفته شد معماری مایکروسرویسی یک نرم افزار را در قالب مجموعه ای از سرویس هایی که می توانند به صورت مستقل از یکدیگر deploy بگردند پیاده سازی می کند. این مایکروسرویس ها بر اساس قابلیت های تجاری و یا اصطلاحاً business capability ها پیاده سازی می شوند و به صورت خودکار deploy کردن آنها اتفاق می افتد. مایکروسرویس های مختلف دیتابیس های منحصر بفرد خود را دارند و از لحاظ تکنولوژی و یا حتی زبانهای برنامه نویسی نسبت به یکدیگر کاملاً مستقل هستند. استفاده کردن از معماری مایکروسرویسی در نرم افزارهای بزرگ باعث می شود که build کردن و نگهداری کردن قسمت های کوچکتر به مراتب ساده تر بگردد. با استفاده از معماری مایکروسرویسی شما قسمت های مختلف نرم افزار را به صورت جداگانه و تفکیک شده از یکدیگر در کنار چندین میکروسرویس مستقل از یکدیگر پیاده سازی می کنید. هر کدام از این مایکروسرویس ها مسئولیت پیاده سازی بخشی از وظایف سیستم نرم افزاری را به عهده دارند.
استراتژی مدیریت داده (Data Management Strategy) چیست؟
در معماری Monolithic پیاده سازی data consistency و یا سازگاری داده ها با یکدیگر به سادگی امکان پذیر خواهد بود. این موضوع به این دلیل است که تمامی برنامه از یک دیتابیس یکسان استفاده می کند. در معماری میکروسرویسی که در آن هر میکروسرویس دارای دیتابیس منحصر به فرد خود می باشد، داستان کمی متفاوت است. بسته به ساختار نرم افزار تان و یا حتی تعداد مایکروسرویس های موجود ممکن است نیاز باشد که از الگوهای مختلف مدیریت داده و یا data management استفاده کنید. این موضوع نیز ریشه در این قضیه دارند که هر مایکروسرویس دیتابیس منحصر بفرد خود را خواهد داشت.

زمانی که چندین دیتابیس مختلف وجود دارد امکان ایجاد data inconsistency و یا ناسازگاری داده ها وجود دارد. چنین شرایطی مسائل مربوط به consistency به صورت خودکار حل و فصل نمی گردند و باید به طور دقیق مورد بررسی و معماری صحیح قرار بگیرد. انواع مختلفی از الگوهای data management و یا مدیریت داده در معماری مایکروسرویسی بررسی می شوند که تحت نام های مختلفی از قبیل Database Persistent Pattern و Saga Pattern و Shared Database Pattern و API Composition Pattern و CQRS Pattern و Even Sourcing Pattern شناخته می شوند. استفاده کردن از هر کدام از این الگوها نیاز به بررسی دقیق تر نرم افزار مورد نظر شما را دارد.
انتخاب محل ذخیرهسازی داده در معماری میکروسرویسهای مبتنی بر Azure
در آموزش Implementing a Data Management Strategy for an ASP.NET Core Microservices Architecture، تصمیمگیری درباره محل نگهداری دادهها در یک سیستم توزیعشده بهصورت عملی بررسی میشود. موضوعاتی مانند گزینههای دادههای توزیعشده در Azure، ذخیرهسازی دادههای NoSQL با Azure Cosmos DB و استفاده از Distributed Cache به شما کمک میکنند تفاوت میان نیازهای ذخیرهسازی پایدار و دسترسی سریع به اطلاعات را بهتر بشناسید. همچنین با بررسی Azure Storage برای دادههای غیرساختارمند، با رویکردی آشنا میشوید که برای نگهداری فایلها و محتوایی که ساختار جدولی مشخصی ندارند، کاربرد دارد.
انتخاب یک فناوری ذخیرهسازی برای تمام انواع دادهها همیشه پاسخگوی نیازهای یک معماری میکروسرویسی نیست. در این آموزش، گزینههای مختلف ذخیرهسازی در کنار طراحی Microserviceها بررسی میشوند تا ارتباط میان ماهیت داده و محل نگهداری آن روشنتر شود. برای مثال، Azure Cosmos DB میتواند برای دادههای مبتنی بر مدل NoSQL به کار برود، در حالی که Distributed Cache با هدف دسترسی سریع به اطلاعات موقت استفاده میشود. شناخت این تفاوتها به توسعهدهندگان ASP.NET Core کمک میکند مسئولیتهای مربوط به داده را متناسب با نیاز هر سرویس طراحی کنند و وابستگیهای غیرضروری میان اجزای سیستم را کاهش دهند.
چگونه Eventual Consistency و Integration Eventها را مدیریت کنیم؟
وقتی هر میکروسرویس دادههای خود را مدیریت میکند، تغییر اطلاعات در یک سرویس لزوماً به معنای بهروزرسانی همزمان تمام سرویسهای مرتبط نیست. مفهوم Eventual Consistency در این آموزش به همین مسئله میپردازد و نشان میدهد چگونه میتوان سازگاری دادهها را در شرایطی بررسی کرد که بهروزرسانیها ممکن است با فاصله زمانی میان بخشهای سیستم منتشر شوند. آشنایی با این مفهوم برای طراحی فرایندهایی اهمیت دارد که چند سرویس در آنها نقش دارند و نمیتوان انتظار داشت تمام تغییرات داده در یک عملیات واحد و همزمان انجام شوند.
در ادامه، استفاده از Integration Eventها برای دستیابی به سازگاری نهایی بررسی میشود. این رویدادها امکان انتقال اطلاعات مربوط به تغییرات یک سرویس به بخشهای دیگر را فراهم میکنند تا سرویسهای مصرفکننده بتوانند واکنش مناسب نشان دهند. همچنین پیادهسازی الگوی Unit of Work و بررسی Connection Resiliency در EF Core، جنبههای دیگری از مدیریت عملیات داده و پایداری ارتباط با پایگاه داده را پوشش میدهند. کنار هم قرار گرفتن این مباحث، دید مشخصی درباره چالشهای ثبت تغییرات، انتشار رویدادها و مدیریت خطاهای ارتباطی ایجاد میکند؛ چالشهایی که در طراحی سرویسهای مستقل و هماهنگ با ASP.NET Core اهمیت دارند.
سرفصل مطالب آموزش ویدئویی پیاده سازی استراتژی مدیریت داده در معماری میکروسرویس ها با ASP.NET Core
فصل اول: بررسی این دوره آموزشی- بررسی این دوره آموزشی
- Domain-driven Design بررسی با Bounded Context ها
- پیکربندی داده ها در طراحی Microserviceها
- بررسی مفهوم Polygot Persistence
- بررسی مفهوم Eventual Consistency
- طراحی پرس و جو ها با داده های توزیع شده
- بررسی پروژه این دوره آموزشی
- معماری پروژه نمونه Globoticket
- پیکربندی پروژه این دوره آموزشی
- بررسی نمونه کد در پروژه این دوره آموزشی
- گزینه داده های توزیع شده در Azure
- بررسی Database Mapping با استفاده ازEntity Framework Core
- ذخیره داده های NoSQL با Azure Cosmos DB
- استفاده از Cosmos DB با EF Core
- بررسی Distributed Cache به عنوان فضای ذخیره سازی
- پیاده سازی Azure Cache برای Redis
- ذخیره سازی Azure برای داده های غیرساختارمند و یا Unstructured Data
- سازگاری داده ها و یا Data Consistency در سیستم های توزیع شده
- استفاده از Integration Event ها برای سازگاری نهایی
- بررسی کردن Event Sourcing Pattern
- پیاده سازی الگوی Unit of Work
- بررسی مفهوم Publishing Eventها با الگوی Event Sourcing
- بررسی مفهوم Connection Resiliency در EF Core
- مدیریت کردت Duplicate Message ها
- جمع بندی






