Monolith je výchozí volba. Microservices řeší specifické problémy za cenu komplexity.
Monolith¶
- Jedna codebase, jeden deployment
- Jednoduchý vývoj a debugging
- Sdílená databáze — transakce jednoduché
- Horizontální škálování celé aplikace
- Ideální do 10-20 vývojářů
Microservices¶
- Nezávislé služby, nezávislý deployment
- Technologická diverzita (Python + Go + Node)
- Nezávislé škálování
- Distribuované transakce — obtížné
- Operační komplexita (networking, monitoring, debugging)
Trade-offs¶
- Komplexita: mono ★☆☆, micro ★★★
- Deployment: micro rychlejší per-service, ale více pipeline
- Scaling: micro granulární, mono celé
- Debugging: mono jednoduché, micro distributed tracing
- Team independence: micro lepší pro velké organizace
Pravidla¶
- Začněte monolitem
- Microservices až když monolit bolí (deployment, scaling, team conflicts)
- “Modular monolith” je dobrý kompromis
Monolith first¶
Začněte monolitem, extrahujte služby když to má smysl. Premature microservices = premature complexity.
monolithmicroservicesarchitektura