Microservices vs. Monolith
Vor- und Nachteile
Vorteile 30_Knowledge/Microservices
- Bessere Selbstorganisation von großen Teams, passend zur Organisationsstruktur (Conway's Law) → Cross-funktionale Teams
- Feingranulare horizontale Skalierbarkeit, ggf. auch automatisch
- Schnelleres Deployment von Änderungen (aufgrund der kleinen Deployment-Einheiten)
- Optimiert für Ersetzbarkeit (Neuentwicklung eines Microservices ist vergleichsweise günstig)
- Technologie-Heterogenität (Polyglot Sprachen und Persistenz) → nutze die Technologie, welche für das jeweilige Problem am besten geeignet ist
- Fault-isolation und Widerstandsfähigkeit (u.a. mithilfe von "Circuit Breakers")
Vorteile 30_Knowledge/Monolith
- Einfacher zu handhaben, da kein verteiltes System und weniger operativer Aufwand nötig
- Einfacher zu verstehen
- Strong Consistency möglich
- Bessere Performance und Energieeffizienz bei Szenarien, die kein dynamisches Skalierungsverhalten erfordern.
Entscheidung wie treffen?
Neues Projekt? → Monolith
Ein kleines Team? → Monolith
Skalierung- und Performance-Anforderungen linear? → Monolith
Microservices können nur dann potentiell sinnvoll sein, wenn ein großes, heterogenes System mit unterschiedlichen Skalierungsanforderungen benötigt wird.
Skalierungsanforderung
Probleme von verteilen Systemen
Risks and Challenges of the Microservices Architecture Style
Vergleich Performance
Studies:
- @Ueda.etal.2016.WorkloadCharacterizationMicroservices
- @Villamizar.etal.2017.CostComparisonRunning
- @Al-Debagy.Martinek.2018.ComparativeReviewMicroservices
- @Johansson.2019.InvestigatingDifferencesResponse
- @Bjorndal.etal.2021.BenchmarksPerformanceMetrics
- @Blinowski.etal.2022.MonolithicVsMicroserviceArchitecture
- @Okroj.Jatkiewicz.2023.DifferencesPerformanceScalability
- @Faustino.etal.2024.StepwiseMigrationMonolithMicroserviceArchitecture
- @Cabane.Farias.2024.ImpactEvent-drivenArchitecturePerformance
Vergleich Energieverbrauch
- Energy Efficiency of Different Software Architecture Styles
- Impacts of Software Modularity on Energy Efficiency
Microservices → Monolith
Amazon Prime Video
Even Amazon can't make sense of serverless or microservices
We’re gonna break [the monolith] up and somehow find the engineering discipline we never had in the first place... Now you went from writing bad code to building bad infrastructure.
— Kelsey Hightower
Monoliths are not dinosaurs | All Things Distributed
Building evolvable software systems is a strategy, not a religion. And revisiting your architectures with an open mind is a must.
Istio
Istio as an Example of When Not to Do Microservices – Software Blog
Segment
Goodbye Microservices: From 100s of problem children to 1 superstar
Monoliths, Microservices, and Containers. Oh my!