DevOps and Change Management Challenges
DevOps is a set of practices that combines software development activities and IT operations -- which traditionally and purposefully performed separately to enforce separation of duties. Developers were not allowed to make changes in production. With DevOps, it aims to shorten the systems development life cycle since developers can deliver work quickly and provide continuous delivery with high software quality. As a project delivery method, DevOps is complementary with Agile software development. Several DevOps aspects came from the Agile methodology. In DevOps practice, knowledge sharing among team members is a key component of software development practice. Collaboration and knowledge sharing between existing team members and those with relevant experience in new DevOps tools is essential for successful project completion.
Traditionally, software developers work in the development environment and when complete they hand over the finished application to production after it is tested and deployed. After deployment, the IT operation staff take care of the application while in production when the application is used by users. IT operations staff are tasked with supporting the application by addressing users’ questions and addressing application failures. Akbar et al (2019) agrees this approach results in silo work arrangements where developers do not have visibility over the IT operations issues and at the same time the IT operations do not know and have the capacity to address production issues if the issue requires development work. To address this issue, DevOps is introduced. DevOps is a set of activities that bring together software development and IT operations. Its main goal is to shorten the development cycle and provide high-quality software delivery on a continuous basis to users. DevOps is a useful addition to agile software development. One of the challenges in implementing DevOps was knowledge transfer (Lwakatare et al., 2019). Top management support was crucial for boosting the knowledge transfer between development resources with applicable experience in the company and IT operations resources of relevant experience in new DevOps tools. In addition to skill, onboarding new team members into the cultural norms of the team is also an important task, which might be quite frequent in offshore companies where staff turnover is high (?mite et al., 2021). Adopting DevOps was also recommended for improving cycle times to deliver application to production and overall quality. Knowledge sharing among development and operations plays a key role in supporting the application (Efe & Demirors, 2019; Schuh et al, 2017).
Applications developed and unit tested in a developer’s workstation may work perfectly when tested by the application developer. However, if proper DevOps practices are not followed, when the application code deploys to the test environment for Quality Assurance (QA) testing, it may fail if the test environment is not identical to the environment the application was initially developed in (Leonardo et al., 2019). In DevOps practice, application developers usually develop tasks that are operationalized by IT staff including server management (Ali, 2021). To make the testing process perform repeated tasks automatically to avoid errors, developers write test cases while in the development environment.
The application code that is tested in a development and test environment is expected to work as intended when deployed to production if the production environment setup is identical to development and production. Sailer et al (2019) suggests one main factor that contributes to successful execution of DevOps is to have identical hardware and software setup between development, test and production that includes server, coding, and tester bridge so that it can be activated automatically so that code tested in dev and test can successfully run in production using automated deployment (Rodríguez et al., 2017). The identical setup of development, test and production environments allows developers to test code in development environment and address issues in development.
References
Akbar, M. A., Sang, J., Nasrullah, Khan, A. A., Mahmood, S., Qadri, S. F., Hu, H., & Xiang, H. (2019). Success factors influencing requirements change management process in global software development. Journal of Computer Languages, 51, 112–130. https://doi-org.ezproxy.umgc.edu/10.1016/j.cola.2018.12.005
Efe, P., & Demirors, O. (2019). A change management model and its application in software development projects. Computer Standards & Interfaces, 66. https://doi-org.ezproxy.umgc.edu/10.1016/j.csi.2019.04.012
Muhammad Azeem Akbar, Wishal Naveed, Abeer Abdulaziz Alsanad, Lulwah Alsuwaidan, Ahmed Alsanad, Abdu Gumaei, Muhammad Shafiq, & Muhammad Tanveer Riaz. (2020). Requirements Change Management Challenges of Global Software Development: An Empirical Investigation. IEEE Access, 8, 203070–203085. https://doi-org.ezproxy.umgc.edu/10.1109/ACCESS.2020.3035829
Sailer, A., Petricˇ, M., Forti, A., Betev, L., Litmaath, M., Smirnova, O., & Hristov, P. (2019). Automation and Testing for Simplified Software Deployment. EPJ Web of Conferences, 214, 1–7. https://doi-org.ezproxy.umgc.edu/10.1051/epjconf/201921405019