Architectural Goals and Constraints
Performance and Scalability
The Engroup services must be able to serve an unlimited number of users 24/7.Engroup must be optimized in its internal operations and support a load-balancing and clustering model. The architecture and implementation of all components must support this model.Any changes in the configuration model may not affect this architectural constraint.
Extensible
Engroup services are developed based on the SAAS (Software as Service) model. Additional components can be developed in the future and support any services within the constraints of the Engroup architecture. The system components are designed with loose coupling and high cohesion. Integrating new applications into the Engroup platform must not impact performance of existing applications.The cost of upgrading and extending existing applications must be minimal.
Maintainable
The code base of Engroup is increasing rapidly with the number of services it provides. The development costs and maintenance efforts must be minimized by defining clean, clear and correct responsibilities of each layer, module and package.
Modularity
Each application’s code base is independent of others; any change the source code of any application must not impact any other application.
Testability
Automated unit testing of all modules are an essential step during all stages of development. The architecture is designed to make it easy for developers to isolate and unit test each individual module and automated unit tests are performed with each build cycle.
High level architecture diagram


