Some companies are embarking on a new adventure in DevOps. As organizations start to consider the possibilities of implementing DevOps, they need to think about what problems it solves and what role it will play in their organization.
Company Culture and DevOps
DevOps is both a cultural and technological shift in the enterprise, offering a seamless path from idea to production. Because it involves development, operations, IT and the rest of the business, many organizations have seen the collapsing of their organizational silos.
Company culture and values are central to DevOps adoption, with leadership encouraging more collaboration. As roles and responsibilities shift, worries over how these changes may impact jobs could result in some internal friction from employees. Throughout this process, communicating ongoing and upcoming changes is critical to keeping employees motivated. Thus, DevOps adoption will be easier if an organization with an open communication style and a philosophy of experimentation with new technologies.
Security in DevOps
Security benefits DevOps by reducing the possibility of risks early on, bringing greater agility to the development process. Given the average cost of a security breach—ranging between $2.2 to 6.9 million so far in 2018—and its impact on customers and brand reputation, having a DevSecOps strategy is critical.
DevOps approaches emphasize the importance of security with speed. While traditional models made time for manual testing, there is no such time available in DevOps, where continuous deployment is the norm. Teams must integrate testing and resolution of security issues earlier (shifting left) in the development process to prevent bigger issues down the road.
Tips for Best Cloud Platforms and Orchestration Tools
Organizations will achieve the best results when they use the cloud and orchestration platforms that best serve their technology requirements. All of the major cloud platforms offer the basics, including compute and storage, as well as more niche and cloud-native solutions. Once you’ve chosen a platform, you’ll want to test and evaluate tooling and workflows.
Here are some DevOps tools that you might consider:
Version Control | Continuous Integration | Infrastructure as Code | Continuous Testing | Continuous Delivery | Configuration Management |
GitHub GitLab Bitbucket | Jenkins Bamboo TeamCity CircleCI Shippable Concourse CI | Terraform AWS CloudFormation | Selenium Cucumber Jasmine Karma Gauntlt Serverspec | Spinnaker Octopus Deploy | Chef Puppet Ansible SaltStack |
You’ll want to cherry pick the right set of tools and then create a cohesive and productive DevOps automation workflow that ultimately increases both the robustness and velocity of your releases. For example, in the following DevOps automation workflow we have chosen GitHub for version control, Bamboo for continuous integration and continuous deployment (CI/CD), Terraform for infrastructure as code, and Chef for configuration management:
Recommendations for Getting Started
We have five recommendations for getting started with DevOps in your organization:
- Start with a Process: The only way to understand whether a DevOps process is successful is by getting started. Make good use of the opportunity by engaging teams to work together to build innovation. Be prepared to experiment and fail. Eventually the right process will evolve.
- Define the Metrics. For transformation to work, you need to understand the key metrics that matter. Use these metrics as a starting point:
- Mean Time to Production: The length of time it takes for newly committed source code to get into production.
- Deployment Frequency: How often releases are deployed into production.
- Average Lead Time: How long it takes for a new feature to be developed, tested and deployed into production.
- Deployment Speed: How long it takes to deploy a new release into production.
- Production Failure Rate: The frequency of production failures.
- Mean Time to Recover (MTTR): The time required to recover from a failure.
- Visualize the Workflow: You won’t really know how effective DevOps will be until you put it into action. By creating a visual model, team members will have a better understanding of how their work impacts the entire DevOps process.
- Create Continuous Process: DevOps requires automation, and lots of it. High-velocity robust releasing can only be achieved through the implementation of CI and CD. In CI, members of a team integrate their work frequently to build software faster, while CD offers the opportunity to integrate automated testing into the release process.
- Improve Communication: With teams now integrated, the next step is to make sure they can communicate with one another. Start by establishing a unified language between business and engineering teams to express the desired acceptance criteria for both teams.
As organizations embrace DevOps, culture will be as important as technology in making a successful transition. Make sure that your DevOps playbook addresses how your chosen DevOps tools and technologies will work together with people and processes.
— Jeremy Cook