Microservices arean antipatternLindsay Holmwood
View Slide
Why microservices?
Design strategy tomanage complexityin our systems
If the system or teamget too big, we:1. Split the system
If the system or teamget too big, we:2. Split the team
Popularised by thedevops movement
CD + containerswere the drivers
In use at the big end of town
“It works forGoogle, so we’llscale it down andget the samebenefits!”
We cargo culted adesign strategywithout understandingthe tradeoffs
Real talk:The smallest microserviceat Google probably doesmore transactions than thelargest service in yourorganisation.
Real talk:We took a pattern formanaging huge systems,extrapolated it down toour size, and hoped itworked.
Real talk:Hope is not a strategy.
Some downsidesyou should thinkabout:
You’re replacingfunction calls withnetwork calls
Source: “Systems Performance: Enterprise and the Cloud” by Brendan Gregg
Is that latencyworth it?
What hard limits areyou imposing to controlunpredictability?
Microservices are asystems multiplierfor your shitty code
How is your◦ modularity?◦ isolation?◦ encapsulation?
Refactorfirst
Then scale when theperformanceimpacts users
1. Make it work2. Make it right3. Make it fast
1. Make it work2. Make it right3. Make it fastRefactor
1. Make it work2. Make it right3. Make it fastRefactorMicroservice
Microservices havea higher cost ofownership
Operational requirements:◦ CD pipelines◦ Network & compute & storage◦ Logging◦ Monitoring◦ Tracing & observability
Security requirements:◦ Authentication◦ Identity◦ Monitoring
This costs more(both in systems bills and engineering time)
But what if wejust… didn’t?
Problems areharder to debug
Incidents have> MTTD & MTTR
Delivery slows
Increasedcommunication +coordination overheadbetween teams
Sequencing ofchanges acrossmultiple services
Poor service boundaries?You have to get multipleteams moving in the samedirection to deliver a change.
Stakeholders for technical changesare rarely exclusively technical
Requires coordinationacross disciplines likeproduct, design,marketing, analytics, …
You needestablished and understoodcommunication paths
You needestablished and understoodchange coordination
You needestablished cultural normsfor resolving conflict
Microservices are aneffective way toseparate concerns incomplex systems
Microservices are aninefficient way oforganising people inorganisations< 1,000 people
The smaller the org,the smaller the return
You are notGoogle/Netflix/AWS/Facebook/…
Do the job you have,not the job you want.
Thank you!(fight me)