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

‫شایافر‬ ‫نیما‬
‫ریزسرویسها‬ ‫معماری‬ ‫اساس‬ ‫بر‬ ‫پذیر‬‫مقیاس‬ ‫افزارهای‬‫نرم‬ ‫تىسعه‬
‫ابری‬ ‫بستر‬ ‫در‬ ‫آن‬ ‫اجرای‬ ‫و‬
‫هن‬ ‫درتاره‬
•َ‫استَدی‬ ‫سیدار‬ ‫فنی‬ ‫ندیر‬
•‫ایدى‬ ‫صبا‬ ‫ساخت‬ ‫زیر‬ ‫ندیر‬
‫چیست؟‬ ‫سرویس‬ ‫ریس‬
•‫اجزای‬ ٌ‫ب‬ ‫آن‬ ‫شکستن‬ ٍ ‫بزرگ‬ ‫افزاری‬ ‫نرم‬ ‫يای‬‫سیستو‬ ‫کردن‬ ‫ناژٍالر‬ ‫جًت‬ ‫رٍیکردی‬
‫است‬ ‫نتفاٍت‬ ‫عهلکرد‬ ‫با‬ ‫نستقل‬.
•‫یَنیکس‬ ٌ‫فلسف‬
•‫برساند‬ ‫انجام‬ ٌ‫ب‬ ‫احسنت‬ َ‫نح‬ ٌ‫ب‬ ‫را‬ ‫کار‬ ‫آن‬ ٍ ‫ديد‬ ‫انجام‬ ‫کار‬ ‫یک‬ ‫باید‬ ‫تنًا‬ ٌ‫برنان‬ ‫ير‬.
•‫باشند‬ ٌ‫داشت‬ ‫را‬ ‫یکدیگر‬ ‫با‬ ‫تعانل‬ ‫قابلیت‬ ‫باید‬ ‫يا‬ٌ‫برنان‬.
•‫شَد‬ ‫استفادى‬ ‫عهَنی‬ ‫ٍاسط‬ ‫یک‬ ‫از‬.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
‫سرویس‬ ‫ریس‬ ‫نیازهای‬ ‫هراتة‬ ‫سلسله‬
‫سوال؟‬!
1 de 28

Mais conteúdo relacionado

Destaque(17)

مدیریت پروژه‌های آیندهمدیریت پروژه‌های آینده
مدیریت پروژه‌های آینده
Web Standards School286 visualizações
آینده کسب و کارهای تحت وبآینده کسب و کارهای تحت وب
آینده کسب و کارهای تحت وب
Web Standards School484 visualizações
آینده برنامه‌های تحت وب و Mobile Webآینده برنامه‌های تحت وب و Mobile Web
آینده برنامه‌های تحت وب و Mobile Web
Web Standards School335 visualizações
انفجار تجربه‌کاربریانفجار تجربه‌کاربری
انفجار تجربه‌کاربری
Web Standards School580 visualizações
CDNهای نسل جدیدCDNهای نسل جدید
CDNهای نسل جدید
Web Standards School238 visualizações
React‌ برای دولوپرهاReact‌ برای دولوپرها
React‌ برای دولوپرها
Web Standards School825 visualizações
The case for an open biomedical knowledgebaseThe case for an open biomedical knowledgebase
The case for an open biomedical knowledgebase
Andrew Su353 visualizações
Humanizasus 2004Humanizasus 2004
Humanizasus 2004
danilo rodrigues187 visualizações
Topfold  blow on my petals softlyTopfold  blow on my petals softly
Topfold blow on my petals softly
Migdal Eden127 visualizações
컴퓨터개론01컴퓨터개론01
컴퓨터개론01
Edward Hwang1.1K visualizações
PPPPPP
PPP
Robert Croker219 visualizações
Design considerations and engineering materialsDesign considerations and engineering materials
Design considerations and engineering materials
Himanshi Gupta22K visualizações
Business and entrepreneurship for pkbn 2017Business and entrepreneurship for pkbn 2017
Business and entrepreneurship for pkbn 2017
Mohd Fadhilullah2.2K visualizações
جعبه‌ابزار قلمجعبه‌ابزار قلم
جعبه‌ابزار قلم
Web Standards School743 visualizações

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

