‫شایافر‬ ‫نیما‬
‫ریزسرویسها‬ ‫معماری‬ ‫اساس‬ ‫بر‬ ‫پذیر‬‫مقیاس‬ ‫افزارهای‬‫نرم‬ ‫تىسعه‬
‫ابری‬ ‫بستر‬ ‫در‬ ‫آن‬ ‫اجرای‬ ‫و‬
‫هن‬ ‫درتاره‬
•َ‫استَدی‬ ‫سیدار‬ ‫فنی‬ ‫ندیر‬
•‫ایدى‬ ‫صبا‬ ‫ساخت‬ ‫زیر‬ ‫ندیر‬
‫چیست؟‬ ‫سرویس‬ ‫ریس‬
•‫اجزای‬ ٌ‫ب‬ ‫آن‬ ‫شکستن‬ ٍ ‫بزرگ‬ ‫افزاری‬ ‫نرم‬ ‫يای‬‫سیستو‬ ‫کردن‬ ‫ناژٍالر‬ ‫جًت‬ ‫رٍیکردی‬
‫است‬ ‫نتفاٍت‬ ‫عهلکرد‬ ‫با‬ ‫نستقل‬.
•‫یَنیکس‬ ٌ‫فلسف‬
•‫برساند‬ ‫انجام‬ ٌ‫ب‬ ‫احسنت‬ َ‫نح‬ ٌ‫ب‬ ‫را‬ ‫کار‬ ‫آن‬ ٍ ‫ديد‬ ‫انجام‬ ‫کار‬ ‫یک‬ ‫باید‬ ‫تنًا‬ ٌ‫برنان‬ ‫ير‬.
•‫باشند‬ ٌ‫داشت‬ ‫را‬ ‫یکدیگر‬ ‫با‬ ‫تعانل‬ ‫قابلیت‬ ‫باید‬ ‫يا‬ٌ‫برنان‬.
•‫شَد‬ ‫استفادى‬ ‫عهَنی‬ ‫ٍاسط‬ ‫یک‬ ‫از‬.Text Stream‫یَنیکس‬ ‫در‬ ‫يا‬
•‫سازنان‬ ‫یک‬ ‫ساختار‬
•‫نگًبانی‬
•ٌ‫دبیرخان‬
•‫حسابداری‬ ٍ ‫نالی‬
•‫فنی‬
•‫تدارکات‬
‫ها؟‬‫ریسسرویس‬ ‫چرا‬
•‫بازار‬ ‫فرصت‬ ٍ ‫بزرگ‬ ‫يای‬‫پرٍژى‬ ‫تر‬‫چابک‬ ٌ‫تَسع‬
•‫نختلف‬ ‫يای‬‫تکنَلَژی‬ ‫از‬ ‫استفادى‬
•‫قدیهی‬ ‫افزاريای‬ ‫نرم‬ ‫شدن‬ ‫جایگزین‬ ‫یا‬ ‫تکهیل‬ ٌ‫ب‬ ‫کهک‬
•‫پایدار‬ ٌ‫تَسع‬(‫نعهاری‬ ‫زٍال‬ ‫عدم‬)‫سیستو‬ ‫از‬ ‫نگًداری‬ ٌ‫دغدغ‬ ‫کايش‬ ٍ
•‫نداٍم‬ ‫تحَیل‬(Continuous Delivery)‫سریعتر‬ ‫استقرار‬ ٍ
•‫پذیری‬ ‫دسترس‬ ٍ ‫پذیری‬ ‫نقیاس‬
•‫ابری‬ ‫بستر‬ ‫از‬ ‫استفادى‬
•‫بزرگ‬ ‫اینترنتی‬ ‫يای‬‫شرکت‬ ‫گرایش‬
‫ها‬‫ریسسرویس‬ ‫های‬‫چالش‬
•‫يا‬‫سرٍیس‬ ‫رٍابط‬
•ٌ‫دانن‬ ‫کل‬ ٌ‫ب‬ ‫نسبت‬ ‫کلی‬ ‫دید‬
•‫ساخت‬ ‫زیر‬ ٌ‫ب‬ ‫نیاز‬
•‫يا‬ٌ‫نَلف‬ ‫تعدد‬
•‫خَدکار‬ ‫استقرار‬
•‫شدى‬ ‫تَزیع‬ ‫يای‬‫سیستو‬ ‫در‬ ‫ای‬ٌ‫شبک‬ ‫نشکالت‬
‫استفاده‬ ‫نکات‬‫از‬‫ها‬‫ریسسرویس‬
•‫ندارد‬ ‫را‬ ‫دیگر‬ ‫سرٍیس‬ ‫دادى‬ ‫پایگاى‬ ‫از‬ ‫استفادى‬ ‫اجازى‬ ‫سرٍیسی‬ ‫يیچ‬
•‫طریق‬ ‫از‬ ‫فقط‬ ‫يا‬‫سرٍیس‬ ‫بین‬ ‫تعانل‬API
•‫بسازید‬ ‫يو‬ ‫با‬ ‫سازگار‬ ‫را‬ ‫يا‬‫سرٍیس‬
•ٌ‫نشاب‬ ‫فرنت‬ ٍ ‫پرٍتکل‬ ‫با‬ ‫ارتباط‬(‫فرنت‬JSON‫پرٍتکل‬HTTP)
•‫تعریف‬API‫ثابت‬ ‫شیَى‬ ٌ‫ب‬
•‫استاندارد‬ ‫الگ‬ ‫فرنت‬ ‫از‬ ‫استفادى‬ ‫با‬ ‫درخَاستًا‬ ‫ثبت‬
•‫نَجَد‬ ‫ابزاريای‬ ‫با‬ ‫شدن‬ ‫نانیتَر‬ ‫انکان‬(/metrics)
•‫قرارداديای‬API‫کنید‬ ‫تعریف‬ ‫کد‬ ‫در‬
•‫يای‬‫خرٍجی‬ ٍ ‫ٍرٍدی‬API‫ناشین‬ ٍ ‫انسان‬ ‫برای‬ ‫فًو‬ ‫قابل‬
•‫از‬ ‫استفادى‬IDL(Interface Definition Language)
•‫کد‬ ‫در‬ ‫سازی‬ ‫نستند‬
‫ها‬‫ریسسرویس‬ ‫از‬ ‫استفاده‬ ‫نکات‬
•‫باشید‬ ٌ‫داشت‬ ‫نجزا‬ ‫عهلیاتی‬ ٍ ‫تست‬ ‫نحیط‬
•‫عهلیاتی‬ ٍ ‫تست‬ ‫نحیط‬ ٌ‫نشاب‬ ‫پیکربندی‬
‫فرضی‬ ‫آنالین‬ ‫فروشگاه‬
•‫داخلی‬ ‫يای‬‫سیستو‬:
•‫کاربران‬ ‫نام‬ ‫ثبت‬
•‫کاربران‬ ‫ندیریت‬
•‫نحصَالت‬ ‫جستجَی‬
•‫سفارشات‬ ‫لیست‬
•‫سفارش‬ ‫فرآیند‬
‫بیرٍنی‬ ‫يای‬‫سیستو‬:
•‫حسابداری‬
•‫لجستیک‬
‫افسار‬ ‫نرم‬ ‫تجسیه‬
•‫عهلکرد‬ ‫اساس‬ ‫بر‬
•‫نستقل‬ ‫عهلکرديای‬ ‫شناسایی‬
‫نثال‬:
•‫ایهیل‬ ‫دریافت‬ ٍ ‫ارسال‬ ‫سرٍیس‬/Push Notification
•‫فرآیند‬«‫فیديا‬ ‫رسانی‬ ‫رٍز‬ٌ‫ب‬»‫افزار‬ ‫نرم‬ ‫یک‬ ‫در‬Feed Reader(‫دانلَد‬XML‫در‬ ‫درج‬ ٍ ‫تفسیر‬ ،‫يا‬DB)
•‫کاربر‬ ‫رفتار‬ ‫اساس‬ ‫بر‬ ‫نحتَا‬ ‫پیشنًاد‬
‫افسار‬ ‫نرم‬ ‫تجسیه‬
•‫بلَغ‬ ‫اساس‬ ‫بر‬
•‫سیستو‬ ‫بالغ‬ ‫يای‬‫بخش‬ ‫ترکیب‬
•‫خطا‬ ‫نستعد‬ ٍ ‫ناپایدار‬ ٍ ‫نابالغ‬ ‫يای‬‫بخش‬ ‫سازی‬ ‫جدا‬
‫نثال‬:
‫فرآیند‬«‫فید‬ ‫سازی‬ ‫ذخیرى‬»‫افزار‬ ‫نرم‬ ‫یک‬ ‫در‬Feed Reader(‫در‬ ‫فید‬ ‫رسانی‬ ‫رٍز‬ٌ‫ب‬ ٍ ‫درج‬DB)
•‫فیديا‬ ‫استاندارد‬ ٍ ‫ثابت‬ ‫ساختار‬
‫افسار‬ ‫نرم‬ ‫تجسیه‬
•‫دادى‬ ٌ‫ب‬ ‫دسترسی‬ ‫الگَی‬ ‫اساس‬ ‫بر‬
•‫اطالعات‬ ‫بازیابی‬ ٍ ‫ذخیرى‬ ‫راندنان‬
•Read Intensive-Write Intensive-‫نتعادل‬
•‫يای‬‫تکنیک‬Caching
‫نثال‬:
‫افزار‬ ‫نرم‬ ‫یک‬ ‫در‬ ‫يا‬‫خَاندنی‬ ‫لیست‬ ٍ ‫کاربر‬ ‫اطالعات‬Feed Reader
‫افسار‬ ‫نرم‬ ‫تجسیه‬
•‫اساس‬ ‫بر‬Context
•‫نَجَدیت‬ ‫یک‬ ‫از‬ ‫يا‬‫سرٍیس‬ ‫نتفاٍت‬ ‫دیدگاى‬
‫نثال‬:
•‫نشتری‬ ٌ‫ب‬ ‫نسبت‬ ‫فرٍش‬ ‫بخش‬ ‫از‬ ‫نشتریان‬ ‫پشتیبانی‬ ‫بخش‬ ‫نتفاٍت‬ ‫دیدگاى‬
•‫دادى‬ ‫سطح‬ ‫در‬ ‫ٍراثت‬ ‫از‬ ‫استفادى‬
‫افسار‬ ‫نرم‬ ‫اجتواع‬
•‫ترکیبی‬ ‫کارکرد‬ ‫یک‬ ٌ‫ب‬ ‫رسیدن‬ ‫برای‬ ‫تجهع‬
•Mash-up‫ای‬ٌ‫پای‬ ٍ ‫نَجَد‬ ‫يای‬‫سرٍیس‬
‫نثال‬:
•‫نحصَالت‬ ٍ ‫خریديا‬ ‫سرٍیس‬ ‫اطالعات‬ ‫اساس‬ ‫بر‬ ‫نحصَل‬ ‫پیشنًاد‬
‫افسار‬ ‫نرم‬ ‫اجتواع‬
•‫تجاری‬ ‫يَش‬ ٌ‫ب‬ ‫رسیدن‬ ‫برای‬ ‫تجهع‬
•‫يا‬‫دادى‬ ‫انبارى‬
‫نثال‬:
•‫درآند‬ ‫بینی‬ ‫پیش‬ ٍ ‫نالی‬ ‫يای‬‫گزارش‬
•‫تقلب‬ ‫تشخیص‬ ‫يای‬‫سیستو‬
‫افسار‬ ‫نرم‬ ‫اجتواع‬
•‫باالتر‬ ‫راندنان‬ ٌ‫ب‬ ‫رسیدن‬ ‫برای‬ ‫تجهع‬
•‫پاسخگَیی‬ ‫زنان‬ ‫کايش‬
•‫پذیری‬ ‫دسترس‬ ‫بردن‬ ‫باال‬
‫نثال‬:
•‫ندل‬ ‫از‬ ‫شدى‬ ‫نشتق‬ ‫نحصَالت‬ ‫کاتالَگ‬EAV
‫اجواع؟‬ ‫یا‬ ‫تجسیه‬!
•‫ندارد‬ ‫ٍجَد‬ ‫نشخصی‬ ‫لیست‬ ‫چک‬
•‫است‬ ‫ای‬‫دٍرى‬ ‫تصهیهات‬ ٍ‫د‬ ‫این‬ ‫بین‬ ‫انتخاب‬
•‫شَد‬‫نی‬ ‫حس‬ ‫يا‬‫سرٍیس‬ ‫اجهاع‬ ٌ‫ب‬ ‫نیاز‬ ‫زنان‬ ‫طَل‬ ‫در‬ ٍ ‫شَد‬‫نی‬ ‫شرٍع‬ ٌ‫تجزی‬ ‫با‬
API (Application Programming Interface)
•‫رٍتین‬ ‫از‬ ‫ای‬ٌ‫نجهَع‬‍‫است‬ ‫کاربردی‬ ‫افزاريای‬ ‫نرم‬ ‫ساختن‬ ‫برای‬ ‫ابزاريا‬ ٍ ‫يا‬‫پرٍتکل‬ ،‫يا‬.
•‫تشریح‬ ‫يا‬‫دادى‬ ‫نَع‬ ،‫يا‬‫خرٍجی‬ ،‫يا‬‫ٍرٍدی‬ ،‫عهلکرد‬ ‫قالب‬ ‫در‬ ‫را‬ ‫افزاری‬ ‫نرم‬ ٌ‫نَلف‬ ‫یک‬
‫سازد‬‫نی‬ ‫پنًان‬ ‫کنندى‬ ‫نصرف‬ ‫دید‬ ‫از‬ ‫را‬ ‫سازی‬ ‫پیادى‬ ‫يای‬‫پیچیدگی‬ ٌ‫ک‬ ‫کند‬‫نی‬.
•‫نَشتن‬API‫نَشتن‬ ‫انا‬ ‫است‬ ‫سادى‬APIٌ‫ن‬ ‫خَب‬!
‫یک‬ ‫های‬‫ویژگی‬API‫خوب‬
•‫نناسب‬ ‫گذاری‬ ‫نام‬
•‫عهلکرد‬ ‫با‬ ‫نام‬ ‫ارتباط‬
•‫تهرکز‬
•‫یَنیکس‬ ٌ‫فلسف‬
•‫جانعیت‬
•‫کاربر‬ ‫اطالعاتی‬ ‫نیاز‬ ‫پاسخگَی‬
•‫دقیق‬ ‫نستندات‬
•‫تغییر‬ ‫عدم‬
‫چگونه‬API‫تنویسین؟‬ ‫خوب‬
•‫يا‬‫نیازنندی‬ ‫گردآٍری‬
•‫نَشتن‬Use Case‫غیرفنی‬ ‫زبان‬ ٌ‫ب‬
•‫کنندى‬ ‫نصرف‬ ‫سهت‬ ‫در‬ ‫الجیک‬ ‫تحهیل‬ ‫عدم‬
•‫نهایش‬‫اطالعات‬
•‫دسترسی‬ ‫سطح‬
•‫اطالعاتی‬ ‫بانک‬ ‫ساختار‬ ‫بر‬ ‫ننطبق‬
•‫تغییرات‬
•‫گذاری‬ ٌ‫نسخ‬API
RPC‫یا‬REST
‫تا‬ ‫سازی‬ ‫هستند‬Swagger
•JSON Schema
•‫نستندات‬ ‫اعتبارسنجی‬ ٍ ‫تفسیر‬ ‫برای‬JSON
•‫نتديای‬ ‫تست‬ ‫انکان‬API
•‫کد‬ ‫تَلید‬(Code Generation)
Client Library
•‫دسترسی‬ٌ‫شبک‬
•Serialization/Deserialization
•‫کردن‬ ‫يندل‬‫خطايا‬
•Circuit Breakers
•Timeouts
•Retries
•Threshold
•Window
•Caching
•Performance
•‫پاسخگَیی‬ ‫سرعت‬/ٍ ٌ‫حافظ‬ ‫ٍضعیت‬GC Pause
•‫سرٍیس‬ ‫کشف‬(Service Discovery)
‫توسعه‬ ‫هحیط‬
•‫آنادى‬ ٌ‫تَسع‬ ‫نحیط‬
•‫از‬ ‫استفادى‬CMS
•‫از‬ ‫استفادى‬VM‫تکنَلَژی‬ ‫یا‬Container‫يا‬
•‫تست‬ ‫فرآیند‬ ‫کردن‬ ‫اتَناتیک‬
•‫ابزاريای‬ ‫سازی‬ ٌ‫یکپارچ‬Static Analysis
•‫يای‬‫اسکریپت‬Build
•‫تستی‬ ‫دیتای‬
•Seeding Script
•Production Snapshot
‫کد‬ ‫هستور‬ ‫تحویل‬(Continuous Code Delivery)
The Twelve-Factor App
•‫يای‬‫اپلکیشن‬ ‫ساختن‬ ‫برای‬ ‫نتدٍلَژی‬ ‫یک‬SaaS
•‫اجرا‬ ‫يای‬‫نحیط‬ ‫بین‬ ‫جابجایی‬ ‫قابلیت‬ ٍ ‫عانل‬ ‫سیستو‬ ٌ‫ب‬ ‫ٍابستگی‬ ‫حداقل‬
•‫ابری‬ ‫فرم‬ ‫پلت‬ ‫در‬ ‫استفادى‬ ‫جًت‬ ‫نناسب‬
•‫نستهر‬ ‫استقرار‬ ‫انکان‬
•‫پذیری‬ ‫نقیاس‬ ‫انکان‬(Scale up)
The Twelve-Factor App
1. Codebase - One codebase tracked in revision control, many deploys
2. Dependencies - Explicitly declare and isolate dependencies
3. Config - Store config in the environment
4. Backing services - Treat backing services as attached resources
5. Build, release, run - Strictly separate build and run stages
6. Processes - Execute the app as one or more stateless processes
7. Port binding - Export services via port binding
8. Concurrency - Scale out via the process model
9. Disposability - Maximize robustness with fast startup and graceful shutdown
10.Dev/prod parity - Keep development, staging, and production as similar as possible
11.Logs - Treat logs as event streams
12.Admin processes - Run admin/management tasks as one-off processes
‫سرویس‬ ‫ریس‬ ‫نیازهای‬ ‫هراتة‬ ‫سلسله‬
‫سوال؟‬!

توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (Microservices) و اجرای آن در بستر ابری

  • 1.
    ‫شایافر‬ ‫نیما‬ ‫ریزسرویسها‬ ‫معماری‬‫اساس‬ ‫بر‬ ‫پذیر‬‫مقیاس‬ ‫افزارهای‬‫نرم‬ ‫تىسعه‬ ‫ابری‬ ‫بستر‬ ‫در‬ ‫آن‬ ‫اجرای‬ ‫و‬
  • 2.
    ‫هن‬ ‫درتاره‬ •َ‫استَدی‬ ‫سیدار‬‫فنی‬ ‫ندیر‬ •‫ایدى‬ ‫صبا‬ ‫ساخت‬ ‫زیر‬ ‫ندیر‬
  • 3.
    ‫چیست؟‬ ‫سرویس‬ ‫ریس‬ •‫اجزای‬ٌ‫ب‬ ‫آن‬ ‫شکستن‬ ٍ ‫بزرگ‬ ‫افزاری‬ ‫نرم‬ ‫يای‬‫سیستو‬ ‫کردن‬ ‫ناژٍالر‬ ‫جًت‬ ‫رٍیکردی‬ ‫است‬ ‫نتفاٍت‬ ‫عهلکرد‬ ‫با‬ ‫نستقل‬. •‫یَنیکس‬ ٌ‫فلسف‬ •‫برساند‬ ‫انجام‬ ٌ‫ب‬ ‫احسنت‬ َ‫نح‬ ٌ‫ب‬ ‫را‬ ‫کار‬ ‫آن‬ ٍ ‫ديد‬ ‫انجام‬ ‫کار‬ ‫یک‬ ‫باید‬ ‫تنًا‬ ٌ‫برنان‬ ‫ير‬. •‫باشند‬ ٌ‫داشت‬ ‫را‬ ‫یکدیگر‬ ‫با‬ ‫تعانل‬ ‫قابلیت‬ ‫باید‬ ‫يا‬ٌ‫برنان‬. •‫شَد‬ ‫استفادى‬ ‫عهَنی‬ ‫ٍاسط‬ ‫یک‬ ‫از‬.Text Stream‫یَنیکس‬ ‫در‬ ‫يا‬ •‫سازنان‬ ‫یک‬ ‫ساختار‬ •‫نگًبانی‬ •ٌ‫دبیرخان‬ •‫حسابداری‬ ٍ ‫نالی‬ •‫فنی‬ •‫تدارکات‬
  • 4.
    ‫ها؟‬‫ریسسرویس‬ ‫چرا‬ •‫بازار‬ ‫فرصت‬ٍ ‫بزرگ‬ ‫يای‬‫پرٍژى‬ ‫تر‬‫چابک‬ ٌ‫تَسع‬ •‫نختلف‬ ‫يای‬‫تکنَلَژی‬ ‫از‬ ‫استفادى‬ •‫قدیهی‬ ‫افزاريای‬ ‫نرم‬ ‫شدن‬ ‫جایگزین‬ ‫یا‬ ‫تکهیل‬ ٌ‫ب‬ ‫کهک‬ •‫پایدار‬ ٌ‫تَسع‬(‫نعهاری‬ ‫زٍال‬ ‫عدم‬)‫سیستو‬ ‫از‬ ‫نگًداری‬ ٌ‫دغدغ‬ ‫کايش‬ ٍ •‫نداٍم‬ ‫تحَیل‬(Continuous Delivery)‫سریعتر‬ ‫استقرار‬ ٍ •‫پذیری‬ ‫دسترس‬ ٍ ‫پذیری‬ ‫نقیاس‬ •‫ابری‬ ‫بستر‬ ‫از‬ ‫استفادى‬ •‫بزرگ‬ ‫اینترنتی‬ ‫يای‬‫شرکت‬ ‫گرایش‬
  • 5.
    ‫ها‬‫ریسسرویس‬ ‫های‬‫چالش‬ •‫يا‬‫سرٍیس‬ ‫رٍابط‬ •ٌ‫دانن‬‫کل‬ ٌ‫ب‬ ‫نسبت‬ ‫کلی‬ ‫دید‬ •‫ساخت‬ ‫زیر‬ ٌ‫ب‬ ‫نیاز‬ •‫يا‬ٌ‫نَلف‬ ‫تعدد‬ •‫خَدکار‬ ‫استقرار‬ •‫شدى‬ ‫تَزیع‬ ‫يای‬‫سیستو‬ ‫در‬ ‫ای‬ٌ‫شبک‬ ‫نشکالت‬
  • 6.
    ‫استفاده‬ ‫نکات‬‫از‬‫ها‬‫ریسسرویس‬ •‫ندارد‬ ‫را‬‫دیگر‬ ‫سرٍیس‬ ‫دادى‬ ‫پایگاى‬ ‫از‬ ‫استفادى‬ ‫اجازى‬ ‫سرٍیسی‬ ‫يیچ‬ •‫طریق‬ ‫از‬ ‫فقط‬ ‫يا‬‫سرٍیس‬ ‫بین‬ ‫تعانل‬API •‫بسازید‬ ‫يو‬ ‫با‬ ‫سازگار‬ ‫را‬ ‫يا‬‫سرٍیس‬ •ٌ‫نشاب‬ ‫فرنت‬ ٍ ‫پرٍتکل‬ ‫با‬ ‫ارتباط‬(‫فرنت‬JSON‫پرٍتکل‬HTTP) •‫تعریف‬API‫ثابت‬ ‫شیَى‬ ٌ‫ب‬ •‫استاندارد‬ ‫الگ‬ ‫فرنت‬ ‫از‬ ‫استفادى‬ ‫با‬ ‫درخَاستًا‬ ‫ثبت‬ •‫نَجَد‬ ‫ابزاريای‬ ‫با‬ ‫شدن‬ ‫نانیتَر‬ ‫انکان‬(/metrics) •‫قرارداديای‬API‫کنید‬ ‫تعریف‬ ‫کد‬ ‫در‬ •‫يای‬‫خرٍجی‬ ٍ ‫ٍرٍدی‬API‫ناشین‬ ٍ ‫انسان‬ ‫برای‬ ‫فًو‬ ‫قابل‬ •‫از‬ ‫استفادى‬IDL(Interface Definition Language) •‫کد‬ ‫در‬ ‫سازی‬ ‫نستند‬
  • 7.
    ‫ها‬‫ریسسرویس‬ ‫از‬ ‫استفاده‬‫نکات‬ •‫باشید‬ ٌ‫داشت‬ ‫نجزا‬ ‫عهلیاتی‬ ٍ ‫تست‬ ‫نحیط‬ •‫عهلیاتی‬ ٍ ‫تست‬ ‫نحیط‬ ٌ‫نشاب‬ ‫پیکربندی‬
  • 8.
    ‫فرضی‬ ‫آنالین‬ ‫فروشگاه‬ •‫داخلی‬‫يای‬‫سیستو‬: •‫کاربران‬ ‫نام‬ ‫ثبت‬ •‫کاربران‬ ‫ندیریت‬ •‫نحصَالت‬ ‫جستجَی‬ •‫سفارشات‬ ‫لیست‬ •‫سفارش‬ ‫فرآیند‬ ‫بیرٍنی‬ ‫يای‬‫سیستو‬: •‫حسابداری‬ •‫لجستیک‬
  • 9.
    ‫افسار‬ ‫نرم‬ ‫تجسیه‬ •‫عهلکرد‬‫اساس‬ ‫بر‬ •‫نستقل‬ ‫عهلکرديای‬ ‫شناسایی‬ ‫نثال‬: •‫ایهیل‬ ‫دریافت‬ ٍ ‫ارسال‬ ‫سرٍیس‬/Push Notification •‫فرآیند‬«‫فیديا‬ ‫رسانی‬ ‫رٍز‬ٌ‫ب‬»‫افزار‬ ‫نرم‬ ‫یک‬ ‫در‬Feed Reader(‫دانلَد‬XML‫در‬ ‫درج‬ ٍ ‫تفسیر‬ ،‫يا‬DB) •‫کاربر‬ ‫رفتار‬ ‫اساس‬ ‫بر‬ ‫نحتَا‬ ‫پیشنًاد‬
  • 10.
    ‫افسار‬ ‫نرم‬ ‫تجسیه‬ •‫بلَغ‬‫اساس‬ ‫بر‬ •‫سیستو‬ ‫بالغ‬ ‫يای‬‫بخش‬ ‫ترکیب‬ •‫خطا‬ ‫نستعد‬ ٍ ‫ناپایدار‬ ٍ ‫نابالغ‬ ‫يای‬‫بخش‬ ‫سازی‬ ‫جدا‬ ‫نثال‬: ‫فرآیند‬«‫فید‬ ‫سازی‬ ‫ذخیرى‬»‫افزار‬ ‫نرم‬ ‫یک‬ ‫در‬Feed Reader(‫در‬ ‫فید‬ ‫رسانی‬ ‫رٍز‬ٌ‫ب‬ ٍ ‫درج‬DB) •‫فیديا‬ ‫استاندارد‬ ٍ ‫ثابت‬ ‫ساختار‬
  • 11.
    ‫افسار‬ ‫نرم‬ ‫تجسیه‬ •‫دادى‬ٌ‫ب‬ ‫دسترسی‬ ‫الگَی‬ ‫اساس‬ ‫بر‬ •‫اطالعات‬ ‫بازیابی‬ ٍ ‫ذخیرى‬ ‫راندنان‬ •Read Intensive-Write Intensive-‫نتعادل‬ •‫يای‬‫تکنیک‬Caching ‫نثال‬: ‫افزار‬ ‫نرم‬ ‫یک‬ ‫در‬ ‫يا‬‫خَاندنی‬ ‫لیست‬ ٍ ‫کاربر‬ ‫اطالعات‬Feed Reader
  • 12.
    ‫افسار‬ ‫نرم‬ ‫تجسیه‬ •‫اساس‬‫بر‬Context •‫نَجَدیت‬ ‫یک‬ ‫از‬ ‫يا‬‫سرٍیس‬ ‫نتفاٍت‬ ‫دیدگاى‬ ‫نثال‬: •‫نشتری‬ ٌ‫ب‬ ‫نسبت‬ ‫فرٍش‬ ‫بخش‬ ‫از‬ ‫نشتریان‬ ‫پشتیبانی‬ ‫بخش‬ ‫نتفاٍت‬ ‫دیدگاى‬ •‫دادى‬ ‫سطح‬ ‫در‬ ‫ٍراثت‬ ‫از‬ ‫استفادى‬
  • 13.
    ‫افسار‬ ‫نرم‬ ‫اجتواع‬ •‫ترکیبی‬‫کارکرد‬ ‫یک‬ ٌ‫ب‬ ‫رسیدن‬ ‫برای‬ ‫تجهع‬ •Mash-up‫ای‬ٌ‫پای‬ ٍ ‫نَجَد‬ ‫يای‬‫سرٍیس‬ ‫نثال‬: •‫نحصَالت‬ ٍ ‫خریديا‬ ‫سرٍیس‬ ‫اطالعات‬ ‫اساس‬ ‫بر‬ ‫نحصَل‬ ‫پیشنًاد‬
  • 14.
    ‫افسار‬ ‫نرم‬ ‫اجتواع‬ •‫تجاری‬‫يَش‬ ٌ‫ب‬ ‫رسیدن‬ ‫برای‬ ‫تجهع‬ •‫يا‬‫دادى‬ ‫انبارى‬ ‫نثال‬: •‫درآند‬ ‫بینی‬ ‫پیش‬ ٍ ‫نالی‬ ‫يای‬‫گزارش‬ •‫تقلب‬ ‫تشخیص‬ ‫يای‬‫سیستو‬
  • 15.
    ‫افسار‬ ‫نرم‬ ‫اجتواع‬ •‫باالتر‬‫راندنان‬ ٌ‫ب‬ ‫رسیدن‬ ‫برای‬ ‫تجهع‬ •‫پاسخگَیی‬ ‫زنان‬ ‫کايش‬ •‫پذیری‬ ‫دسترس‬ ‫بردن‬ ‫باال‬ ‫نثال‬: •‫ندل‬ ‫از‬ ‫شدى‬ ‫نشتق‬ ‫نحصَالت‬ ‫کاتالَگ‬EAV
  • 16.
    ‫اجواع؟‬ ‫یا‬ ‫تجسیه‬! •‫ندارد‬‫ٍجَد‬ ‫نشخصی‬ ‫لیست‬ ‫چک‬ •‫است‬ ‫ای‬‫دٍرى‬ ‫تصهیهات‬ ٍ‫د‬ ‫این‬ ‫بین‬ ‫انتخاب‬ •‫شَد‬‫نی‬ ‫حس‬ ‫يا‬‫سرٍیس‬ ‫اجهاع‬ ٌ‫ب‬ ‫نیاز‬ ‫زنان‬ ‫طَل‬ ‫در‬ ٍ ‫شَد‬‫نی‬ ‫شرٍع‬ ٌ‫تجزی‬ ‫با‬
  • 17.
    API (Application ProgrammingInterface) •‫رٍتین‬ ‫از‬ ‫ای‬ٌ‫نجهَع‬‍‫است‬ ‫کاربردی‬ ‫افزاريای‬ ‫نرم‬ ‫ساختن‬ ‫برای‬ ‫ابزاريا‬ ٍ ‫يا‬‫پرٍتکل‬ ،‫يا‬. •‫تشریح‬ ‫يا‬‫دادى‬ ‫نَع‬ ،‫يا‬‫خرٍجی‬ ،‫يا‬‫ٍرٍدی‬ ،‫عهلکرد‬ ‫قالب‬ ‫در‬ ‫را‬ ‫افزاری‬ ‫نرم‬ ٌ‫نَلف‬ ‫یک‬ ‫سازد‬‫نی‬ ‫پنًان‬ ‫کنندى‬ ‫نصرف‬ ‫دید‬ ‫از‬ ‫را‬ ‫سازی‬ ‫پیادى‬ ‫يای‬‫پیچیدگی‬ ٌ‫ک‬ ‫کند‬‫نی‬. •‫نَشتن‬API‫نَشتن‬ ‫انا‬ ‫است‬ ‫سادى‬APIٌ‫ن‬ ‫خَب‬!
  • 18.
    ‫یک‬ ‫های‬‫ویژگی‬API‫خوب‬ •‫نناسب‬ ‫گذاری‬‫نام‬ •‫عهلکرد‬ ‫با‬ ‫نام‬ ‫ارتباط‬ •‫تهرکز‬ •‫یَنیکس‬ ٌ‫فلسف‬ •‫جانعیت‬ •‫کاربر‬ ‫اطالعاتی‬ ‫نیاز‬ ‫پاسخگَی‬ •‫دقیق‬ ‫نستندات‬ •‫تغییر‬ ‫عدم‬
  • 19.
    ‫چگونه‬API‫تنویسین؟‬ ‫خوب‬ •‫يا‬‫نیازنندی‬ ‫گردآٍری‬ •‫نَشتن‬UseCase‫غیرفنی‬ ‫زبان‬ ٌ‫ب‬ •‫کنندى‬ ‫نصرف‬ ‫سهت‬ ‫در‬ ‫الجیک‬ ‫تحهیل‬ ‫عدم‬ •‫نهایش‬‫اطالعات‬ •‫دسترسی‬ ‫سطح‬ •‫اطالعاتی‬ ‫بانک‬ ‫ساختار‬ ‫بر‬ ‫ننطبق‬ •‫تغییرات‬ •‫گذاری‬ ٌ‫نسخ‬API
  • 20.
  • 21.
    ‫تا‬ ‫سازی‬ ‫هستند‬Swagger •JSONSchema •‫نستندات‬ ‫اعتبارسنجی‬ ٍ ‫تفسیر‬ ‫برای‬JSON •‫نتديای‬ ‫تست‬ ‫انکان‬API •‫کد‬ ‫تَلید‬(Code Generation)
  • 22.
    Client Library •‫دسترسی‬ٌ‫شبک‬ •Serialization/Deserialization •‫کردن‬ ‫يندل‬‫خطايا‬ •CircuitBreakers •Timeouts •Retries •Threshold •Window •Caching •Performance •‫پاسخگَیی‬ ‫سرعت‬/ٍ ٌ‫حافظ‬ ‫ٍضعیت‬GC Pause •‫سرٍیس‬ ‫کشف‬(Service Discovery)
  • 23.
    ‫توسعه‬ ‫هحیط‬ •‫آنادى‬ ٌ‫تَسع‬‫نحیط‬ •‫از‬ ‫استفادى‬CMS •‫از‬ ‫استفادى‬VM‫تکنَلَژی‬ ‫یا‬Container‫يا‬ •‫تست‬ ‫فرآیند‬ ‫کردن‬ ‫اتَناتیک‬ •‫ابزاريای‬ ‫سازی‬ ٌ‫یکپارچ‬Static Analysis •‫يای‬‫اسکریپت‬Build •‫تستی‬ ‫دیتای‬ •Seeding Script •Production Snapshot
  • 24.
  • 25.
    The Twelve-Factor App •‫يای‬‫اپلکیشن‬‫ساختن‬ ‫برای‬ ‫نتدٍلَژی‬ ‫یک‬SaaS •‫اجرا‬ ‫يای‬‫نحیط‬ ‫بین‬ ‫جابجایی‬ ‫قابلیت‬ ٍ ‫عانل‬ ‫سیستو‬ ٌ‫ب‬ ‫ٍابستگی‬ ‫حداقل‬ •‫ابری‬ ‫فرم‬ ‫پلت‬ ‫در‬ ‫استفادى‬ ‫جًت‬ ‫نناسب‬ •‫نستهر‬ ‫استقرار‬ ‫انکان‬ •‫پذیری‬ ‫نقیاس‬ ‫انکان‬(Scale up)
  • 26.
    The Twelve-Factor App 1.Codebase - One codebase tracked in revision control, many deploys 2. Dependencies - Explicitly declare and isolate dependencies 3. Config - Store config in the environment 4. Backing services - Treat backing services as attached resources 5. Build, release, run - Strictly separate build and run stages 6. Processes - Execute the app as one or more stateless processes 7. Port binding - Export services via port binding 8. Concurrency - Scale out via the process model 9. Disposability - Maximize robustness with fast startup and graceful shutdown 10.Dev/prod parity - Keep development, staging, and production as similar as possible 11.Logs - Treat logs as event streams 12.Admin processes - Run admin/management tasks as one-off processes
  • 27.
    ‫سرویس‬ ‫ریس‬ ‫نیازهای‬‫هراتة‬ ‫سلسله‬
  • 28.