آشنایی با معماری میکروسرویس

سرفصل‌ها

  • هدف از معماری چیست؟
  • معماری 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

  • 603