With time, we are discovering concepts and techniques that allow us to build large applications. Modularity, or structuring an application as independent modules, allows you to build complex systems from simpler parts and to get software reuse. When an application is structured as components, the individual parts can reside together in a single computer, or they can interact by using remote-procedure calls across a network. So, components give both modularity and natural distribution. Structuring an application into independent components can create the problem of managing the components.
Monolithic programs fail and are restarted as a unit.
But, with a modular system, the failure of one component must not corrupt the others. There must be a way to isolate faults and limit fault propagation. Transactions provide modular execution and thus simplify and automate fault handling. They provide a simple conceptual execution framework for both implementers and users. The user thinks of a transaction as a single change event that either happens or doesn't happen.