Dutch Rail
The Dutch Rail project “Besturing 3.0” involves the replacement of some legacy systems by new applications for managing train personnel, rolling stock and of train timetables. The project consists of a large and complex environment of multiple high available systems. The project uses an extensive DTAP process to move the software through different quality gates to get to the required quality level. Keeping all system configurations in all environments in sync, proved a complicated, time-consuming and error-prone process.
The challenges
Especially the transition from the test environment, managed by Dutch Rail, into the Acceptance and Production environments, managed by Conclusion, proved to be difficult. To improve this, Conclusion and Dutch Rail worked together in a task force. The goals were to make the provisioning of new environments and deployment of new versions, as smooth and easy as possible.
Solution direction
To reach these goals, we build a model of the required infrastructure in the environments using Puppet as a description language. The full range of Puppet modules from Enterprise Modules for Oracle and WebLogic where used to describe an Oracle RAC database setup and a multi-system WebLogic clustered environment. Also the deployment of the applications, both in WebLogic and in the Oracle database, where modeled using the Puppet language.
Using this single Puppet model for all environments in the DTAP, Dutch Rail was able to iterate and move to a consistent and working setup quickly.
Results
The result is a vast improvement in speed and flexibility in building and maintaining the different environments in the development pipeline (DTAP). Provisioning a new environment can now be done within a few hours. This used to be several days in the past. In addition, there is now complete control over the configuration settings of every environment. Promotion of changes through the DTAP environments has become less complicated because the configuration is now fully automated.
This way of working has promoted communication and understanding about the environments between the developers and the operations. This results in significantly improved collaboration between Dev and Ops. Engineers on both the Dev side and the Ops side can now respond proactively to changes This has contributed to higher quality, more flexibility, and improved job satisfaction.