Every8.Cloud Architecture
Updated on Jul 17, 2023 6 minutes to readOverview
The architecture of the platform is best visualized as a layered structure. No matter the account's function - whether it's a standard account for enterprise management system access or a microservice - the architectural layout remains consistent.
![](/assets/app_641cb0dad1fe4/public/__Articles__/Main/Every8.Cloud%20Architecture/multi-layer.png)
At the foundation of this structure is the core functionality. To interact with this layer, we utilize a standard module known as the Control panel. This module handles a variety of tasks such as:
- Basic account settings (color scheme, default timezone, data format, alerts for exceptional situations, etc.)
- Security settings and user access control
- Managing module updates
- Configuring standard pages (login page, password recovery page, maintenance and error pages)
- System log that keeps records of system-level events (errors, notifications, app installation/removal, etc.)
The next layer takes care of the business logic of apps, which are used by the users. The app business logic is developed at the metadata level.
This layer is called Application builder and is responsible for the following operations:
- Installation of apps from the Marketplace
- Removal/cloning of apps
- Development and modification of apps
Application builder serves as the basis for the next logical level of the Every8.Cloud platform, specifically for the entities of apps.
For additional app configuration, the Implementation layer is used.
This layer provides access to the following operations:
- User access setup to the app (role assignment)
- Backup of apps (the full content of the app is copied, including metadata, data, files, and the app's Implementation layer)
- API settings
- Scheduled jobs management
- Triggers setup and management
- Setup of integration with external services, including Every8.Cloud services
- Audit log of the data object changes
The final level is the User interface itself, used for working with data objects.
Let's break down with simple examples which level is responsible for what operations:
- User access to the system - Control panel
- User access to the app - Implementation layer (role assignment)
- Export of app metadata - Application builder
- Backup of the app - Implementation layer
- Adding a user to the user list - Control panel
- Adding an employee to the employee list - User interface
Interactions Between Layers
The Every8.Cloud platform takes care of interactions between the described layers. No additional settings or actions are needed for this. Communication typically flows from the bottom up. The final point is the user interface, which is built based on the preceding layers.
For example, consider an app at the Application builder level providing a printable invoice form. If this is a standard app installed from the Marketplace, there might be a scenario where we either can't or doesn't want to modify the printable form created at the Application builder level. In this case, we can overwrite the form at the Implementation layer, replacing the default printable form with the customized one. When users interact with the app through the user interface, they will only see the modified printable form.
This exemple represents the standard communication flow from bottom to top across the platform's layers.
In some cases, however, top-down interactions between layers are necessary.
For instance, some apps feature a user-creation interface from the app's user interface. System users reside at the Control panel layer, while the user interface is at the very top.
Another common example is setting up a link between a company's employee list item (or a similar entity) and a system user.
When might this be useful?
- When there's a need to build an additional audit log of changes at the application level (in cases when the employee list data is as important as the user ID).
- For additional access restrictions at the application level.
Example: An employee should have access to objects within their office. The office isn't in the user list, it only exists at the app data level. To understand which employee corresponds to the current system user, a common implementation is to set up the linking of employees to system users.
User Profile and Its Role
There's another element that, in some cases, influences the user interface as much as the Implementation layer - the User profile.
Similar to how the Implementation layer settings can override the app's business logic defined at the Application builder level, the User profile can override the default settings defined at the Control panel level. This pertains to interface language, user timezone settings, date format, and the first day of the week setting.