Oracle ADF PresentationOracle ADF Presentation
Oracle ADF PresentationFarzad Babamiri
443 visualizações35 slides
ورودی خروجی Hadoopورودی خروجی Hadoop
ورودی خروجی Hadoopnasser rezaei
296 visualizações20 slides
Yarn مروری بر Yarn مروری بر
Yarn مروری بر nasser rezaei
362 visualizações12 slides
IranOUG_Oracle_MultitenantIranOUG_Oracle_Multitenant
IranOUG_Oracle_MultitenantOracle Freelancer
28 visualizações24 slides

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

Oracle ADF PresentationOracle ADF Presentation
Oracle ADF Presentation
Farzad Babamiri443 visualizações
ورودی خروجی Hadoopورودی خروجی Hadoop
ورودی خروجی Hadoop
nasser rezaei296 visualizações
Yarn مروری بر Yarn مروری بر
Yarn مروری بر
nasser rezaei362 visualizações
IranOUG_Oracle_MultitenantIranOUG_Oracle_Multitenant
IranOUG_Oracle_Multitenant
Oracle Freelancer28 visualizações
agil software managment by scrunm in tfsagil software managment by scrunm in tfs
agil software managment by scrunm in tfs
Reza Rahimy424 visualizações
cloud services for librariescloud services for libraries
cloud services for libraries
mahboubeh ghorbani31 visualizações
oCCc_24_Cloud_Design_PatternsoCCc_24_Cloud_Design_Patterns
oCCc_24_Cloud_Design_Patterns
Morteza Javan1.1K visualizações
Big Data Processing in Cloud Computing EnvironmentsBig Data Processing in Cloud Computing Environments
Big Data Processing in Cloud Computing Environments
Farzad Nozarian4.6K visualizações
مراحل تولید نرم افزارمراحل تولید نرم افزار
مراحل تولید نرم افزار
Meysam Hooshmand322 visualizações
آشنایی با Hadoopآشنایی با Hadoop
آشنایی با Hadoop
nasser rezaei496 visualizações
انواع Replication در MySQL/MariaDBانواع Replication در MySQL/MariaDB
انواع Replication در MySQL/MariaDB
Hamoon Mohammadian Pour241 visualizações
بیگ دیتابیگ دیتا
بیگ دیتا
Hamed Azizi4.5K visualizações
جاواجاوا
جاوا
Eric Jalal181 visualizações
ShardingSharding
Sharding
Ali Hallaji325 visualizações
معرفی ServiceWorker و کاربردهای آنمعرفی ServiceWorker و کاربردهای آن
معرفی ServiceWorker و کاربردهای آن
Web Standards School1.1K visualizações
Introduction to SOAIntroduction to SOA
Introduction to SOA
Vahid Farahmandian60 visualizações

Mais de Web Standards School(20)

واقعیت افزوده بر بستر ابرهاواقعیت افزوده بر بستر ابرها
واقعیت افزوده بر بستر ابرها
Web Standards School169 visualizações
آرامش در سایه پذیرشآرامش در سایه پذیرش
آرامش در سایه پذیرش
Web Standards School143 visualizações
نقش AR/VR در‌آینده بازاریابینقش AR/VR در‌آینده بازاریابی
نقش AR/VR در‌آینده بازاریابی
Web Standards School142 visualizações

