Case Study: Reengineering of the Remote Device Management System

| Vasyl Soloshchuk

The Scope

Reengineering an existing Remote Device Management system to make it scalable and increase its performance.

The Challenge

When presented to INSART, the Remote Device Management system had already been operating for a few years. It had tangled source code. We maintained and enhanced it with new features. However, the more enhancements we provided, the more complex the system became, and more bug checking was needed as even minor changes could significantly influence the system’s functionality.

The major challenge was that the system had monolithic core architecture not compatible with current requirements, which made implementing new features tricky. And as more features were added, system scalability suffered.

Another challenge was that the legacy system used a relational (SQL) database. According to its nature, a RDBMS relays on data model normalization which creates multiple relations between data model entities represented by tables. As a result, to obtain the data necessary for certain functions, several tables had to be queried, creating significant degradation in performance. Alternatively, today there are many NoSQL database options which allow optimization of the data storage scheme to provide better performance.

Many aspects had to be changed to increase performance, improve scalability and ease maintenance of the system.

Solution

We started with a “clean sheet” and built an entirely new architecture keeping Java as the main development platform. Scalability of the system was the main problem to be solved. We wanted to select each feature to a separate component. The challenge was building such an architecture where every component would be independent of the other components while being able to interact and exchange data with each other.

To achieve this, we decided not to use EJB. Instead, we chose the Spring Framework, which allowed us to easily modularize the system and also simplified creating code due to the wide variety of development tools and functions available.

With this clean sheet, we knew the database structure must also be changed. Using MongoDB allowed the storage of data in denormalized form, which is the most efficient means for this project. As a result, system performance increased significantly. Spring Data framework simplified interaction with the database by considerably reducing the amount of created source code.

Using Spring Integration, we could create a distributed system with the possibility of adding significant new features and functions to the system in the future, without impacting the existing system. In order to save system resources, we also deployed the Tomcat servlet container and AngularJS and Bootstrap frameworks.

Technologies

Results

Using new technologies and creating new system architecture not only improved the system’s scalability and increased performance more than 10 times, but it also reduced the time of development.

Performance Enhancement

 

Moreover, using the modified data structure allows the new system to significantly simplify data processing and eliminates many problems specific to the legacy system (e.g., damaging data as a result of user error is impossible in the new system).