The notion of DevOps has no doubt become more popular and more mainstream in the recent past and it happened for a reason. Benefits of DevOps are overweighing its disadvantages and so companies are rushing to embrace it. Though it’s not an easy fix to all your efficiency problems, the adoption of agile methodology in software development and complementary DevOps practices will contribute to the competitiveness of enterprises. They help to improve operational productivity, quality, and revenues. DevOps is definitely not a temporary trend, it has the potential to become a standard way of engineering software.
The ability to implement and use the above practices to the benefit of the organization is largely up to the management and the product delivery team, but it is essential that management has a well-rounded understanding of the information and techniques that must be used. So, the right management team should understand the advantages and disadvantages of DevOps, with a view to keeping the organization's product development processes moving forward. Let’s find out why DevOps is important in this case, together with a few examples of how the implementation of DevOps has turned out successful.
What does DevOps mean?
DevOps is the results-oriented mindset headed at the constant improvement of the time to value. You may also ask, “What does DevOps stand for?” The answer is simple. It means development and operations and implies that a whole bunch of processes like software development, QA, and IT operations including reviewing, testing, deploying, etc. are integrated to improve the overall efficiency. DevOps manages IT complexities while maintaining the pace that the agility sets.
The term DevOps first appeared in 2009 when a renowned agile practitioner named Patrick Debois made his attempt to come up with the solution to the conflict between developers and sysadmins, and thus he founded the DevOpsDays, reconciling the development and operations teams. So, the term was officially introduced to the agile community. Since then, instead of breaking things down to develop them, to "deploy them" or to "deploy a system", we are breaking things up to get better at what we're doing. This emphasizes the execution nature of software development and helps identify common patterns of not just what we are doing, but also how we are doing it.
Debois' motivation was to minimize the time and cost of building software while delivering quality and faster timescales to users. And 10 years later after the first conference was held, the 2019 State of DevOps Report claims that the number of DevOps team members across organizations has kept growing over the last three years to amount to 26% now.
Cultural, operational, and practical goals of DevOps
Whether you've reached your agility goals through DevOps or not, the core principles and practices of DevOps and its tools have become central to the practice of IT. We want to offer you a deeper understanding of the DevOps development process by explaining its primary goals. These are the goals you can achieve from adopting a DevOps pipeline and embracing this highly collaborative mindset:
- Automated software delivery - building and testing
- Infrastructure configuration and management
- Continuous integration and delivery
- The DevOps artifact repository and repository management
- Wider use of version control and shorter iterations
- More frequent on-demand releases and application release automation
- Ongoing system monitoring, code review and merging
- A cultural shift in mindset - removing the barriers between two teams, development and operations
The demand for DevOps is getting more acute on the one hand, and companies see that they need to adopt a whole new set of practices, tools, and processes to meet this demand, but also, on the other hand, there's a shrinking possibility that companies might be able to remain viable and retain their operating base if they don't employ DevOps.
Advantages and disadvantages of DevOps
Here, we segue to another big question: why DevOps? It is the advantages of DevOps over traditional SDLC that are making it possible to overcome the long-established separation of dev and ops. With DevOps, you may make tradeoffs of speed, reliability, and control over deployment and setup, just to name a few. Besides, DevOps is integral to SAFe (Scaled Agile Framework), while many SAFe concepts and principles like small batch sizes, short iterations, fast feedback, and more are valid in the context of DevOps, too. All of this brings us to the question, "What good does DevOps do to the development and operations teams once it is enabled?"
Benefits of DevOps for businesses
So, let’s take a closer look at what primary business benefits you can gain from embracing DevOps practices.
Organizational and planning-related benefits
Batch sizes. Unlike traditional SDLC, DevOps is associated with fast and frequent delivery as well as shorter development cycles. Continuous integration and delivery that are of vital importance for reaching DevOps goals are the DevOps practices that allow for small increments of deliveries and rapid feedback cycles. Software changes are made whenever required so to do. Basically, adopting DevOps increases the cadence of app releases to production, which positively influences the software development process. Small batch sizes are simpler, less risky, easier to navigate and test.
Dedicated teams instead of skill-centric silos. With traditional SDLC, you have to explain everything to your project managers and ask permission to deploy what you need when necessary. For many teams, this is a very time-consuming process. With DevOps, you are able to make decisions at the right time and plan to deploy the system at the right moment. Formerly extremely siloed departments can now talk to each other without a long time-lag between one part of the organization and the next. Increased exposure and transparency are more productive and less disruptive for your teams, which allows a single team of engineers to work across the entire application lifecycle developing thus their skills.
Performance-related and cultural benefits
Improved communication and collaboration. DevOps means a great cultural shift, one that not only removes barriers to communication but also allows employees to easily collaborate and share resources. Besides, the strongest DevOps players are those who understand the value of teamwork. For DevOps operations to succeed, all stakeholders must be involved. Coordinating varying teams so they could all get cooperative will help you avoid finger-pointing, and enable trust and collaboration. Imagine how many issues might be solved by teams operating on their own rather than going through a formal chain of command.
Reduced time-to-recovery. DevOps practices are particularly well-suited for minimizing the impact of the bottlenecks, rollbacks, and deployment failures on the overall efficiency. But when errors are encountered anyway, less time is needed to recover from them. When development cycles are shortened and new versions are released more often, the mean time to detect is significantly reduced, too. So it gets easier to spot the slightest code defects early on. Faster error detection provides an efficient feedback loop between the operations and developers on one hand and customers on the other hand.
Increased efficiencies. Automation is at the core of the DevOps culture as it helps ensure that all other key principles of DevOps are observed, too. Traditionally, a development environment is created from scratch, but a DevOps environment can be created using automated processes for it to be able to handle the rapid growth of the product, varying workloads, and changing needs over time. The speed at which DevOps solutions move is of utmost importance. However, you should not forget that normally it involves many variables and it’s a good idea to use an incremental approach to implementing DevOps in an organization.
Operational and strategic benefits
Reliability and scaling with minimum risks. Ensuring reliability during peak times is critical. Yet, when processes and systems face increased pressure, it may get more difficult. That’s why developing a comprehensive strategy focusing on reliability, scalability and supporting continuing growth is important. DevOps enables teams to rapidly deploy new software while safeguarding existing, on-premises data in a distributed environment. It is an agile process that increases the flexibility and reliability of your solutions. DevOps practices emphasize the orchestration of a team's efforts while maintaining the integrity of the development environment. So, a team will be able to maintain a great experience for users while making updates and changes to a product.
Costs savings. DevOps initiatives not only drive innovations that increase business value but they also save costs of maintenance and upgrades eliminating unnecessary capital expenditure and lowering project complexity and budget overruns. Arguably, when there’s a comprehensive DevOps strategy in place, a business can significantly cut down the costs and increase its profitability. In particular, one can take advantage of economies of scale that are built into production and test pipelines. By automating release pipelines, DevOps not only allows releasing faster but it also reduces the manpower and therefore slashes the costs. In many cases, this can mean cutting some of the overhead associated with deployments as well as reducing downtime or cost of change control measures.
Challenges of DevOps
If we summed up the goals of DevOps in one sentence, we would say that it is to improve the overall workflow in the software development life cycle and reduce business expenses. However, there’re a number of bottlenecks that could hamper the company’s ambition to use DevOps to their advantage. So, we’ve compiled a list of the prime reasons why one can fail when adopting DevOps practices.
1. Organizational change. Gartner predicts that most DevOps benefits will be reduced to nothing since 75% of DevOps practices will turn out to be hard to access for the companies due to the obstacles of organizational learning and change. An interesting (though and ultimately unsatisfactory) prediction. However, these pain points can be overcome with proper training and implementation. As too much change at one time can be disruptive, it is a good idea to address occurring bottlenecks one by one and to not launch DevOps in a single step. Continue reading to find out a proper way of organizing a DevOps development process.
2. Inadequate attention to customer needs. Oftentimes, people-related factors are a source of greater challenges than those directly connected with technologies. DevOps has the means to automate various parts of the software development lifecycle, which closely echoes one of the DevOps goals - boosting the team’s efficiency. At the same time, however, the DevOps operations must be implemented with the customer in mind, they have to be grounded in customer value. Use the value of DevOps to improve customer experience. Innovative solutions require continuous communication, and communicating effectively is the epitome of DevOps.
3. The interconnectedness of the DevOps process. DevOps requires the collaboration of the teams involved in the development of a product to be effective. It results in the interconnectedness of the DevOps environment. This means the teams not only share information, knowledge, and culture but they also use credentials, tokens, and SSH keys in common with one another. Therefore, the various environments like dev, test, stage, and prod must be configured in the same manner, too. Creating standard infrastructure blueprints can help the entire team to reach the same goal in a common language and integrated way.
DevOps development process
So that companies could grow and keep pace with their network effects, they need useful and usable tools at the core of all their DevOps processes. It is an umbrella term for practices and tools that are routinely applied to software. So, to maintain the existing software and simultaneously make modifications working on new versions, the team needs a comprehensive set of tools that can include:
- Github for Source Control Management
- Jenkins for Continuous Integration
- Nagios for Alert Management and Monitoring
- Docker for Container Management and Orchestration
- Elasticsearch for Log Analytics
- Icinga for Distributed Monitoring
- Chef for Configuration Management
Another important aspect inherent in the DevOps development process is the delivery pipeline. It covers a wide range of operational activities, from software development to monitoring and finding bugs. It's not just a single job. Thus, a DevOps pipeline focuses on continuous development and testing, and emphasizes 4 things:
Source code control. Getting new versions of the system delivered and in a timely manner.
Build and test automation. Mopping up any quality issues that are found with the new version of the system.
Release automation. Automating and connecting tasks that are performed by several teams.
Deployment and monitoring. Using version control to deploy the new version of the system to the production environment.
Examples of DevOps
Since the relatively new technical concept of DevOps can still often be misused or misunderstood, the most effective way to make it clear is to consider some examples. Though DevOps is meant for a team, rather than a company, humans have an innate desire to place labels on everything as labels are a good way of distinguishing things. So, below, you’ll find examples of companies that managed to use DevOps practices well.
1. Amazon. Amazon is the world's largest online retailer and it's also one of the most successful DevOps companies. There are a ton of good reasons why Amazon has been able to succeed in a DevOps environment. The company writes software to handle problems from world-class customer support to troubleshooting their product to delivering their in-house solutions. The big players understand that DevOps is very beneficial for quality assurance and risk management as it is for speed acceleration. In short, Amazon has heavily invested in establishing DevOps practices.
2. Netflix. Netflix makes an industry-leading use of DevOps to help programmers and IT administrators automate their daily workflows. As a streaming service, Netflix operates within a cloud-based infrastructure of hundreds of microservices. And with the vast majority of Netflix's software being open-source and community-contributed, it's no surprise that the company is adopting DevOps practices. Their efforts were honored in 2015 when Netflix became the Jury's choice award for Innovation at the JAX conference. They were awarded the prize for their successful incorporation of DevOps into their architecture.
3. Facebook. DevOps practices are the core of the company's business and the foundation on which it has grown. It makes life easier: for example, fixing bugs before they impact users and software launches, as well as building infrastructure that is deployed quickly. In fact, Facebook is one of the pioneers of DevOps that changed the way software is developed and deployed. Tracking usage, scaling, and coordination across the pipeline is a critical part of DevOps, and therefore these practices, as well as fast-paced development and delivery cycles, have become the norm that goes for software development extending to other services, too.
Having considered the meaning of DevOps, the primary goals, advantages and expected challenges, components of the development process, and success stories, we can admit that there’s no longer any doubt why DevOps is important. Benefits of DevOps can bring consistent improvements in maintaining software quality, scale and predictability, reduce the cost of designing, testing, writing and deploying software, and satisfy customer requirements faster. Vilmate will help you decide on the practices that will allow you to deliver value in the most innovative and cost-effective way, and will be more than glad to help you out in adopting them.
© 2020, Vilmate LLC
for monthly digest