iCleanse, a prominent out-of-home (OOH) advertising company, is an exclusive manufacturer of disinfection stations suitable for installation in public places such as hotels, hospitals, airports, and malls. Each device comprises the actual disinfection station and an attached tablet that displays advertising messages to users.
iCleanse was aiming at significantly increasing the number of these stations in operation. That is why they contacted ABCloudz team to assist with the development of a scalable web application.. This would help them manage and track data more efficiently, providing full control over the stations and tablets.
This case stands out because it highlights the intricacies of a large web app development project, detailing how our team tackled challenges during the planning, development, and optimization phases.
Challenges encountered during the planning stage of the solution
At the beginning of the project, iCleanse presented us with a task — to develop a feature-rich administration panel. This panel would enable their employees to access the disinfection stations, their functionalities, statistics, and much more. Additionally, the customer’s staff needed the capability to delegate the responsibility of managing specific device groups to their clients, advertising campaign owners. The technical challenge was clear and understood by the team, such a request was rather ambitious due to the customer’s limited budget. This is a rather common occurrence in large projects.
How we approached client’s limited budget
After a comprehensive analysis and close communication with the client to identify feasible solutions, our team chose to develop a minimum viable product (MVP) that included:
- Admin panel with a device-schedule management module for delivering OTA to the tablets;
- Device management module with device registration logic, grouping device logic, and notifications;
- Java library for exchanging data between devices and the server.
As part of the solution, we built an extendable architecture that considered future enhancements:
- Assets and playlists dashboard with review and edit functionality;
- 9-level user hierarchy, split into 5 client-facing roles and 4 system user roles;
- Statistics dashboard and its mechanism;
- User accounts and registration systems;
- Additional backend-specific tasks for the Java library.
With ABCloudz’s decades-long expertise in application development, we created our own library of .Net Core back-end monolith templates for projects based on AWS services. Through the use of such a template, our team achieved considerable time and cost savings.
Challenges faced during the development process of the platform
During the planning stage of the project, our specialists clearly identified the customer’s expectations regarding the future solution:
- Infrastructure’s high availability and failover for maintaining undisrupted operation;
- Efficient and low-effort communication between the elements of the system;
- Secure access to backend and station-mounted tablets;
- Scalability potential.
Technology stack & Infrastructure
We opted for our .Net Core template for the backend and combined it with SignalR technology to ensure effective real-time communication with Amazon RDS for PostgreSQL database for housing customer’s data and Amazon S3 for storing video content for the tablets. Our database engineers used two Multi-AZ deployments to ensure high availability and failover support.
Easy access to backend
iCleanse requested us to develop a Java SDK to streamline the communication process between the Android-powered tablets and the REST API backend. This SDK also allows the customer to gain access to each individual tablet, effectively encapsulating routine tasks and ad displays schedules while maintaining a high level of object abstraction and data serialization. Moreover, it allowed customer’s administrators to avoid performing low-level HTTP communication with the server and can instead utilize higher-level methods provided by SDK’s functionality.
Security
For enhanced security, we implemented a Bastion server equipped with a public IP address. Administrators utilize this server to deploy builds and securely access the infrastructure’s backend through a VPN connection. To bolster these security measures, we only allowed specific whitelisted IP addresses to connect to the database.
Scalability
For our database environment, we selected AWS RDS for PostgreSQL to ensure the solution’s scalability both at launch and into the future. AWS RDS offers both vertical and horizontal scalability features.
Furthermore, our specialists chose Angular 10 as the foundation for the admin panel. This full framework is ideal for intricate and large-scale projects, offering seamless scalability.
Optimization challenges
As expected, the limited IT budget for cloud expenses combined with an expanding number of disinfection stations put considerable pressure on the database. It was equipped with 4 CPUs and 16 GB RAM; however, this proved to be insufficient as the database was operating on 80% load that could ramp up to 100%, putting it into a deadlock.
How we solved the issue with database performance
Our team decided to approach the problem from multiple angles to ensure database performance and make it budget-friendly at the same time. They used a popular method of data aggregation to reduce time and resources needed to analyze it.
The users’ statistics are consolidated from the previous day at 12 AM, daily data is grouped into weekly batches, and weekly data is further merged into monthly blocks. This way, the client receives a single aggregated data entry.
For security and data loss prevention reasons, the team runs two parallel API instances; therefore, some data could duplicate itself. This approach causes additional stress on the database, which reduced performance. This problem was mitigated by optimizing database performance through unique indexes for each data record. These indexes effectively eliminated duplication of the aggregated data.
This two-part solution proved to be highly effective from the technical and financial points of view. We were able to reduce the need from maintaining 4 CPUs and 16 GB RAM with average 80% to only 2 CPUs and 8 GB RAM with approximately 10% load.
What was the final product?
As a result, iCleanse received a custom admin panel for their disinfection stations. It offers many extensive features such as full access to each device, ability to manage them, deploy builds, and more. Administrators can also view aggregated statistics and other crucial data. Advertisers can effectively create and manage content for their campaigns. These features are easily accessible and require only minimal input from the users.
The solution has several security layers to ensure protection against malicious attacks. Our specialists also effectively optimized the application’s information processing capabilities. Combined with tweaks to the database, our customer enjoyed unprecedented database performance with minimal maintenance costs.
After completing the first phase of the project, we moved on to the performance enhancement stage, including the integration of AWS CloudFront and Lambda@Edge, which we explain in detail in the following blog post about this project.