Member-only story
Core Services Teams Are Still a Bad Idea
I’m doubling down on declaring this a microservices anti-pattern
Though I’ve written a number of software engineering articles, I write rarely the typical programming how-to’s. Instead, my articles are more like opinion pieces. Having worked with software for a few decades, I’ve seen some practices that work, and others that don’t.
So I write about these practices, offering up my perspectives on software patterns and anti-patterns. Needless to say, I get pushback from folks whose experience has differed from mine. Which is great (as long as the pushback is polite)! Sometimes this feedback causes me to adjust a position, or reconsider it altogether.
But with what seems to be my most controversial position — that the notion that a “Core Services” team within a microservices-driven organization is an anti-pattern — I’ve yet to budge. The thing is, there are some fundamentals when it comes to microservices. And this idea of a Core Services team runs counter to many of those fundamentals.
Let’s talk about fundamentals
Not too long ago I was happily reminiscing with a former director about our time at a previous company. At one point, I mentioned my regrets about the Core Services team we’d co-founded. Perhaps understandably, his smile faded as he demanded, “What are you talking about?!!” and proceeded to remind me of all the things our team had set out to achieve. “Yeah,” I responded, “but it didn’t really work.”
The reason it didn’t really work there is the same reason it rarely really works anywhere. To explore this, let’s discuss the main purpose of using microservices in the first place.
Microservices is all about team productivity
Up until a certain point, it makes sense for our engineering team to work on a single codebase (the so-called monolith). Our organization — and our codebase — is small enough that we all more or less know what each other is working on. We can coordinate major events such as QA periods and releases.
Get to a certain size, however, and people start to specialize. They specialize according to their function of course: front-end…