Giter Club home page Giter Club logo

cloud_software_farsi's Introduction

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

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

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

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

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

ترجمه این متن در حدود 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
نظارت بر سلامت یک سرویس از طریق یک نقطه پایانی و تشخیص و رفع سریع مشکلات.

cloud_software_farsi's People

Contributors

dannyravi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.