Microservices معماری نرم‌افزار که برنامه رو به چند سرویس کوچک مستقل تقسیم میکنه. هر سرویس مسئولیت خاصی داره.

Microservices vs Monolith

Monolith: همه چی در یه Codebase
Microservices: سرویس‌های جدا

مزایا

Scalability: هر سرویس مستقل
Technology Freedom: هر تیم Stack خودش
Fault Isolation: یه سرویس بمیره، بقیه کار میکنن
Independent Deployment

معایب

پیچیدگی: مدیریت سخت
Network: تأخیر
Data Consistency: چالش‌برانگیز
Debug سخت‌تر
Cost: منابع بیشتر

مؤلفه‌ها

Service: خدمت
API Gateway: ورودی
Service Discovery: پیدا کردن
Load Balancer
Message Queue
Database: هر سرویس

Communication

REST: HTTP
gRPC: سریع‌تر
Message Queue: Async
Event Streaming: Kafka

Data Management

Database per Service. Consistency با Saga Pattern.

Container

Docker و Kubernetes استاندارد.

Service Mesh

Istio، Linkerd. مدیریت شبکه.

API Gateway

Kong، AWS API Gateway، Traefik.

Monitoring

Distributed Tracing با Jaeger، Zipkin.

CI/CD

هر سرویس Pipeline مستقل.

Testing

Unit، Contract Test بین سرویس‌ها.

مناسب کی؟

پروژه‌های بزرگ با تیم‌های زیاد. Startup ساده نیاز نداره.

Domain-Driven Design

سرویس‌ها بر اساس Business Domain.

سباهاست

VPS و Kubernetes سباهاست برای Microservices.

جمع‌بندی

Microservices برای پروژه‌های بزرگ عالیه. برای شروع Monolith بهتر.