CutoverManager: Technical Insight

November 24, 2019 | Matthias Mair
Your planning data is safe!

The starting signal for the development of the CutoverManager was a detailed and sophisticated requirements document, which the company founders wrote based on their many years of experience in planning, controlling and executing successful cutovers/go-lives. Based on this, an architectural design could be worked out which not only implements the functional requirements of the document, but also fully takes into account the non-functional requirements.

Architecture

The results of the architectural design, such as technical context and cross-cutting concepts, are documented in arc42 which is an architecture documentation template. Enterprise Architect is used as UML modeling tool. In the model itself, not only components and their relationships to each other are mapped, but also a complete domain model is modeled, which is used in normalized form as a database schema.

CutoverManager Architektur

The CutoverManager is a web application based on the client-server architecture pattern with an additional layered architecture in the server. The layer architecture consists of the following three technical layers:

Controller
Receives incoming requests, validates data, and forwards the request to the business layer for response
Business
Contains the business logic and calculates a plan, for example. To do this, it collects the necessary data from the domain layer
Domain
Communicates with the domain model in the database

The decision for a web application was made consciously because it is not only state-of-the-art, but also the maintenance and operation is significantly simplified.

The choice of the programming language was based on Java due to its platform independence and its popularity.

Spring boot

For the development of enterprise applications with Java, the Spring framework has become widely accepted. Instead of using Spring natively, the spring boot framework is used because it also supports the quality features of a simple deployment and cloud capability.

Spring Boot allows you to create standalone Spring applications. This means that no external application server is required, instead an embedded Tomcat is included in the deployment. Furthermore, the application consists of a single JAR file, a so-called “fat-jar” file, which can be run both on-prem and in the cloud.

Concepts

During the development of the CutoverManager, great importance was attached from the very beginning to the observation and implementation of cross-cutting concepts. Examples of elaborated concepts in the CutoverManager are:

Transaction

Only transaction-based databases are used since a cutover requires meticulous planning with comprehensible control and execution. These are addressed with the help of JDBC. JPA is also used as an ORM framework (object-relational mapping). Hibernate is used as implementation.

Transaction control is completely handled by Spring Boot. Optimistic locking was chosen as the transaction strategy because it allows significantly increased performance in parallel multi-user operation. In addition, Hibernates versioning of the data sets protects the simultaneous processing of a data set in such a way that NOT the last person to change it wins. Instead, an error message is displayed indicating that this record has already been changed by another user and that an update of the data is necessary before another change can be done.

Cloud

As a further simplification of deployment, especially in cloud environments, a framework for the change management of database schemata is used. The choice was Liquibase. As a result, manual steps for importing SQL statements are no longer necessary during deployment. With the help of Liquibase, database-specific data types or characteristics can also be controlled, which is the perfect starting point for the support of different DBMS.

The CutoverManager is scalable to achieve the quality goals reliability and availability. This is achieved by a database based session handling. A session is mandatory due to the necessary authentication. This also covers and checks the user roles and the resulting access rights.

For the notification of task responsible, the primary setting is Mail. Technically, the JavaMailSender class from Spring is used, which communicates with any mail server via SMTP. During implementation, an abstraction layer was implemented in order to be able to offer additional communication channels in the future. Examples are RocketChat or Slack.

Client

After the detailed explanation of the server technologies we come to the client, which also offers frameworks and libraries on the server side.

As a client an installed, modern browser is assumed, as it is usual with web applications. The technology used on the server is Thymeleaf, a framework optimized for multipage applications. This generates server-side rendered HTML, which is delivered with enriched JavaScript libraries and graphics from the server to the client.

For the visualization of date and time pickers and client-side controls jQuery, jQuery-UI and specialized JavaScript libraries are used. The representation of the gantt charts was also developed in JavaScript.

Prospects

Finally, we give an outlook on development opportunities currently under discussion in our team:

The potential requirements of our customers are always in the foreground.

In summary, all decisions have been made in consideration of state-of-the-art technologies and the highest data protection requirements.

Our conclusion: “Your planning data is safe with us in the CutoverManager.”

Changelog
April 12, 2020 – headlines revised
November 24, 2019 – publication


Recommended content

Matthias Mair
Matthias Mair
Chief executive officer
Feedback
Do you have any questions or suggestions regarding this article? Please contact us.