Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
4 posts found #dotnet
What Are Microservices and What Are They Not? Independent Deployability and Information Hiding
Software Architecture PART 01

What Are Microservices and What Are They Not? Independent Deployability and Information Hiding

A microservice is a service modeled around a business domain that can be deployed without touching the others; the criterion is not size but independent deployability and information hiding. Lewis and Fowler's nine characteristics, Newman's definition, separating the contract from the internal model in C#, the difference from SOA, and Bookstore's service candidates.

8 Nov 2026 11 min 3
The Cost of Microservices: When Are They Unnecessary and When Are They Inevitable?
Software Architecture PART 02

The Cost of Microservices: When Are They Unnecessary and When Are They Inevitable?

Microservices are unnecessary for a single-team system without the prerequisites (automated provisioning, monitoring, fast deployment); they become inevitable once teams waiting on each other and parts that scale differently become measurable. The real cost of a network call, measured, plus the fallacies of distributed computing, Fowler's prerequisites, a correct reading of the Prime Video case and a decision checklist for Bookstore.

8 Nov 2026 12 min 4
No Transactions Across Microservices: Embracing Eventual Consistency by Design
Software Architecture PART 05

No Transactions Across Microservices: Embracing Eventual Consistency by Design

Distributed transactions (2PC) are not used across services; a rule that needs immediate consistency stays in one service, and a flow spanning several services is built with sagas and compensating actions, with events going through an outbox. The real error TransactionScope gives on Linux and macOS, a choreographed checkout saga, intermediate states in the domain, and eventual consistency shown to the user with 202 Accepted.

8 Nov 2026 13 min 3
Microservice Communication Styles: Sync Request/Response, Async Events and Temporal Coupling
Software Architecture PART 06

Microservice Communication Styles: Sync Request/Response, Async Events and Temporal Coupling

If the caller must wait for the answer, communication is synchronous however much await the code has, and it binds two services through temporal coupling; if the answer isn't needed now, prefer an event or a local copy. A comparison of REST, gRPC (including deadlines reaching the server) and messages, a checkout simulation while Inventory is being deployed, the command versus event split, and a decision table.

8 Nov 2026 12 min 3
Blog Map