A complex backend
The back-end layer organizes the data using TimescaleDB; a time series database optimized for data that changes over time, which was crucial in this project. This aggregated data is then sent to the front-end application. The backend is hosted on AWS and includes several components:
1. Zabbix, a powerful data monitoring platform, collects real-time data from the customer’s server racks. However, collecting this data was not simple. Due to the large amount of data pushed every few seconds, real-time processing and visualization proved to be a significant challenge. We overcame this by adding TimescaleDB to store the large amount of data that Zabbix collects.
2. In this project, the backend acts as the frontend, but what does that mean? In order to optimize the front-end, the back-end service is tailored to meet the requirements of the front-end application. The back-end layer is responsible for processing the large amount of data it receives from communicating with Zabbix into manageable chunks. This process of collecting and summarizing is data aggregation. This way, the front-end layer is able to filter the data and visualize it in different graphs. This layer also implements business logic, which decides whether users are prohibited from viewing data. This ensures that customers can view their data only, not those of others. Additionally, the implemented business logic allows the front-end layer to make calculations based on raw data communicated by Zabbix, such as energy consumption, power quality, KPI scores, etc.
3. The API layer is developed to facilitate communication between the Zabbix and business logic components to implement additional features on the platform. Additionally, our API ensures the frontend application receives optimized data for visualization and user-specific needs.
4. We implemented a multi-tenant setup to guarantee clear data separation, allowing multiple parties to share the same software while keeping their data separately. This is in combination with a central IdP system, which is responsible for user authentication and RBAC, ensuring that each member can only access their own relevant data. The addition of the multi-tenant setup provides a personalized user experience while maintaining a high level of security.