Skip to content

DannyRavi/cloud_software_farsi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

الگو‌های طراحی ابری

در اینجا نسخه پیش از انتشار کتاب معماری‌های میکروسرویس ( دیزاین پترین‌های ابری) آورده شده است. بزودی نسخه چاپی کتاب به صورت pdf در همین جا در اختیار علاقه‌مندان قرار خواهد گرفت.

microservics architect

به طور کلی الگو‌های طراحی در محیط ابری به سه دسته زیر تقسیم می‌شوند:

  • ‏ الگو‌های مدیریت داده
  • ‏ طراحی و پیاده‌سازی
  • ‏ پیام‌رسانی

مدیریت داده عنصر کلیدی در اپلیکیشن‌‌های ابری است و بیشتر ویژگی‌‌های کیفی را تحت تأثیر قرار می‌دهد. داده‌ها معمولاً در مکان‌‌های مختلف و در چندین سرور به دلایلی مانند عملکرد، مقیاس‌پذیری یا در دسترس بودن میزبانی می‌شوند و این کار می‌تواند طیف وسیعی از چالش‌ها را ایجاد کند. به عنوان مثال، بکپارچگی داده‌ها باید حفظ شود و داده‌ها معمولاً باید در مکان‌های مختلف همگام‌سازی شوند.

تاریخچه و اهداف

ترجمه این متن در حدود 2 دو سال پیش شروع شده است و به صورت تدریجی ادامه داشته است و نسخه‌های اولیه از این ترجمه در ویرگول موجود است. با توجه به این که متن‌های مربوط به سیستم‌های توزیع شده و سیستم‌های ابری بسیار متنوع و جدید هستند و نظر به اینکه هدف اصلی این ترجمه‌ها رسیدن به یک کتاب در حوزه الگوهای طراحی ابری است و با توجه به زمان محدود جهت کار روی ترجمه این متن‌ها؛ تصمیم گرفتم هر قسمت از کتاب را به صورت آنلاین منتشر کنم و ترجمه‌های جدیدتر را به تدریج به متن اصلی اضافه کنم. همینطور بزودی نسخه اولیه کتاب به صورت pdf در همین ریپوزیتوری آماده خواهد شد و قطعا این کتاب دارای بروزرسانی‌ها و نسخه‌هایِ مختلفی خواهد بود.

راهنمای مطالعه

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

در زیر الگو‌های کاربردی جهت مدیریت داده در فضای ابری به طور خلاصه معرفی شده است.

همینطور برخی از کدها و برنامه‌های مربوط به این الگوهای ابری در آدرس example موجود است.

الگو‌های مدیریت داده

الگو خلاصه
Cache-Aside داده‌ها را در صورت نیاز در حافظه کَش از یک ذخیره‌گاه داده بارگیری کنید
CQRS
برای جداسازی عملیات خواندن داده از عملیات به‌روزرسانی و نوشتن داده، از رابط‌‌های کاربری (interfaces) جداگانه استفاده کنید.
Event Sourcing
از یک ذخیرگاه‌ برای ثبت کل توالی رخداد‌هایی که بیانگر اعمال انجام‌ برای ثبت کل توالی رخداد‌هایی که بیانگر اعمال انجام‌شده روی داده در یک دامنه (domain) هستند، از یک ذخیره‌ساز صرفا الحاقی (append-only store) استفاده کنید. (append-only store) استفاده کنید.
Index Table
برای بهبود کارایی کوئری‌ها، روی فیلد‌هایی در مخزن‌‌های داده که اغلب اوقات در کوئری ارجاع داده می‌شوند، ایندکس ایجاد کنید.
Materialized View
برای بهبود کارایی کوئری‌ها (queries) زمانی که داده در یکی یا چند مخزن داده به شکل بهینه برای عملیات مورد نیاز فرمت‌بندی نشده است، از نما‌های از پیش پرشده (prepopulated views) بر روی این داده‌ها استفاده کنید.‌
Sharding
یک مخزن داده را به مجموعه‌ای از پارتیشن‌‌های افقی یا شارد (shard) تقسیم کنید.
Static Content Hosting
محتوای استاتیک را در یک سرویس ذخیره سازی مبتنی بر ابر مستقر کنید که می‌تواند آنها را مستقیماً به کاربر تحویل دهد.
Valet Key
از رمز (token) یا کلیدی استفاده کنید که دسترسی مستقیم محدودی به یک منبع یا سرویس خاص را برای کاربرها فراهم می‌کند.

