DevOps is a collection of best practices, tools and good habits that increase the ability of organizations to deliver applications and services at high velocity by closing the gap between software development and IT operations. It aims to shorten the development lifecycle and provide continuous delivery with high quality software.
DevOps complements Agile software development and several DevOps aspects came from the Agile methodology.
Building a DevOps culture
Cultural practices such as information flow, collaboration, shared responsibilities, learning from failures and new ideas are central to DevOps. Team-building and other employee engagement activities are often used to create an environment that fosters this communication and cultural change within an organization.
A study made by Puppet Labs (The state of DevOps, 2015  showed that the top three predictors of organizational performance are culture, investment in DevOps and IT performance. When it comes to culture, leaders can improve matters by enabling specific DevOps practices by visibly investing in DevOps and in their employees’ professional development. Managers can also facilitate big improvements in IT performance by taking measures to make deployments less painful. Last but not least, IT managers should make performance metrics visible and take pains to align these with organizational goals, and should delegate more authority to their employees.
The top seven measures with the strongest impact to organizational culture are:
Organizational investment in DevOps
Team leaders’ experience and effectiveness.
The ability of different disciplines (development, operations, and infosec) to achieve win-win outcomes.
Lean management practices.
How DevOps work
Under a DevOps model, development and operations teams are no longer “siloed.” Sometimes, these two teams are merged into a single team where the engineers work across the entire application lifecycle, from development and test to deployment to operations, and develop a range of skills not limited to a single function.
In some DevOps models, quality assurance and security teams may also become more tightly integrated with development and operations and throughout the application lifecycle. When security is the focus of everyone on a DevOps team, this is sometimes referred to as DevSecOps.
These teams use practices to automate processes that historically have been manual and slow. They use a technology stack and tooling which help them operate and evolve applications quickly and reliably. These tools also help engineers independently accomplish tasks (for example, deploying code or provisioning infrastructure) that normally would have required help from other teams, and this further increases a team’s velocity.
Werner Vogels, Amazon’s CTO said in an interview in 2006 what then became one of the strongest pillars of DevOps:
“Giving developers operational responsibilities has greatly enhanced the quality of the services, both from a customer and a technology point of view. The traditional model is that you take your software to the wall that separates development and operations and throw it over and then forget about it. Not at Amazon. You build it, you run it. This brings developers into contact with the day-to-day operation of their software. It also brings them into day-to-day contact with the customer. This customer feedback loop is essential for improving the quality of the service.”
DevOps at kreuzwerker
At kreuzwerker we believe that the best way to gain velocity is by having continuous collaboration across teams supported by clear communication, common objectives, shared responsibility and by knowing the different tools that are out there to support our goals.
One has to be very careful when implementing the “you build it, you run it” model; the trend is to push developers more and more towards operations but instead, we believe in creating cross-functional teams comprised of developers and platform engineers who work together to deliver results; this fosters the mutual growth by the inherent contrast coming from both perspectives.
The platform team works closely with the development teams in the architectural phase to agree on the technologies and the definition of the pipelines that will then support the development teams to achieve Continuous Integration and Continuous Delivery.
The platform team’s main focus is on:
- Platform reliability.
- Platform security.
- Platform observability (monitoring and logging)
- Platform maintenance.
- Platform “operability” (keep it simple and manageable)
With these concepts in mind and proper KPIs defined, they support the development team to:
- Achieve velocity by the implementation of CI/CD pipelines.
- Develop software with security, reliability, observability and operability in mind.
- It is important to keep in mind that the platform lifecycle is usually much slower than the product because the goal is to have a stable, performant platform that supports your product.
Header Image from Unsplash