
“Once again Saltmarch has knocked it out of the park with interesting speakers, engaging content and challenging ideas. No jetlag fog at all, which counts for how interesting the whole thing was."
Cybersecurity Lead, PwC
Microservices have gone from architectural buzzword to mainstream standard. But with adoption comes confusion. What exactly is a microservice? How do you design one well? And do traditional design principles still apply?
This article cuts through the hype. It offers a grounded view of what microservices are (and are not), how to design them sensibly, and where common principles help, or hurt.
We’re taught to honor ideas like extensibility, reuse, cohesion, coupling, and the SOLID principles. But in practice, blindly applying them often backfires.
Extensibility is the idea that future changes should require minimal code edits. Sounds great, until you guess wrong. You might build elaborate hierarchies and abstractions... only to discover the actual change is something else entirely.
Code is like people on a crowded bus—the more you have, the harder it is to get new things on board.
Extensibility done without insight leads to unnecessary complexity, not flexibility.
Reusable code must be general. Useful code must be specific. Trying to be both leads to bloated abstractions that serve neither. Reusability requires not just technical skill but deep understanding of the problem domain.
Design principles aren’t wrong. But misusing them is easy.
Single Responsibility Principle (SRP) and Open/Closed Principle (OCP), for instance, often get applied dogmatically. Teams over-engineer in the name of purity—only to ship code that’s harder to read, change, or test.
Ask not: “Am I following the principle?”
Ask: “Is this helping the outcome?”
YAGNI: You Aren’t Gonna Need It: urges us to avoid speculative features. It’s a good guardrail against over-design. But too much YAGNI means under-preparing for known changes.
Don’t Repeat Yourself (DRY) is not just about eliminating duplicate lines. It’s about avoiding duplicated effort.
Examples of DRY violations:
Automate the repeatable. Focus human energy on work that requires judgment.
It’s not just “a service with a REST endpoint.” It’s not about size.
A microservice is a domain-aligned, independently deployable, and autonomously developed component that communicates over a well-defined interface.
Think of “micro” the way you think of a microscope: it doesn’t mean small in size, but narrow in focus.
Monoliths:
For early-stage products, monoliths often outperform microservices in speed and simplicity.
If you’re a startup, build a monolith. Your goal is survival, not elegance.
The drawback? Any change requires touching the whole system. When many teams share the same codebase, agility suffers.
1. Autonomy of Development
Teams can build and ship services independently.
2. Isolation of Deployment
Each service can be deployed without affecting others—if designed with proper semantic versioning.
3. Separation of Governance
Ownership is clear. Teams don’t need to coordinate every change with others.
But these gains come with costs:
Design is always about trade-offs.
A key mistake in system design is technology-based partitioning.
Bad partitioning:
Good partitioning:
This is called domain-based cohesion. It aligns systems with how the business thinks—not how engineers like to separate concerns.
Developers say:
“We want maximum reuse and minimal coupling.”
But those goals are in tension.
Optimize for | You get | But you also get |
Reuse | Less duplication | More coupling |
Low coupling | More autonomy | More duplication |
There’s no free lunch. Be intentional about the trade-off you’re making.
If services share a database, they’re not truly independent.
You wouldn’t make all your class variables public—so why expose your database schema to everyone?
Encapsulation lets teams evolve their services safely. Without it, any change risks cascading failures across the system.
Everyone wants consistency. Few understand what it costs.
Strong consistency requires coordination. Coordination kills agility.
Sometimes it’s worth it. Often it’s not.
Never ask your business stakeholders: “Do you want consistency?”
Instead ask: “What’s the real cost of a brief inconsistency, and can we tolerate it?”
Many teams start with a checklist of principles. Better teams start with goals and work backwards.
Ask:
Principles are not rules. They are tools. Use them with judgment.
Software design is not about choosing the best principle—it’s about choosing which downsides you’re willing to live with.
Good design is about recognizing tension, making compromises, and staying focused on the outcomes that matter.
This article distills ideas from Dr. Venkat Subramaniam’s talk, “Designing Microservices,” delivered at GIDS 2026. It captures the essence of his message: that thoughtful trade-offs and contextual application of principles matter far more than architectural trends or purity.
“Once again Saltmarch has knocked it out of the park with interesting speakers, engaging content and challenging ideas. No jetlag fog at all, which counts for how interesting the whole thing was."
Cybersecurity Lead, PwC
“Very much looking forward to next year. I will be keeping my eye out for the date so I can make sure I lock it in my calendar."
Software Engineering Specialist, Intuit
“Best conference I have ever been to with lots of insights and information on next generation technologies and those that are the need of the hour."
Software Architect, GroupOn
“Happy to meet everyone who came from near and far. Glad to know you've discovered some great lessons here, and glad you joined us for all the discoveries great and small."
Web Architect & Principal Engineer, Scott Davis
“Wonderful set of conferences, well organized, fantastic speakers, and an amazingly interactive set of audience. Thanks for having me at the events!"
Founder of Agile Developer Inc., Dr. Venkat Subramaniam
“What a buzz! The events have been instrumental in bringing the whole software community together. There has been something for everyone from developers to architects to business to vendors. Thanks everyone!"
Voltaire Yap, Global Events Manager, Oracle Corp.