یک طراحی خوب شامل عواملی مانند یکنواختی و انسجام در طراحی و استقرار اجزا، نگهداری‌پذیری برای ساده‌سازی مدیریت و توسعه، و قابلیت استفاده مجدد برای استفاده از اجزا و زیرسامانه‌ها در دیگر برنامه‌ها و سناریوها می‌شود. تصمیماتی که در فاز طراحی و پیاده‌سازی گرفته می‌شوند، تاثیر بسیار زیادی بر کیفیت و هزینه کل مالکیت (TCO) برای برنامه‌ها و سرویس‌‌های ابری میزبانی‌شده دارند.

الگو‌های طراحی و پیاده‌سازی

الگو خلاصه
Ambassador
یک سرویس جانبی که به جای سرویس مصرف‌کننده (consumer) یا برنامه، درخواست ‌های شبکه ‌ای ارسال می‌کند.
Anti-Corruption Layer
پیاده سازی یک لایه نمایشی یا آداپتور بین یک برنامه مدرن و یک سیستم قدیمی.
Backends for Frontends
ایجاد سرویس ‌های پشتیبان مجزا که توسط اپلیکیشن یا رابط ‌های کاربری خاصی مصرف می‌شوند.
CQRS
جداسازی عملیات خواندن داده از عملیات به روزرسانی داده با استفاده از رابط ‌های جداگانه. (Command Query Responsibility Segregation)
Compute Resource Consolidation
ادغام چندین کار یا عملیات در یک واحد محاسباتی واحد.
Edge Workload Configuration
تنوع زیاد سیستم‌ها و دستگاه‌ها در محل تولید می‌تواند پیکربندی بار کاری را به یک مشکل دشوار تبدیل کند.
External Configuration Store
انتقال اطلاعات پیکربندی از بسته استقرار برنامه به یک مکان مرکزی.
Gateway Aggregation
استفاده از یک درگاه برای جمع آوری چندین درخواست جداگانه به یک درخواست واحد.
Gateway Offloading
واگذاری عملکرد سرویس مشترک یا خاص به یک درگاه پروکسی
Gateway Routing
مسیریابی درخواست‌ها به سرویس‌‌های مختلف با استفاده از یک نقطه انتهایی واحد.
Leader Election
هماهنگ سازی اقدامات انجام شده توسط مجموعه ‌ای از نمونه‌‌های تسک همکاری کننده در یک برنامه توزیع شده با انتخاب یک نمونه به عنوان رهبر که مسئولیت مدیریت سایر نمونه‌ها را بر عهده می‌گیرد.
Pipes and Filters
تجزیه یک کار که پردازش پیچیده ‌ای را انجام می‌دهد به مجموعه ‌ای از عناصر جداگانه که قابل استفاده مجدد هستند.
Sidecar
استقرار اجزای یک برنامه در یک فرآیند یا ظرف جداگانه برای ارائه جداسازی و کپسوله سازی.
Static Content Hosting
استقرار محتوای استاتیک در یک سرویس ذخیره سازی ابری که می‌تواند آنها را مستقیماً به کاربر تحویل دهد.
Strangler Fig
مهاجرت تدریجی یک سیستم قدیمی با جایگزینی تدریجی قطعات خاصی از قابلیت‌ها با برنامه‌ها و سرویس ‌های جدید.

الگو‌های پیام رسانی

طبیعت توزیع‌شده‌ی برنامه‌‌های ابری، زیرساختی برای پیام‌رسانی را طلب می‌کند که اجزا و سرویس‌ها را به هم متصل نماید. در حالت ایده‌آل، این اتصال باید با کوپلینگ ضعیف (loose coupling) برقرار شود تا حداکثر مقیاس‌پذیری را به دست آورد. پیام‌رسانی ناهمزمان (Asynchronous messaging) به طور گسترده مورد استفاده قرار می‌گیرد و مزایای زیادی را به همراه دارد، اما در عین حال چالش‌‌هایی را نیز به وجود می‌آورد، مانند ترتیب پیام‌ها، مدیریت پیام‌‌های سمی (poison message)، ایدم‌پوتنسی (idempotency) و موارد دیگر.

