

Therefore, monoliths provided a great experience for developers as they meant there was no chance of failed transactions resulting in an inconsistent state. A monolith can mutate any of its state within a single transaction, which means it yields a binary outcome-it worked or it didn’t. Monoliths by nature rely on a single database, which means all state is centralized. The model is simple, consistent, and similar to the experience you get programming in a local environment. Twenty years ago, developers almost always built monolithic applications. In full disclosure, I’m the Head of Product for Temporal, so I might be biased, but I think this approach is the future. After that, we’ll talk about Temporal’s stateful execution model and how it attempts to solve the problems introduced by service-oriented architectures (SOA). In this article, I’ll discuss how we reached this point with a brief stroll through the history of networked applications. Distributing things also introduces a whole new world of problems, many of which were previously solved by monoliths. Distributed architectures have enabled developers to scale and meet the needs of an increasingly connected world. In just 20 years, software engineering has shifted from architecting monoliths with a single database and centralized state to microservices where everything is distributed across multiple containers, servers, data centers, and even continents.
