Introduction to DevOps
What is DevOps?
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability deliver applications and services at high velocity.
Evolution of DevOps
Waterfall did each SDLC step sequentially. Lots of handoffs, checklists, meetings, and long turn around time. Agile attempted to solve this by breaking up work into to small sprints and iterating through the SDLC steps. Bit agile left out ops and the infrastructure. DevOps looks at the entire SDLC from idea to running idea into production.
Benefits of DevOps
DevOps integrates product development, software development, and operations functions for more effective project collaboration.
Benefits DevOps can provide to organizations. These benefits include:
Low risk releases — The primary goal of continuous delivery is to make software deployments painless, low-risk events that can be performed at any time, on demand.
Better and faster decisions — DevOps creates short feedback loops so teams are able to identify issues earlier in the process and use data to make informed decisions.
Faster time to market — It’s not uncommon for the integration and test/fix phase of the traditional phased software delivery lifecycle to consume weeks or even months. With DevOps, teams can work together to automate build, test, deployment, and environment provisioning to reduce the overall manual effort and increase delivery speed without compromising on the quality. This leads to a competitive advantage in helping organizations respond more quickly to business demand.
Higher quality — When developers have automated tools to scan their source code and run regression, security, and performance tests, teams are freed to focus their effort on other quality initiatives like higher level testing activities includes exploratory testing, usability testing. By building a deployment pipeline, the automated tests can be performed continuously throughout the delivery process so quality is built in to products and services from the beginning.
Lower costs and increased IT resource efficiency — Software products or services evolve over the course of its lifetime. By investing in build, test, deployment and environment automation, organizations can reduce the cost of making and delivering incremental changes to software by eliminating many of the fixed costs associated with the release process.
Better products — DevOps continuous delivery makes it more economically viablefor Organizations to work in small batches to test ideas and get feedback from users throughout the delivery lifecycle.
And finally…
Happier teams — Research has shown DevOps continuous delivery makes releases less painful and reduces team toil. Toil is defined by Google as tasks that is Manual, Repetitive, Automatable, reactive, Lacks enduring value, Grows at least as fast as its source.
When releases happen more frequently, software delivery teams can engage more actively with users, learn which ideas work and which don’t, and see first-hand the outcomes of the work they have done.
DevOps Adoption
DevOps is rapidly becoming a critical capability. In a customer-first world, high velocity IT delivery is becoming crucial for organizations that want to compete when every company wants to be a technology organization
DevOps tools has seen a tremendous growth over the years.
- By 2020, 20% of siloed DevOps initiatives will be consolidated in search of operational efficiencies by the largest global enterprises
- DevOps is adopted by 81% of enterprises
- Majority of companies are implementing it on a project/division basis only and are not able to scale to fully unlock the benefits of DevOps
DevOps Practices
DevOps Practices: DevOps enables continuous development and delivery.
[0] At a high level, DevOps is comprised of the following domains: Release Planning, Continuous Integration, Continuous Testing, Release Management, Continuous Deployment and Continuous Monitoring.
[1] Release planning is the process of estimating which product features will be delivered by the release deadline through the product backlog. During this phase, the product team will review requirements and prioritize work.
[2] During continuous integration, developers check-in their code changes frequently into a shared repository, which triggers an automated build to run tests and scan code to help identify quality issues earlier in the development process. Continuous integration helps refine internal development processes to improve code quality.
[3] Continuous testing is the process of executing automated regression, performance, and security tests as part of the software delivery lifecycle to obtain immediate feedback on the risks associated with the latest build. Continuous testing makes sure that all items developed meets acceptance criteria.
[4] Release Management is the process of managing and executing the release to ensure it is on track. Once a feature meets its requirements, the determination to deploy is made during this phase.
[5] Continuous deployment is the process of deploying code that is deemed ready for release automatically, without manual intervention. In less matured organization, continuous delivery is used instead, where the code deployment is gated and on demand.
[6] Continuous monitoring is the proactive process used to monitor, analyze and manage applications & IT infrastructure. This process allows the team to planahead before larger issues occur.
[7] The cycle begins again with Release Planning using the feedback from Continuous Monitoring.
Why AWS for DevOps?
AWS provides a set of flexible services designed to enable companies to more rapidly and reliably build and deliver products using AWS and DevOps practices.
In the next blog post, I’ll cover each of the DevOps Practices in detail and how products from AWS ecosystem play a crucial role in each of those areas. Stay tuned!