Kosten
Microservices kunnen makkelijker per component geschaald worden, zonder dat je het geheel moet opschalen. Daarmee heb je dus geen kosten voor het opschalen van iets wat niet direct nodig is. Al lijkt dit vooral interessant voor grote e-commerce bedrijven.
Doorgaans is het makkelijker om problemen te achterhalen en op te lossen in een microservices architectuur, het is vaak duidelijker waar (in welke microservice) het probleem moet zitten. En makkelijker werk zorgt voor een betere productiviteit en daarmee minder kosten per functionaliteit.
Doordat je kleinere stukken kunt opleveren, kun je een kortere time to market hebben, daarmee kun je dus eerder inkomsten genereren en dus ook meer inkomsten.
Doordat duidelijker is waar iets veranderd is, hoeft er minder/kan er gerichter per keer getest worden, waardoor je een kortere testtijd hebt, en dus minder testkosten.
Testen
In een microservices architectuur hoef je per component minder te testen dan voor de hele SUT. Dus als er alleen een wijziging in één microservice zit, hoef je van de andere microservices niet de microservice specifieke testen uit te voeren, dus test je in totaal minder.
Je kunt makkelijker kleine onderdelen stubben. Een nadeel is dat je meer dingen moet stubben. Elk voordeel heeft zijn nadeel.
Je kunt de verantwoordelijkheden en doelen beter scheiden doordat je meer testlevels hebt. Wie test wat met welk doel in welke omgeving.
Maar er zijn ook zeker nadelen. Als je de hele SUT wilt testen, moet je wel alle losse componenten zien te deployen, met de juiste versies, dit is complexer dan één monolith deployen.
Verder moet je als tester het geheel goed begrijpen en snappen hoe deze microservice past in de architectuur, maar ook hoe deze als losse microservice te gebruiken/ testen is.
Je krijgt op veel meer punten logging, namelijk van elke microservice, voor het debuggen moet je die logging aan elkaar zien te refereren.
CI/CD
Microservices zijn doorgaans klein, en zijn dus sneller te deployen dan de hele SUT. Dus als er maar één of enkele microservices zijn bijgewerkt, hoeft er minder gedeployed te worden.
Teams die aan één of enkele microservices werken, kunnen zo hun eigen onderdeel deployen en testen, zonder het geheel te hoeven kunnen deployen.
Middels Blue/Green deployments kun je makkelijk één of enkele microservices omzetten naar een nieuwe versie zonder dat je de volledige capaciteit van een 2e monolith tijdelijk in gebruik hebt.
Je creëert met een microservices landschap een complex configuratielandschap, en daardoor een grotere kans op o.a. configuratiefouten. Welke microservice zit met welke microservice verbonden.
Contract based testing
Contract based testing is best complex bij een microservices architectuur omdat er veel meer interfaces zijn dan bij een monolith. Zeker als je als team meerdere microservices ontwikkelt, is het voordeel van contract based testing beperkt.
In grote organisaties met veel teams die aan verschillende microservices werken, kan het wel voordeel bieden.
Er lijken vooral theoretische voordelen te zijn. Maar de praktische voordelen lijken wat ver te zoeken.