توسعه نرمافزارهای مقیاسپذیر بر اساس معماری ریزسرویسها...

28
ما شایافر نیرویسها ریزسعماریاس مپذیر بر اس مقیاسرهای تىسعه نرمافزا بستر ابریای آن در و اجر

Upload: web-standards-school

Post on 19-Mar-2017

148 views

Category:

Technology


3 download

TRANSCRIPT

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

نیما شایافر تىسعه نرم افزارهای مقیاس پذیر بر اساس معماری ریزسرویسها

و اجرای آن در بستر ابری

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

درتاره هن

ندیر فنی سیدار استدی•

ندیر زیر ساخت صبا ایدى•

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

ریس سرویس چیست؟

ریکردی جت ناژالر کردن سیستو يای نرم افزاری بزرگ شکستن آن ب اجزای • .نستقل با عهلکرد نتفات است

فلسف ینیکس• .ير برنان تنا باید یک کار انجام ديد آن کار را ب نح احسنت ب انجام برساند• يا باید قابلیت تعانل با یکدیگر را داشت باشند• .برنان يا در ینیکسText Stream. از یک اسط عهنی استفادى شد•

ساختار یک سازنان• نگبانی• دبیرخان• نالی حسابداری• فنی• تدارکات•

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

چرا ریسسرویس ها؟

تسع چابک تر پرژى يای بزرگ فرصت بازار• استفادى از تکنلژی يای نختلف• کهک ب تکهیل یا جایگزین شدن نرم افزاريای قدیهی• کايش دغدغ نگداری از سیستو( عدم زال نعهاری)تسع پایدار • استقرار سریعتر( Continuous Delivery)تحیل ندام • نقیاس پذیری دسترس پذیری• استفادى از بستر ابری• گرایش شرکت يای اینترنتی بزرگ•

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

چالش های ریسسرویس ها

رابط سریس يا • دید کلی نسبت ب کل دانن• نیاز ب زیر ساخت•

يا• تعدد نلف استقرار خدکار•

ای در سیستو يای تزیع شدى• نشکالت شبک

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

ریسسرویس هااز نکات استفاده

يیچ سریسی اجازى استفادى از پایگاى دادى سریس دیگر را ندارد• APIتعانل بین سریس يا فقط از طریق •

سریس يا را سازگار با يو بسازید• (HTTPپرتکل JSONفرنت )ارتباط با پرتکل فرنت نشاب • ب شیى ثابت APIتعریف • ثبت درخاستا با استفادى از فرنت الگ استاندارد• (metrics/)انکان نانیتر شدن با ابزاريای نجد •

در کد تعریف کنید APIقرارداديای • قابل فو برای انسان ناشین APIردی خرجی يای • IDL (Interface Definition Language)استفادى از • نستند سازی در کد•

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

نکات استفاده از ریسسرویس ها

نحیط تست عهلیاتی نجزا داشت باشید• پیکربندی نشاب نحیط تست عهلیاتی•

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

فروشگاه آنالین فرضی

:سیستو يای داخلی• ثبت نام کاربران• ندیریت کاربران• جستجی نحصالت• لیست سفارشات• فرآیند سفارش•

:سیستو يای بیرنی

حسابداری• لجستیک•

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

تجسیه نرم افسار

بر اساس عهلکرد• شناسایی عهلکرديای نستقل• :نثال

Push Notification/سریس ارسال دریافت ایهیل• رز رسانی فیديا»فرآیند • (DBيا، تفسیر درج در XMLدانلد ) Feed Readerدر یک نرم افزار « ب پیشناد نحتا بر اساس رفتار کاربر•

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

تجسیه نرم افسار

بر اساس بلغ• ترکیب بخش يای بالغ سیستو• جدا سازی بخش يای نابالغ ناپایدار نستعد خطا• :نثال

