آشنایی با معماری میکروسرویس
سرفصلها
- هدف از معماری چیست؟
- معماری Monolithic و معایا و مزایبش
- معماری Microservices و معایا و مزایبش
- ویژگیهای میکروسرویسها
- ویژگی ۱: تعریف حول محصول
- ویزگی ۲: استقلال دیتای هر میکروسرویس
- ویژگی ۳: پیچیدگی ارتباطات میکروسرویسها
- ویژگی ۴: نیاز به شفافیت در میکروسرویسها
- ویژگی ۵: نیاز به اتوماتیک کردن روندها
هدف از معماری چیست؟
کاهش هزینه توسعه
کاهش هزینه توسعه
- هزینه اضافه کردن feature جدید
- هزینه نگهداری سرویسها
- هزینه منابع سختافزاری مورد نیاز
معماری Monolithic
مزایای Monolithic
- توسعهی atomic در وابستگیها
- یک بار پیادهسازی نیازهای مشترک سرویسها (logging، ابزارهای امنیتی، backup و ... )
- نیاز به یادگیری تکنولوژیهای محدودتر
- محیط توسعهی سادهتر
مشکلات Monolithic
- پیچیدگی بالای کد و وابستگیهای داخلی زیاد
- کند شدن Development Cycle با رشد محصول و بزرگ شدن تیم توسعه
- کند شدن Deploymentها
- محدود شدن به تکنولوژیهای خاص
- هزینهی زیاد Scaling
Monolithic Scaling
معماری میکروسرویس
مزایای میکروسرویسها
- کوچک شدن سرویسها
- سرعت بخشیدن به توسعه و Deployment
- استقلال سرویسها و تیمها
- انعطافپذیری بالاتر و انتخاب تکنولوژیهای مناسب سرویس
- افزایش Performance
- قابلیت scale مجزا
مشکلات میکروسرویسها
- نیاز به هماهنگی هنگام پیادهسازی قابلیتی که به چند سرویس وابسته است
- پیچیدگی ارتباطات میان سرویسها
- نیاز به راهحلهایی برای نیازهای مشترک
- افزایش Operation و نیاز به automationهای بیشتر
ویژگیهای میکروسرویسها
تعریف میکروسرویسها حول محصول
Conway's Law
Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure
استقلال دیتا هر میکروسرویس
- نیاز به هماهنگی بالا بین سرویسها
- در تناقض با استقلال سرویسها
- وابستگی به یک نوع دیتابیس
- مشخص بودن صاحب دیتا
- استقلال سرویسها
- نیاز به نگهداری دیتابیسهای مختلف
دیتای هر سرویس باید مخفی باشد
پیچدگی ارتباطات میکروسرویسها
چالشهای Remote Calling
- خطا در صدا زدن یا Latency بالا
- Retry
- Service Discovery
- مسیریابی
پیادهسازی API
- مشخص بودن API
- Backward Compatibility
purchase(user_id, application)
purchase(user_id, application)
purchase(user_id, application, purchase_type)
:version 1
:version 2
API Gateway
- نقطه ورود واحد
- ترجمهی APIها و یکپارچه کردن requestهای متفاوت
- پیادهسازی قابلیتهای عمومی مانند Authentication
- امنیت بالاتر
شفافیت میکروسرویسها
- متریکهای مانیتورینگ
- لاگ
- ارور
- Tracing
متریکهای میکروسرویس
- سطح Host
- سطح زیرساخت
- سطح سرویس
- سطح محصول
لاگهای میکروسرویس
ارورهای میکروسرویس
معماری میکروسرویسها نیازمند زیرساخت اتوماتیک است
Deployment
مشکلات:
- سرویسهای مختلف روندهای مختلفی برای بارگزاری در محیط پروداکشن دارند
- تست درستی کد سخت است
- وجود خطاهای انسانی
راهحل:
اتوماتیک کردن روند Deployment با استفاده از Pipeline
استاندارد مشخصی برای میکروسرویسها وجود ندارد و هر شرکتی با توجه به نیازهایش استانداردهایش را میسازد
Microservices Camp Talk
By mehranakhavan
Microservices Camp Talk
- 645