In the traditional software development life cycle, there were separate teams dedicated to fulfilling specific tasks, like coding, testing, and deploying the final build in the production environment. These teams’ priorities often clashed with each other.
Developers wanted to finish writing the code as fast as possible, so that the customers could access new features. However, the IT operations team, responsible for running the production site, was primarily focused on implementing the new changes safely and responsibly, which could be quite time-consuming.
Introducing the DevOps approach and DevOps practices was the solution that managed to bridge the gap between engineering and operations, which is beneficial for all software development stakeholders. But what exactly are the advantages of DevOps?
DevOps and where it all began
The modern DevOps approach is the result of a long evolution that started with the traditional waterfall project management framework. Let’s take a closer look at what came before DevOps to better understand why a new approach was needed.
The old way - waterfall approach
The original linear approach to software development, known as waterfall, consisted of several phases that were completely isolated. Moving on to the next phase could happen only when the previous phase was complete. This led to releases happening only a few times or even just once a year, and customers being frustrated with having to wait so long for new features.
The modern approach - Agile methodologies
In the early 2000s a new approach appeared. Agile introduced developing software iteratively, in small increments, and promoted faster releases, collaboration between teams, and making changes based on customer feedback. The agile approach removed some of the silos that slowed down waterfall development, it allowed new releases to happen as often as once a week but still had some issues. The development and operations teams still worked in isolation and aimed at solving different problems. A lot of deployment tasks remained manual, and repetitive work made team members unhappy.
Read this article to learn more about software product development methodologies.
Development and operations together - the DevOps approach
The very name DevOps indicates the closer interaction between the developers and the operations team members. The term itself was introduced in 2009 by the organizer of the very first DevOps Day, Patrick Debois. The same year two engineers from Flickr, Hammond and Allspaw, made a presentation dedicated to the methodology they had developed, which allowed Flickr to successfully deploy up to 10 times a day and even more often.
There are multiple levels to understanding the DevOps approach. On the most basic level, it is a holistic way for teams to work on development and IT operations side-by-side in a single DevOps team, instead of one team creating a piece of code and then giving it to another team to deploy. But DevOps in general is a whole culture that promotes collaboration and communication between teams, and building DevOps teams to achieve customer satisfaction with faster new releases. There are certain tools and practices that DevOps employs to achieve its goals.
Is it just continuous integration and continuous delivery?
One of the key practices in DevOps is automation. There are many repetitive processes that used to take a lot of time when done manually. This slow manual work caused a lot of unnecessary expense, and it wasted the time of the operations team members. It also left workers less motivated, since it is harder to see how this kind of work adds value to the organization. Furthermore, repetitive manual tasks are tiresome for engineers, which leads to an increased number of errors. Automated work is much safer in this respect.
Today every stage of the software development life cycle can be automated to a certain extent. But that is only a part of what is important about DevOps. The principle of continuous improvement impacts all the stages of the software lifecycle. Besides CI/CD (continuous integration and deployment/delivery), DevOps lifecycle also contains continuous development, testing, and monitoring.
Recommended DevOps practices come with certain DevOps tools. These tools include, for example, version-control systems like Git for continuous development, Jenkins for continuous integration and delivery, Kubernetes or Docker for continuous deployment, and so on. Proper DevOps adoption can bring certain benefits to both the technical and business sides of your organization.
For more information about CI/CD you can read an article about CI/CD tools in DevOps.
Fig.1 DevOps lifecycle
Benefits of DevOps
DevOps is all about improving business value delivery and making customers happier, which of course is one of core business goals for every organization. But establishing a DevOps culture in your organization, if done correctly, will help you not only achieve your business goals (like a shorter time to market) but also make your own workers happier as well. DevOps pays off for all the stakeholders in your organization equally.
We have compiled a list of the most significant perks of DevOps adoption in your organization.
Improved collaboration and communication
If you want to build a team that achieves high performance and more efficient software delivery, you have to make sure the members of the team not only work together but also understand and support each other, that they share the same priorities and purposes and see the possible business outcomes of their actions. The DevOps approach promotes a way of thinking globally, realizing that the actions of each worker impact all the teams involved in the software development process. That is why when you adopt a DevOps culture, it shouldn’t only be about the development and IT operations teams, your whole organization should strive to adhere to the same principles of accountability and transparency.
DevOps removes the barriers between your teams, which not only helps to get rid of IT silos, but improves the overall flexibility of your organization, optimizing the workflows and improving productivity. It makes it easier for each worker to feel important and valued.
Speeding up software delivery
One of the most visible results of practicing DevOps is automation of multiple everyday tasks. DevOps brings working in an agile environment to the next level, allowing delivery of new builds of software several times a day, if needed. When the teams can see the results of their work so clearly, it improves their performance. New functionality releases or bug fixes happen as quickly as possible, which ensures the end users are happy too. Moreover, teams, thanks to DevOps practices, see a faster delivery of their product to market, beating competitors from the start, since it takes less time to create a minimum viable product.
Increasing quality
DevOps allows control of custom software development and code changes, every step of the way. Automation makes testing more effective, so fewer issues make it into production. And thanks to continuous monitoring, the bugs that do sneak by are quickly discovered. As a result, it is easy for your teams to react and provide solutions almost in real-time. Bug fixes are delivered quickly, and the quality assurance process yields better results overall. This will give your product yet another competitive advantage.
Enhancing security
It might seem that when new builds take place so often, it might impact the overall security of the project negatively. However, adopting DevOps usually has the completely opposite effect. The practice of introducing security into the project pipeline has received its own name: DevSecOps. It suggests that all team members, not only those who are directly in charge of security, should feel responsibility for it and make decisions accordingly.
When security checks are introduced as early as the development stage, it becomes possible to discover issues before they ever reach production. DevSecOps also promotes improving code quality, reducing vulnerabilities, and other workflow design patterns that increase security. As a result, even if an issue occurs in production, it usually takes much less time to recover, and your product becomes more reliable.
Promoting innovation
The DevOps approach involves following the newest technology trends and adapting them into the project. But even beyond that, DevOps specialists constantly create new tools (e.g. bash or Python scripts) that automate CI/CD processes optimizing the work on your project.
Increasing efficiency
A team that adopts DevOps usually ends up with quite some time freed up thanks to the automation of routine processes. It is natural for developers to spend this time looking for more effective solutions for the functionality that already exists or even thinking of new features that might improve the product. New, creative solutions can bring a lot of practical value to your organization.
DevOps culture frees developers from strict limitations. As long as they achieve the desired end goal, they can choose the best tool or technology themselves. Brainstorming becomes a regular part of collaboration and leads to original ideas that might be used either on the current project or even a completely new one.
Lowering costs
Almost every aspect of the DevOps approach saves money for your organization, both directly and indirectly. The most obvious savings come from process automation and establishing DevOps workflows. Customers get access to new releases fast, so they are more likely to keep using your software. Meanwhile, your team gets a reduced workload and free time that can be spent more productively, developing new features or generating creative ideas.
Another opportunity to save money comes from reducing app downtime. DevOps practices allow bugs to be fixed and service restored much more quickly. Beside that the DevOps specialists help to implement traffic monitoring and load management systems, increasing the service availability. This gives your company another advantage over your competitors. Customers don’t like services that break often and take a long time to recover.
If you decide to adopt microservices architecture on your project, DevOps will help you fully embrace all the advantages of microservices. Modular apps based on microservices are more flexible and cheaper to scale, because you can use additional resources for specific services and only when they are really needed, instead of scaling the whole app.
Automatic infrastructure provisioning, known as infrastructure as code and managed through tools like Terraform or Ansible, is a great way to save money on hosting. Instead of spending a lot of money on your own hardware in an on-premises datacenter, you just need a good DevOps who will optimize the work of your project in the cloud.
Conclusion
DevOps is not a magical solution to all the problems you might encounter when developing software. Hiring good DevOps specialists is not cheap, and actually finding really qualified ones could be a hassle. Switching to DevOps from a traditional linear development workflow requires a lot of time and learning for your team. But it can be all worth it in the long run, because you get a faster, more stable and efficient release pipeline and guaranteed customer satisfaction. You can always start by adopting just a few DevOps best practices; it is very likely you won’t need to wait long to see positive results.