رز رسانی فید در ) Feed Readerدر یک نرم افزار « ذخیرى سازی فید»فرآیند (DBدرج ب ساختار ثابت استاندارد فیديا•

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

تجسیه نرم افسار

بر اساس الگی دسترسی ب دادى• راندنان ذخیرى بازیابی اطالعات••Read Intensive - Write Intensive - نتعادل Cachingتکنیک يای • :نثال

Feed Readerاطالعات کاربر لیست خاندنی يا در یک نرم افزار

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

تجسیه نرم افسار

Contextبر اساس • دیدگاى نتفات سریس يا از یک نجدیت•

:نثال

دیدگاى نتفات بخش پشتیبانی نشتریان از بخش فرش نسبت ب نشتری• استفادى از راثت در سطح دادى•

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

اجتواع نرم افسار

تجهع برای رسیدن ب یک کارکرد ترکیبی••Mash-up ای سریس يای نجد پای

:نثال

پیشناد نحصل بر اساس اطالعات سریس خریديا نحصالت•

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

اجتواع نرم افسار

تجهع برای رسیدن ب يش تجاری• انبارى دادى يا• :نثال

گزارش يای نالی پیش بینی درآند• سیستو يای تشخیص تقلب•

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

اجتواع نرم افسار

تجهع برای رسیدن ب راندنان باالتر• کايش زنان پاسخگیی• باال بردن دسترس پذیری• :نثال

EAVکاتالگ نحصالت نشتق شدى از ندل •

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

!تجسیه یا اجواع؟

چک لیست نشخصی جد ندارد• انتخاب بین این د تصهیهات درى ای است• با تجزی شرع نی شد در طل زنان نیاز ب اجهاع سریس يا حس نی شد•

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

API (Application Programming Interface)

ای از رتین• .يا، پرتکل يا ابزاريا برای ساختن نرم افزاريای کاربردی است‍نجهع یک نلف نرم افزاری را در قالب عهلکرد، ردی يا، خرجی يا، نع دادى يا تشریح •

.نی کند ک پیچیدگی يای پیادى سازی را از دید نصرف کنندى پنان نی سازد !خب ن APIسادى است انا نشتن APIنشتن •

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

خوب APIویژگی های یک

نام گذاری نناسب• ارتباط نام با عهلکرد•

تهرکز• فلسف ینیکس•

جانعیت• پاسخگی نیاز اطالعاتی کاربر•

نستندات دقیق• عدم تغییر•

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

خوب تنویسین؟ APIچگونه

گردآری نیازنندی يا• ب زبان غیرفنی Use Caseنشتن •

عدم تحهیل الجیک در سهت نصرف کنندى• اطالعاتنهایش •

سطح دسترسی• ننطبق بر ساختار بانک اطالعاتی•

تغییرات• APIنسخ گذاری •

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

RPC یاREST

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

Swaggerهستند سازی تا

•JSON Schema

JSONبرای تفسیر اعتبارسنجی نستندات •

APIانکان تست نتديای • (Code Generation)تلید کد •

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

Client Library

شبکدسترسی ••Serialization/Deserialization خطايايندل کردن •

•Circuit Breakers •Timeouts •Retries •Threshold •Window

•Caching •Performance

GC Pauseضعیت حافظ / سرعت پاسخگیی • (Service Discovery)کشف سریس •

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

هحیط توسعه

نحیط تسع آنادى• CMSاستفادى از • ياContainerیا تکنلژی VMاستفادى از •

اتناتیک کردن فرآیند تست• Static Analysisیکپارچ سازی ابزاريای •

Buildاسکریپت يای • دیتای تستی•

•Seeding Script •Production Snapshot

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

(Continuous Code Delivery)تحویل هستور کد

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

The Twelve-Factor App

SaaSیک نتدلژی برای ساختن اپلکیشن يای • حداقل ابستگی ب سیستو عانل قابلیت جابجایی بین نحیط يای اجرا• نناسب جت استفادى در پلت فرم ابری• انکان استقرار نستهر• (Scale up)انکان نقیاس پذیری •

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

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

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

سلسله هراتة نیازهای ریس سرویس

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

!سوال؟