CutoverManager: Technical Insight
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.
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.
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:
- Receives incoming requests, validates data, and forwards the request to the business layer for response
- Contains the business logic and calculates a plan, for example. To do this, it collects the necessary data from the domain layer
- 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.
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.
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:
- Multilingual application
- Time zone support
- Data integrity
- Transaction-based change of data
- Performance increase through optimistic locking with secure versioning of the data records for parallel changes
- Auditing of datasets (recording of creation and modification timestamps of a dataset with user information)
- Privacy and data protection
- Offline support
- No use of third-party libraries that send the data “outside”
- User administration with rights control
- Support of various database management systems (DBMS)
- Complete administration of the database schema by the application
- Scalability through statelessness
- Communication channel
- Notification of the task recipients by email
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.
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.
After the detailed explanation of the server technologies we come to the client, which also offers frameworks and libraries on the server side.
Finally, we give an outlook on development opportunities currently under discussion in our team:
- Responsive web design
- REST interface
- Connection of further communication channels
- Planning support through machine-learning approaches
- Real-time notification through WebSockets
- Integrated chat function
- Smartphone App
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.”
April 12, 2020 – headlines revised
November 24, 2019 – publication