CodeShot
Microservices2 دقیقه مطالعه

معماری میکروسرویس چیست؟

میکروسرویس یک سیستم بزرگ را به سرویس‌های کوچک، مستقل و با دیتابیس جدا تقسیم می‌کند.

چرا مهم است؟

در آگهی‌های Senior، حتی گاهی Mid، به‌عنوان یکی از معیارهای تجربه با سیستم‌های در مقیاس بزرگ پرسیده می‌شود.

ویژگی‌های کلیدی

  • هر سرویس مسئولیت یک قابلیت کسب‌وکار مشخص را دارد (مثلاً Order Service، Payment Service).
  • هر سرویس دیتابیس مستقل خودش را دارد (بدون Join مستقیم بین دیتابیس سرویس‌ها).
  • سرویس‌ها از طریق API (REST/gRPC) یا پیام (RabbitMQ/Kafka) با هم ارتباط دارند.
  • هر سرویس می‌تواند مستقل از بقیه Deploy شود.

ارتباط بین سرویس‌ها

// Order Service با gRPC از Inventory Service موجودی را می‌پرسد
var reply = await _inventoryClient.CheckStockAsync(new StockRequest { ProductId = 5 });

چالش‌های اصلی

  • Distributed Transaction: تراکنشی که چند سرویس را درگیر می‌کند (راه‌حل رایج: Saga Pattern).
  • Observability: ردیابی درخواست بین چند سرویس (Correlation Id، Distributed Tracing).
  • Network Latency: هر فراخوانی بین‌سرویسی یک فراخوانی شبکه‌ای است، نه یک متد داخلی.

اشتباه رایج

❌ شروع یک پروژهٔ کوچک/جدید مستقیماً با معماری میکروسرویس — پیچیدگی عملیاتی (Deploy، Monitoring، Network) را از ابتدا اضافه می‌کند. ✅ اغلب توصیه می‌شود با یک Modular Monolith شروع کرد و در صورت نیاز واقعی به میکروسرویس مهاجرت کرد.

خلاصه

میکروسرویس سیستم را به سرویس‌های کوچک و مستقل با دیتابیس جدا تقسیم می‌کند؛ ارتباط از طریق API یا پیام‌رسانی انجام می‌شود؛ برای پروژه‌های کوچک معمولاً Modular Monolith گزینهٔ بهتری است.

حالا امتحان کن

🧩آزمون مبانی میکروسرویس3 سؤال · نمره قبولی 60٪
این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←