There’s no panacea for the issues related to software development and IT operations, however, there is a way to overcome a range of challenges, including slow delivery of new functionality, inefficient testing and insufficient test automation, as well as time-consuming bug fixing. DevOps, an approach that unites all the infrastructure management-related operations into one integral process, may be exactly the solution you’re searching for.
What exactly the DevOps approach implies
The DevOps approach advocates constant collaboration between development, testing, design, business analyst, and operations teams, making them all DevOps practitioners. A joint working environment allows the DevOps-related teams to deliver software and its new functionality, updates, and fixes quickly, reliably and in alignment with business goals.
To facilitate a software development cycle, DevOps practitioners apply various methodologies and practice new approaches, such as infrastructure as code (IaC), continuous integration and continuous delivery (CI/CD), and total application performance monitoring.
How to organize a DevOps initiative in the right manner
Once you decide to step away from the traditional approach of developing software, buckle up and get ready to implement the DevOps approach step-by-step. The steps should include building a comprehensive DevOps strategy and an implementation plan, defining a person responsible for realizing the DevOps plan, ensuring the use of the best practices like automating relevant tests within the IT environment (some of them, like the performance of usability and security testing, should remain manual though).
The six key aspects that you should not miss when organizing a DevOps initiative:
1) Put the DevOps implementation initiative into an IT department program. Pick a program manager who will supervise the design and implementation of the DevOps strategy and distribute the responsibilities between the teams involved.
2) To implement the DevOps approach, you don’t have to hire new specialists and create a new DevOps department – work with whom you already have. For that, it’s necessary to provide the appropriate training for your current development, software testing, and operations teams. They should learn to use new tools – infrastructure automation tools like Ansible, Puppet and Chef, CI/CD tools like Jenkins, TeamCity and GoCD, container orchestration tools like Kubernetes, Apache Mesos and Docker Swarm – and apply new technologies, such as IaC, allowing for a more convenient provision of the IT infrastructure upon request.
3) The responsibilities of infrastructure management engineers, which now become DevOps engineers, are no longer limited to the manual preparation and provision of new infrastructure, configuration and maintenance of computer systems and servers. Their responsibilities go as far as understanding and implementing CI/CD pipelines, operating with configuration management and deployment tools.
4) Project managers (PMs) and/or delivery managers (DMs) that will be involved in DevOps projects need to be introduced to their new area of responsibilities. The switch to DevOps means that PMs and DMs should stretch their competencies. Earlier, PMs were responsible for managing the development process and focused mainly on the successful execution of the project, while DMs generally managed a group of projects simultaneously and were focused on project results and revenue generation. Now, they’ll have to understand and maintain not only the development part of the project but operations and continuous delivery processes as well.
5) Due attention should be paid to transforming QA and testing activities. A company’s CIO must explain the practical benefits of sufficient test automation to the employees at the earliest project stages, as well as ensure the relevant training. In terms of the DevOps implementation, QA activities cover the entire software development cycle, starting from the development stage and up to the post-deployment stage.
6) DevOps practitioners should also ensure that monitoring of the released applications is in place so that they could constantly get detailed information on applications’ performance and malfunctions. This simplifies the process of detecting root causes of problems occurring with the application performance, as well as helps to find the defects in the application before end-users encounter them.
To sum DevOps things up
Organizing DevOps is not something that can be done in a flash. New technologies and methodologies, such as IaC and CI/CD, need to be adopted, new tools like Ansible, Kubernetes, Chef, Jenkins, Docker, GitLab, must be applied. Moreover, project managers and delivery managers responsible for DevOps projects have to assume new job duties, and all the DevOps-related teams need to extend their knowledge and skills to become competent enough to operate with configuration management and deployment tools, and deliver properly tested software to the customers much faster as compared to the traditional software development approach.
Abut the author: Andrei Lipnitski - ICT Department Manager with 8 years of experience in managed IT services. Andrei has an extensive background in solution architecture design and deployment, including CRM and data management solutions deployment on cluster environment. He is also experienced in MS Azure and AWS infrastructure support.