The software architecture
Before we start examining how our software architecture needs to change to become cloud native, we need to review the current software architecture.
The following diagram shows how the application is currently structured. This diagram has been simplified, so it does not show repositories or other supporting classes as these don't add much useful information to our refactoring efforts:
To explain the architecture, we will run through how a request is processed. The user of a Web Browser navigates to the application. The URL used invokes an MVC Controller.
The MVC Controller checks if there is an existing session and if so, loads the state from Session as a Service. The MVC Controller then invokes a Domain Service with the information provided from the Web Browser and/or Session.
The Domain Service then retrieves an Aggregate Root from the Relational Database and...