توسعه نرمافزارهای مقیاسپذیر بر اساس معماری ریزسرویسها...
TRANSCRIPT
نیما شایافر تىسعه نرم افزارهای مقیاس پذیر بر اساس معماری ریزسرویسها
و اجرای آن در بستر ابری
درتاره هن
ندیر فنی سیدار استدی•
ندیر زیر ساخت صبا ایدى•
ریس سرویس چیست؟
ریکردی جت ناژالر کردن سیستو يای نرم افزاری بزرگ شکستن آن ب اجزای • .نستقل با عهلکرد نتفات است
فلسف ینیکس• .ير برنان تنا باید یک کار انجام ديد آن کار را ب نح احسنت ب انجام برساند• يا باید قابلیت تعانل با یکدیگر را داشت باشند• .برنان يا در ینیکسText Stream. از یک اسط عهنی استفادى شد•
ساختار یک سازنان• نگبانی• دبیرخان• نالی حسابداری• فنی• تدارکات•
چرا ریسسرویس ها؟
تسع چابک تر پرژى يای بزرگ فرصت بازار• استفادى از تکنلژی يای نختلف• کهک ب تکهیل یا جایگزین شدن نرم افزاريای قدیهی• کايش دغدغ نگداری از سیستو( عدم زال نعهاری)تسع پایدار • استقرار سریعتر( Continuous Delivery)تحیل ندام • نقیاس پذیری دسترس پذیری• استفادى از بستر ابری• گرایش شرکت يای اینترنتی بزرگ•
چالش های ریسسرویس ها
رابط سریس يا • دید کلی نسبت ب کل دانن• نیاز ب زیر ساخت•
يا• تعدد نلف استقرار خدکار•
ای در سیستو يای تزیع شدى• نشکالت شبک
ریسسرویس هااز نکات استفاده
يیچ سریسی اجازى استفادى از پایگاى دادى سریس دیگر را ندارد• APIتعانل بین سریس يا فقط از طریق •
سریس يا را سازگار با يو بسازید• (HTTPپرتکل JSONفرنت )ارتباط با پرتکل فرنت نشاب • ب شیى ثابت APIتعریف • ثبت درخاستا با استفادى از فرنت الگ استاندارد• (metrics/)انکان نانیتر شدن با ابزاريای نجد •
در کد تعریف کنید APIقرارداديای • قابل فو برای انسان ناشین APIردی خرجی يای • IDL (Interface Definition Language)استفادى از • نستند سازی در کد•
نکات استفاده از ریسسرویس ها
نحیط تست عهلیاتی نجزا داشت باشید• پیکربندی نشاب نحیط تست عهلیاتی•
فروشگاه آنالین فرضی
:سیستو يای داخلی• ثبت نام کاربران• ندیریت کاربران• جستجی نحصالت• لیست سفارشات• فرآیند سفارش•
:سیستو يای بیرنی
حسابداری• لجستیک•
تجسیه نرم افسار
بر اساس عهلکرد• شناسایی عهلکرديای نستقل• :نثال
Push Notification/سریس ارسال دریافت ایهیل• رز رسانی فیديا»فرآیند • (DBيا، تفسیر درج در XMLدانلد ) Feed Readerدر یک نرم افزار « ب پیشناد نحتا بر اساس رفتار کاربر•
تجسیه نرم افسار
بر اساس بلغ• ترکیب بخش يای بالغ سیستو• جدا سازی بخش يای نابالغ ناپایدار نستعد خطا• :نثال
رز رسانی فید در ) 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استفادى از • ياContainerیا تکنلژی VMاستفادى از •
اتناتیک کردن فرآیند تست• 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
سلسله هراتة نیازهای ریس سرویس
!سوال؟