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 بهتر.