While designing a software project, some software engineers tend to put more focus on shiny technologies, technical details and UML’s at the beginning of the project. If you start designing a complex software system with those technicalities, then you will be in trouble as the project grows. Software systems change and evolve in time. The design of the software should allow these changes to be applied in acceptable period of time. To be able to make a design that can respond to changes, the domain should be understood first. …
Microservices! Yes many people are talking about it but you should be aware of challenges of microservices. There should be some questions to ask yourself before starting it.
If you are working with Microservices and database per service then SAGA will be a topic for you to think about. With database per service pattern every service has its own database.
Think about you have a Microservices e-commerce application. From the user perspective the user wants to pay for the products in her shopping cart. It seems like a single operation/ transaction. On the background there are multiple transactions they should be combined into a single larger transaction.
First of all we need to understand what does ACID mean in database systems.
Atomicity means a transaction is succeeded or failed. There is no partial success or fail. …