How to prepare our application architecture for container-based deployment ?

I am designing an application for a client but I am not sure if the architecture will be able to support gracefully his future demands for container-based deployment in a private cloud (docker on Amazon). 

Here is a draft of the architecture so far. 

  • Enduser - Reactive Web Module for the View.
  • Core Services -  Service Modules containing Entities and Business Rules for its own business domain. Will consume Integration Services Modules and provide them to the view Module through Service Actions.
  • Foundation Services  - Integration Services responsible for consuming external REST services providing them to the Core Services through Service Actions. There will be no dependency between the Integration Services and the Enduser module.

Additional information:

For now, each Integration Service Module will only be consumed by one Core Service Module, but in the future, they might be consumed by Multiple Core Services through Service Actions.

The Core Services will probably be consumed by other applications int the future.

Some Questions:

  • If I want to expose the services consumed by my Integration Services to multiple modules, should the dependencies be between the Core Service for that business domain and the other Core Service modules or should I allow my Integration Services to be consumed by other Core Services rather than the ones responsible for that business domain?
  • Will this architecture be able to support my clients future demands for container-based deployment in a private cloud gracefully?
  • Will this solution scale without problems?


Thank you all, any opinions will be appreciated.


Hi Paulo
- Perhaps it is ideal to have an Orchestrato layer above Enduser.

- In some cases, the ideal is to separate a DB layer (where the tables and their manipulation actions will be), and another layer for business rules.

- You can consume the services from any eSpace. It is just a matter of organization.
Note: Service Action do not generate cyclic references.


Read

https://success.outsystems.com/Support/Enterprise_Customers/Maintenance_and_Operations/Designing_the_architecture_of_your_OutSystems_applications/01_The_4_Layer_Canvas


I hope to have help





Fabricio Aguiar wrote:

Hi Paulo
- Perhaps it is ideal to have an Orchestrato layer above Enduser.

- In some cases, the ideal is to separate a DB layer (where the tables and their manipulation actions will be), and another layer for business rules.

- You can consume the services from any eSpace. It is just a matter of organization.
Note: Service Action do not generate cyclic references.


Read

https://success.outsystems.com/Support/Enterprise_Customers/Maintenance_and_Operations/Designing_the_architecture_of_your_OutSystems_applications/01_The_4_Layer_Canvas


I hope to have help


Thank you very much.