الگو خلاصه
Asynchronous Request-Reply
جداسازی پردازش بک‌اند از یک host فرانت‌اند، جایی که پردازش بک‌اند نیاز به ناهمزمان بودن دارد، اما فرانت‌اند همچنان به یک پاسخ واضح نیاز دارد.
Claim Check
تقسیم یک پیام بزرگ به یک Claim Check و یک محموله (payload) برای جلوگیری از تحت‌الشعاع قرار دادن یک باس پیام‌رسانی (message bus).
Choreography
مشارکت هر مؤلفه سیستم در فرآیند تصمیم‌گیری در مورد گردش کار تراکنش تجاری، به جای تکیه بر یک نقطه کنترل مرکزی.
Competing Consumers
اجازه دادن به چندین مصرف‌کننده همزمان برای پردازش پیام‌‌های دریافتی در همان کانال پیام‌رسانی.
Pipes and Filters
اجازه دادن به چندین مصرف‌کننده همزمان برای پردازش پیام‌‌های دریافتی در همان کانال پیام‌رسانی.
Priority Queue
اولویت‌بندی درخواست‌‌هایی که به سرویس‌ها ارسال می‌شوند به گونه‌ای که درخواست‌‌های با اولویت بالاتر سریع‌تر از درخواست‌‌های با اولویت پایین‌تر دریافت و پردازش شوند.
Publisher-Subscriber
این امکان را به یک برنامه می‌دهد که به‌طور ناهمزمان رویدادها را به چندین مصرف‌کننده علاقه‌مند اعلام کند، بدون اینکه فرستنده‌ها را به گیرنده‌ها متصل کند.
Queue-Based Load Leveling
استفاده از یک صف که به عنوان یک بافر بین یک تسک و سرویسی که فراخوانی می‌کند عمل می‌کند تا بار‌های سنگین متناوب را تحمل کند.
Saga
مدیریت انسجام داده در سراسر میکروسرویس‌ها در سناریو‌های تراکنش توزیع‌شده. saga توالی از تراکنش‌‌هایی است که هر سرویس را به‌روزرسانی می‌کند و یک پیام یا رویداد را برای راه‌اندازی مرحله بعدی تراکنش منتشر می‌کند.
Scheduler Agent Supervisor
هماهنگی مجموعه‌ای از اقدامات در سراسر مجموعه‌ای توزیع‌شده از سرویس‌ها و سایر منابع از راه دور.
Sequential Convoy
پردازش مجموعه‌ای از پیام‌‌های مرتبط به ترتیب تعریف‌شده، بدون مسدود کردن پردازش گروه‌‌های دیگر پیام‌ها.

سایر الگوهای کاربردی در معماری ابری

الگو خلاصه
Throttling
کنترل مصرف منابع برای جلوگیری از بارگذاری بیش از حد و تضمین عملکرد و SLA حتی در زمان تقاضای بالا روی سیستم.
Retry Pattern
مدیریت خطاهای موقتی با استفاده از روش تلاش مجدد برای عملیات‌ها و افزایش انعطاف‌پذیری و پایداری سیستم.
Rate Limiting
محدود کردن تعداد درخواست‌ها در یک دوره زمانی و جلوگیری از سوء استفاده و حفظ منابع.
Messaging Bridge
اتصال دو سیستم ناهمگن از طریق پیام رسانی و تسهیل تبادل داده‌ها و همکاری بین آن‌ها.
Geode
استقرار یک سرویس در چندین گره جغرافیایی و بهبود در دسترس بودن و کارایی آن با توزیع پردازش در مناطق مختلف.
Gatekeeper
کنترل دسترسی به یک سرویس با احراز هویت به همراه افزایش امنیت و انطباق با مقررات.
Federated Identity
احراز هویت کاربران در چندین سیستم به همراه تجربه کاربری ساده‌تر و مدیریت هویت متمرکز.
Deployment Stamp Traffic Routing
مسیریابی ترافیک به نسخه‌های مختلف یک برنامه و آزمایش و استقرار تدریجی تغییرات آن.
Circuit Breaker
متوقف کردن موقت عملیات در صورت بروز خطای مکرر و جلوگیری از خطاهای سریالی و حفظ پایداری.
Bulkhead
جداسازی اجزای سیستم برای محدود کردن خطا و افزایش انعطاف پذیری و قابلیت اطمینان آن.
Compensating Transaction Pattern
لغو یا جبران تراکنش‌های ناقص و حفظ انسجام داده‌ها و صحت سیستم.
Health Endpoint Monitoring Pattern
نظارت بر سلامت یک سرویس از طریق یک نقطه پایانی و تشخیص و رفع سریع مشکلات.

HitCount

HitCount

Hits

About

cloud_software_farsi

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published