It’s the merger of development and operations, but what does DevOps mean to your business?
DevOps has become the most popular way for businesses to develop apps and software quickly, to reduce time-to-market and helps businesses offer exactly what customers want without the hassle of traditional app development. It takes the basis of agile product development but has been specifically developed for software projects that can respond to customer demand.
DevOps began as a way for start-ups in Silicon Valley to develop products, merging development and operations teams and sharing responsibility, cutting costs for stretched businesses without having to invest in specialists to work on projects. However, it’s now evolved into a way of larger businesses to create new software and services too. Although they may have bigger budgets to pay for specialist project and development teams, they need to be highly responsive and agile to keep up with new players in the market.
DevOps speeds up the time to market because the development and operations teams can work in tandem with neither having to wait until the other has completed their tasks before testing, for example. The code can be tested on the fly and more coordination between development and testing environments means the process is much faster and code can be deployed quicker.
Want to publish your own articles on DistilINFO Publications?
Send us an email, we will get in touch with you.
The actual definition of DevOps is a contentious subject though. For example, some think the success relies on teams, while others think the practices and workflows set it apart from other project management and development methodologies. However, it’s actually a combination of both, plus a philosophy that can motivate businesses to make Devops environments more fruitful than alternative ways of creating software and services.
DevOps team structures
There are many potential forms that a DevOps team can take – some viable, some not so much. One popular structure is to build teams around products, rather than roles. Rather than having a product being worked on by people within wider development and operations teams, this structure would have one dedicated team assigned to each product, including staff from every discipline.
Another commonly sought-after team setup is to have Dev and Ops collaborating extensively, whilst still maintaining a degree of separation. Each team retains their individual roles but also works closely with their counterpart to work through problems. This requires Dev and Ops to be familiar with the other’s role and skill set, to think about what their challenges might be, and to try and work around them.
DevOps workflows
DevOps is closely related to (although not synonymous with) continuous delivery and agile development strategies, and it shares a lot of its common elements with these approaches. Although there is no universal, agreed-upon set of processes for DevOps, a DevOps workflow is typically divided into 7 separate stages. These stages include:
- Planning, where the use-case, requirements and success metrics for the application will be hammered out;
- Creation, which involves the programming of the actual software itself;
- Verification, which is where the main bulk of quality assurance and testing happens;
- Preproduction, when the software is finished and ready for packaging;
- Release, covering the actual deployment of the application;
- Configuration, where any post, release infrastructure provisioning and changes occur;
- And, finally, monitoring, which involves observing user experience and application performance. Data obtained at this phase often feeds back into the planning phase of the next release, starting the whole process over again.
These stages form the basic DNA of most DevOps tool chains, which often involve heavy use of containerization, virtualization, continuous integration and automation tools. They also help inform some of the core elements of the DevOps mindset, such as continuous testing, rapid deployment, and strong metrics.
DevOps philosophy
Implementing a DevOps strategy is a cultural change first and foremost. While it may involve using new tools and processes, it is almost universally the behaviour and attitudes of staff that have to make the biggest change.
Traditional IT models – sometimes known as siloed structures – can often foster a sense of distrust or resentments between departments, with teams blaming each other when things go wrong. In order for a DevOps structure to function, however, this mindset needs to completely change.
Dev and operations need to trust each other in their spaces, putting aside any feelings that certain areas of the business are ‘their territory’. Similarly, they also need to be willing to take suggestions and criticism from the other and ensure that any criticism they give is helpful and constructive.
There also needs to be the compromise on both sides. While developers are generally in favor of frequent, rapid changes, ops tend to feel the opposite way, preferring predictable, established methods and processes. Both teams need to meet in the middle when it comes to the rate of change, or a DevOps culture will not be sustainable.
Benefits of DevOps
There are a number of key business benefits associated with establishing a DevOps culture; the first of which is that you can greatly speed up the frequency of your releases, as less time is required for testing and QA than with siloed models. Faster releases mean you can deliver more features to your users in a timely manner, and a well-equipped user is a happy user.
Greater speed also brings with it greater business agility, allowing you to respond quickly to market shifts and emergent technologies. By iterating faster, you can keep your business ahead of the curve and, crucially, ahead of your competition.
Faster development can occasionally lead to problems and failures, but one of the beauties of DevOps is that even your failures are faster to recover from. According to Puppet Labs, organizations with high-performing DevOps teams recover from failure more than 25 times faster than their competitors.
DevOps drawbacks
There are downsides to embarking on a DevOps transformation, though. DevOps requires fairly massive structural changes, which can be difficult for large, legacy organizations with international offices to pull off. The concept of reorganizing your entire IT structure at a single stroke can be a daunting prospect.
The cultural shift can be difficult to manage as well. Workplace attitudes are often deeply ingrained, and it can be hard to convince previously distant teams to collaborate if they don’t want to do so. DevOps can also be a tricky concept to sell to the board.
DevOps tools
While there are no hard and fast rules for which software should be included in a DevOps toolchain, the same options tend to crop up in most Devops environments. There’s a huge variety out there, but these are some of the biggest names in the DevOps biz.
Puppet
Used as a configuration management utility, Puppet is central to many DevOps teams. It’s excellent for spinning up new servers and virtual machines and features its own language that is used to define the specific system resources needed.
Another commonly-used alternative to Puppet is Chef, and while they’re widely considered to be neck-and-neck in terms of popularity and sophistication, many argue that Puppet is best suited to operational tasks where Chef favors use that lean towards development.
Docker
Docker is the technology that has been spearheading the uptake of containerization within the enterprise. The beauty of containers is that while they’re similar to virtual machines, the fact that one OS image can host multiple containers makes it much lighter on resources than spinning up multiple VMs.
The reason Docker, in particular, has proved so popular with the container crowd is that it’s made it a whole lot easier and safer to create, manage and scale container-based applications, which can save IT departments huge amounts of time and money. It’s flexible and scalable nature has also made it popular within the DevOps community.
Jenkins
Jenkins is an open-source tool used for continuous integration of code. It includes support for a huge number of plugins allowing it to work with a massive amount of systems and projects.
This is one of the reasons it has become so invaluable to many DevOps tool chains, along with its ability to trigger builds based on a variety of factors. Like many of the tools used in this sector, it’s heavily focused on automating as much of the software development process as possible.
Date: Sep 05, 2017