Programming & Development

Monolith Decomposition: Business-First Boundaries, Microservices Second

Monolith Decomposition isn’t a refactor—it’s an organizational reset. Carve along the business seams—code follows. Principled Microservices Playbook This article is a standalone deep dive on how to properly decompose a monolith and is a chapter in our comprehensive series. You don’t need any prior context to get the full value from this post. To explore…

Spring @Transactional: Class vs Method — A Critical Design Choice

Most developers see @Transactional as a magic spell for data integrity. But a deeper understanding reveals it’s a powerful policy enforced by a proxy. This perspective immediately leads to a critical design question that is often overlooked: where should this policy be declared? This is not a simple coding convention. This decision directly impacts your…

@Transactional is Not Enough: A Deep Dive into Spring’s PlatformTransactionManager

We’ve all seen it. A critical operation fails halfway through, leaving data in a corrupted, inconsistent state. The @Transactional annotation was supposed to be the safety net, but it failed. The problem isn’t the tool. It’s the blind faith we place in it. To build truly resilient systems, we can’t just trust the magic. We…

The Two-Pizza Team Myth: The True Cost of Microservices

Two-Pizza Team Myth says small squads unlock endless agility—until the invoice shows up. Principled Microservices Playbook This article is a standalone deep dive on how to properly decompose a monolith and is a chapter in our comprehensive series. You don’t need any prior context to get the full value from this post. To explore all…

“Just Add an Index” Is Terrible Advice. Here’s Why.

Let’s be honest. Your query is slow. You ran EXPLAIN, you saw the execution plan, and you did the obvious thing: you added an index. But the result was disappointing. The speed didn’t improve much, and in some cases, it might have even gotten slower. Why? Wasn’t an index supposed to be the silver bullet? This…

Monolith vs. MSA? Stop Asking “Which,” Start Asking “Why.”

Architect’s Handbook for MSA This article is a standalone deep dive on how to properly decompose a monolith and is a chapter in our comprehensive series. You don’t need any prior context to get the full value from this post. To explore all related topics, please visit the full series index. -> Explore the Full…

Mastering Spring & MSA Transactions – Part 17: Understanding the SAGA Pattern: Theory & Key Concepts

When microservices each own their own database, a single global transaction across multiple services is typically unfeasible. Rather than forcing a “one-shot” commit or rollback (like 2PC), the SAGA pattern coordinates each service’s local transaction in a way that either all services complete successfully or any partial changes are undone by compensating transactions. This part…

Mastering Spring & MSA Transactions – Part 16: Why Transactions Are Different in a Microservices (MSA) World

In a monolithic system—where you likely have a single database—transaction handling can be straightforward: a single @Transactional boundary often suffices to guarantee atomicity (all-or-nothing). However, once you split your application into multiple microservices, each with its own local database or data store, old assumptions break down. Atomic updates across services become much harder, and the…

Mastering Spring & MSA Transactions – Part 15: Real-World Scenarios: Local @Transactional Usage

Even in microservices, where each service has its own database and a SAGA or TCC pattern coordinates commits, every service still relies on local transactions internally. Meanwhile, many applications remain monolithic or partially modular, handling multiple DAOs or repositories within a single DB connection. In both worlds, Spring’s @Transactional is the bedrock for ensuring atomic…

End of content

End of content