Microservices چیست؟
تقسیم یک اپلیکیشن بزرگ به سرویسهای مستقل و کوچک که هرکدام مسئول یک قابلیت کسبوکاری مشخصاند و جدا توسعه، دیپلوی و مقیاسدهی میشوند.
چرا مهم است؟
وقتی تیم و محصول بزرگ میشود، Microservices اجازه میدهد تیمهای مختلف مستقل از هم دیپلوی کنند و بخش پرترافیک را جدا از بقیه Scale کرد؛ اما این استقلال هزینه پیچیدگی توزیعشده را هم به همراه دارد.
ویژگیهای کلیدی
- هر سرویس دیتابیس و چرخه دیپلوی مستقل خودش را دارد.
- ارتباط بین سرویسها از طریق API (REST/gRPC) یا رویداد (Message Broker) انجام میشود، نه فراخوانی درونفرایندی.
- خرابی یک سرویس در حالت ایدهآل کل سیستم را از کار نمیاندازد (تحمل خطا).
- هر سرویس میتواند فناوری/زبان متفاوتی داشته باشد.
هزینهها
- نیاز به زیرساخت DevOps قوی: CI/CD جدا برای هر سرویس، Service Discovery، Monitoring توزیعشده.
- Debug کردن یک درخواست که از چند سرویس عبور میکند بدون Distributed Tracing سخت است.
- Consistency داده بین سرویسها دیگر با یک Transaction ساده دیتابیس تضمین نمیشود.
چه زمانی مناسب نیست
پروژه تازهشروعشده یا تیم کوچک — دامنه کسبوکار هنوز بهخوبی شناخته نشده و مرز سرویسها احتمالاً چند بار عوض میشود؛ شروع با Modular Monolith معمولاً امنتر است.
اشتباه رایج
❌ شروع مستقیم یک پروژه جدید با Microservices بدون نیاز واقعی به مقیاس یا تیمهای مستقل (Premature Decomposition) — معمولاً سرعت توسعه اولیه را بهشدت کند میکند بدون آنکه مزیت واقعیاش (مقیاسپذیری مستقل) هنوز لازم باشد.
خلاصه
Microservices اپلیکیشن را به سرویسهای مستقل با دیتابیس و چرخه دیپلوی جدا تقسیم میکند تا هر سرویس مستقل توسعه و Scale شود. این استقلال هزینه پیچیدگی توزیعشده (Monitoring، Consistency، Debug) را به همراه دارد. برای پروژههای تازه یا تیم کوچک معمولاً Modular Monolith گزینه امنتری است.
