We have compiled a list of the most frequently asked questions about DevOps process,tooling and adoption.
What is DevOps?
DevOps is a mix of cultural, process, and tool changes designed to bring teams closer together so that they can build and operate software in as streamlined and automated a fashion as possible. It is the ultimate blending of Development and Operations teams. Learn more about DevOps and Agile by reading our eBook, Contested Development: Finding Pragmatism in Agile & DevOps.
Why should I care about DevOps?
DevOps is a critical evolution in the Software Development Life Cycle (SDLC) that is being rapidly adopted. Teams across the world are moving to the DevOps methodology because it allow for faster and more stable software development. For further learning on this topic, check out our Blog: Why Are We Talking About DevOps? Because Every Business Is a Digital Business
What are the different areas of DevOps?
DevOps can encapsulate many different subject manners, but in addition to its overall cultural focus it employs six main topic areas; Continuous Integration (CI), Continuous Delivery (CD), Infrastructure Automation/Cloud, Automated Testing, Security Testing (DevSecOps), and Monitoring. Learn more about the different areas of DevOps here.
These six pillars of DevOps are tightly integrated. Continuous Integration and Continuous Delivery go hand in hand to help move the practice of code development to a faster, more iterative, and more granular state. When combined together, developers will more easily identify issues while simultaneously speeding up their work because of the automation involved in deployment. Infrastructure is the next critical piece as accelerated development means more people working on more things in parallel. Dynamically available infrastructure, frequently enabled through large Public Cloud offerings, is key to being able to provide environments for all the software now being delivered more often. Automated and Security (DevSecOps) testing are the next necessary elements as they help ensure this accelerated pace is properly governed and kept safe. At this rate of activity manual testing is not sustainable so automated solutions are the only way streamline stable releases. Lastly, Monitoring, the often forgotten piece, is the only way to keep track of the rapid cycle times a mature DevOps team is able to deliver on. Visibility across all aspects of development and operations requires the installation and configuration of tools that are constantly scanning for issues and alerting teams to possible problems.
How do I do DevOps?
To “do” DevOps isn’t just to get a new tool or two, but to truly embrace the collaborative nature of an open and communicative team while engaging in a heavily automated and iterative cadence of work. Get more information on how to do DevOps here.
What is the relationship between DevOps and Agile?
DevOps and Agile are attached at the hip. While they developed and grew in popularity at different times, you’ll find that the original principles in both methodologies are highly congruent. Small, nimble teams. Focus on communication, sharing, and context. Need for collaboration at all levels. Agile may be more project focused, with DevOps concentrating on technical work, but one without the other will leave you with an organization unable to fully realize the potential of modern development and project operations. Learn how DevOps and Agile work together to create lightspeed delivery.
How does Change and Release Management relate to DevOps?
Management of code changes, releases, and deployments is critical to any operation. Being able to consistently forecast change, ensure stability is preserved, and roll back when necessary is what allows teams to accelerate their development and ultimately improve the quality of their operations. Continuous Integrations and Continuous Delivery are core to this approach as they allow for more granular change sets while simultaneously providing greater visibility and stability.
Which industries should use DevOps?
DevOps applies to virtually any industry or organization that is concerned with managing a Software Development Life Cycle (SDLC) for proprietary, or even third party applications. Nearly all regulatory and procedural idiosyncrasies can be addressed through DevOps due to its high level of visibility, automation, and auditing.
How is DevOps success measured?
While there are many metrics that are used to monitor the health of a DevOps team, the ultimate measure of DevOps success is a team producing more features than before, and in a stable manner. For more information, check out our webinar on DevOps Metrics!
What are the top CI and CD tools?
There are a number of popular CI and CD tools, but a few rise to the top for their functionality, stability, and ubiquity. Git has fast become the code repository tool of choice and is most often paired with Bitbucket, GitHub, and GitLab. On the deployment side Jenkins remains the open source market leader while Bamboo has continued to rise through the ranks. There are trade offs to all of these tools though so take care to navigate your selection appropriate to your needs. Take a deeper look at Continuous Integration and Continuous Deployment with experts who best understand the strengths and weaknesses of these tools.
Does DevOps automate people out of their jobs?
It does to some extent as tools are providing solutions that can support and perform repetitive actions and standardize the build, test, and release process. Teams like Release Engineering, Quality Assurance and Operations are impacted. Those roles are now formally being referred to as DevOps and the work they perform around build automation, test automation, and release automation is the work products they create.
What is the best way to start?
Every organization is in a different place and level of maturity when beginning DevOps. There are a lot of moving parts and much to take into consideration, so it’s best to begin with a smaller selection of DevOps focus areas while keeping the end goal in mind. Many teams start this journey by embracing CI and CD. Get onto a decentralized version control system like Git, and implement some basic delivery automation with a tool, like Jenkins or Bamboo. Once there, you can work to iterate your new process and slowly roll in additional areas of functionality like infrastructure automation, testing, and monitoring. Sign up for a DevOps Assessment to strategize with one of our specialists!
What usually goes wrong in a DevOps rollout?
Nothing usually goes wrong. DevOps rollout should be automated and based on tried and true deployments. So, if something goes wrong the CD code is not properly defined. People are reducing the level of effort by incorporating orchestration / infrastructure management tooling that helps reduce the likelihood of issues (e.g. Kubernetes, Ansible, Cloud Formation).
How do you overcome the friction between development and operations?
Some organizations have moved to a “you build it, you own it” approach. This forces teams to own operations. Some organizations have explicitly identified a DevOps org or including it within the Scrum Team to acquiesce the effort into a single individual. Organizations that don’t prescribe to either are aware of the challenges of how long software takes to get deployed, updated, and enhanced. Use of tooling helps increase communication and awareness of what is working and not.
How do you manage multiple releases within the CI/CD stack?
For People / Process, you will want to consider:
For your Version Strategy you need to be able to define and answers to the following question(s):
- What does a version mean
- Amount of work or level of compatibility
For your Version Identification you need to be able to define and answer the following question(s):
- How do I share the version of a component, module, app, API etc.?
Among some of the more popular tools:
Atlassian supports a Release Hub to manage stories that go into a release, deploy plans to then deploy those releases to the appropriate environments.
Artifactory can manage artifact versioning for consumption and deployment.
Maven and Gradle provide versioning capabilities to support dependency management.
Kubernetes and other Docker-centric infrastructure applications support aligning the correct version to every release.
Is there a one-stop-shop tool that can roll out DevOps?
If you are an AWS shop, then AWS tools and services can support a large portion of DevOps.
An alternative would be the Atlassian stack. This provides a different angle from Ideation, Portfolio Management, Source Code Management, CI/CD, real-time communications, and services status (it, however, relies on tools to enable build automation, test automation, and release automation). Other options include Electric Cloud / Version One Continuum that try to be a one-stop shop as well, however, they also require integrating with additional applications to support the automation activities. We can help recommend the right tooling for you, let’s talk!