توسعه نرم‌افزارهای مقیاس‌پذیر بر اساس معماری ریزسرویسها (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 Programming Interface) •‫رٍتین‬ ‫از‬ ‫ای‬ٌ‫نجهَع‬‍‫است‬ ‫کاربردی‬ ‫افزاريای‬ ‫نرم‬ ‫ساختن‬ ‫برای‬ ‫ابزاريا‬ ٍ ‫يا‬‫پرٍتکل‬ ،‫يا‬. •‫تشریح‬ ‫يا‬‫دادى‬ ‫نَع‬ ،‫يا‬‫خرٍجی‬ ،‫يا‬‫ٍرٍدی‬ ،‫عهلکرد‬ ‫قالب‬ ‫در‬ ‫را‬ ‫افزاری‬ ‫نرم‬ ٌ‫نَلف‬ ‫یک‬ ‫سازد‬‫نی‬ ‫پنًان‬ ‫کنندى‬ ‫نصرف‬ ‫دید‬ ‫از‬ ‫را‬ ‫سازی‬ ‫پیادى‬ ‫يای‬‫پیچیدگی‬ ٌ‫ک‬ ‫کند‬‫نی‬. •‫نَشتن‬API‫نَشتن‬ ‫انا‬ ‫است‬ ‫سادى‬APIٌ‫ن‬ ‫خَب‬!
  • 18. ‫یک‬ ‫های‬‫ویژگی‬API‫خوب‬ •‫نناسب‬ ‫گذاری‬ ‫نام‬ •‫عهلکرد‬ ‫با‬ ‫نام‬ ‫ارتباط‬ •‫تهرکز‬ •‫یَنیکس‬ ٌ‫فلسف‬ •‫جانعیت‬ •‫کاربر‬ ‫اطالعاتی‬ ‫نیاز‬ ‫پاسخگَی‬ •‫دقیق‬ ‫نستندات‬ •‫تغییر‬ ‫عدم‬
  • 19. ‫چگونه‬API‫تنویسین؟‬ ‫خوب‬ •‫يا‬‫نیازنندی‬ ‫گردآٍری‬ •‫نَشتن‬Use Case‫غیرفنی‬ ‫زبان‬ ٌ‫ب‬ •‫کنندى‬ ‫نصرف‬ ‫سهت‬ ‫در‬ ‫الجیک‬ ‫تحهیل‬ ‫عدم‬ •‫نهایش‬‫اطالعات‬ •‫دسترسی‬ ‫سطح‬ •‫اطالعاتی‬ ‫بانک‬ ‫ساختار‬ ‫بر‬ ‫ننطبق‬ •‫تغییرات‬ •‫گذاری‬ ٌ‫نسخ‬API
  • 21. ‫تا‬ ‫سازی‬ ‫هستند‬Swagger •JSON Schema •‫نستندات‬ ‫اعتبارسنجی‬ ٍ ‫تفسیر‬ ‫برای‬JSON •‫نتديای‬ ‫تست‬ ‫انکان‬API •‫کد‬ ‫تَلید‬(Code Generation)
  • 22. Client Library •‫دسترسی‬ٌ‫شبک‬ •Serialization/Deserialization •‫کردن‬ ‫يندل‬‫خطايا‬ •Circuit Breakers •Timeouts •Retries •Threshold •Window •Caching •Performance •‫پاسخگَیی‬ ‫سرعت‬/ٍ ٌ‫حافظ‬ ‫ٍضعیت‬GC Pause •‫سرٍیس‬ ‫کشف‬(Service Discovery)
  • 23. ‫توسعه‬ ‫هحیط‬ •‫آنادى‬ ٌ‫تَسع‬ ‫نحیط‬ •‫از‬ ‫استفادى‬CMS •‫از‬ ‫استفادى‬VM‫تکنَلَژی‬ ‫یا‬Container‫يا‬ •‫تست‬ ‫فرآیند‬ ‫کردن‬ ‫اتَناتیک‬ •‫ابزاريای‬ ‫سازی‬ ٌ‫یکپارچ‬Static Analysis •‫يای‬‫اسکریپت‬Build •‫تستی‬ ‫دیتای‬ •Seeding Script •Production Snapshot
  • 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. ‫سرویس‬ ‫ریس‬ ‫نیازهای‬ ‫هراتة‬ ‫سلسله‬