Introduction
This article discusses the DevOps methods, frameworks & tools that leveraged as part of the DevOps adaptions movement. DevOps is a culture where collaboration between development, operations, and business teams is considered a critical aspect of the SDLC - DevOps journey. It’s not solely about the tools and DevOps in an organization creates continuous value for customers. Tools are only one of the pillars, the other being People and Processes. DevOps increases organizations' capability to deliver high-quality solutions at a swift pace. It automates all processes starting from build to deployment for an application or a product. This article would provide a comprehensive understanding to apply DevOps methods, tools, and frameworks in the Organization’s DevOps journey.
DevOps Drivers
Instead of releasing a large number of application features, companies are trying to see if a small number of features can be rolled-out to their customers through a series of release iterations. This has several advantages like better quality of software, quick feedback from customers, etc. which in turn ensures high customer satisfaction. To achieve these objectives, companies are required to:
- Lower failure rate for new releases
- Increase deployment frequency
- Quicker mean time to recovery in the event of new release is crashing the application
- Shortened lead time between fixes
DevOps fulfils all these objectives and helps in achieving seamless delivery. Organizations like Google, Etsy, and Amazon have adopted DevOps to achieve levels of performance that were unthinkable even a few years ago. They are doing tens, hundreds, or even thousands of deployments per day while delivering world-class reliability, stability, and security. DevOps is a process framework that ensures collaboration between Development and Operations Team to deploy code to production environment faster in a repeatable and automated way. The word DevOps is an amalgamation of two words development and operations. DevOps helps to increases the speed to deliver applications and services faster. It allows organizations to serve their customers efficiently and become more competitive in market. In simple terms, DevOps can be defined as an alignment between development and IT operations with better communication and collaboration.
- Earlier to DevOps, the development and operation team worked in total isolation.
- Testing and Deployment were isolated phases and were done after design and build. Hence, they required more time than actual build cycles.
- Without DevOps, team members are spending a large amount of their time in testing, deploying, and designing instead of focusing on the core part that is creating business services.
- Manual code deployment will lead to errors in production
- Development & Operation teams have a separate-timelines and are not in synch, causing additional delays.
Figure 1: DevOps Life-Cycle Stages
DevOps Lifecycle
- Continuous Planning:
Continuous planning leverages lean principles to start smaller by identifying the resources and outcomes needed to test the business value or vision, adapt continually, measure progress and learn from customer's needs and accordingly shift the direction with agility and update business plan.
- Collaborative Development:
The collaborative development process enables collaboration between business, development, and test teams that are spread across different time zones to deliver quality software continuously. This includes multiplatform development, support for polyglot programming, creation of user stories elaboration of ideas and lifecycle management. Collaborative development includes the process and practice of continuous integration, which promotes frequent code integrations and automatic builds. By integrating the application code frequently, integration issues are identified earlier on in the life cycle stage when they are easier to fix, and the overall integration effort is reduced via continuous feedback as the project shows continuous and demonstrable progress.
- Continuous Testing:
Continuous testing reduces the testing cost while assisting the development teams balance speed and quality. This also eliminates testing bottlenecks through virtualized services, and it also simplifies the creation of virtualized test environments that can be easily shared, deployed and updated as systems change. These capabilities reduce cost of provisioning and maintaining test environments and shorten test cycle times by allowing integration testing early on in the life cycle. Fail-fast principle makes bugs and failures appear sooner instead of postponing the failure at a later time.
- Continuous Release and Deploy:
This adoption path consists of one major practice: Continuous release and deployment: Continuous release and deployment provide a continuous delivery pipeline that automates key processes. It reduces the number of manual processes, resource wait-time, and rework by enabling a push-button deployment that ensures higher number of releases, reduced errors, and end-to-end transparency.
Automation plays a key role in ensuring the software is released repeatably and reliably. One critical objective is to take manual processes like build, regression, deployment and infrastructure provisioning, and automate them. In order to achieve this, one needs version control for source code, test and deployment scripts, infrastructure and application configuration data, and the libraries and packages application depend on. One should also be able to query the state of all the environments.
- Continuous Monitoring:
Continuous monitoring ensures enterprise-grade reporting capability that helps development teams to understand the performance and availability of the applications and systems in the production landscape, even before it is deployed to production. This early feedback provided by continuous monitoring is critical for lowering the cost of errors, and for steering engagements in the right direction.
- Continuous Feedback and Optimization:
Continuous feedback and optimization provide visual evidence for analysing customer journeys and pinpointing the pain area. Feedback can be enabled for both pre- and post-production phases to maximize the value and ensure that even more transactions are successfully completed. This provides for immediate visibility into the root cause of customer struggles that affect their behaviour and impact business.
Figure 2: DevOps Processes
Benefits of DevOps
DevOps facilitates Development Teams to implement Continuous Integration and Continuous Delivery. This enables them to launch solutions/products faster to the market. Important benefits of DevOps are:
- Predictability: DevOps offers a significantly lower failure rate for new releases
- Reproducibility: Versioning the builds or the code so that an earlier version can be restored as needed.
- Maintainability: Effort-less recovery process in the event of a new release crashing or disabling the current application.
- Time to market: DevOps reduces the time to market through streamlined software delivery (by 50%).
- Greater Quality: DevOps enables the team to create an improved quality of application development as it incorporates infrastructure issues.
- Cost Efficiency: DevOps also offers cost-efficiency in software development, which is an aspiration of senior management.
- Reduced Risk: DevOps incorporates security attributes in the software lifecycle and assists in the reduction of defects across the lifecycle.
- Breaks larger codebase into manageable pieces: DevOps is based on the agile programming method. Therefore, it allows for breaking down larger codebases into smaller and manageable chunks.
- Resiliency: The software system is more stable, secure, and changes are auditable.
DevOps Tools: Cheat-Sheet
Sr #
|
Domain
|
Life-Cycle Stages
|
Tools/Framework Alternatives
|
1
|
Dev
|
Plan
|
IBM Rational Team Concert, IBM Rational DOORS® Next Generation, Collaborative Lifecycle Management as a service (CLMaaS),JIRA, Kanboard.net, Confluence, Trello, Slack, HipChat
|
2
|
Code
|
Rational Collaboration Lifecycle Management, Rational Lifecycle Integration Adapter, IBM Worklight Studio, Git, Jenkins, Gerrit, Bugzilla, Subversion, Bitbucket, Semaphore, Hudson, Bamboo, Gump, Travis CI
|
3
|
Build
|
Maven, Gradle, IBM UrbanCode Build, Apache ANT, NPM
|
4
|
Test
|
Highly Available Test Chassis (HATC), Delphix (Database Virtualization), JUnit, Cucumber, Selenium, JMeter, SOAP UI, Test Complete, SonarQube, Semmle, Kiuwan, Karma
|
5
|
Ops
|
Release
|
IBM UrbanCode Deploy with Patterns, IBM UrbanCode Release, Chef, Puppet, Juju, Docker, Ansible, Salt
|
6
|
Deploy
|
Spring Cloud Config, Subversion, Apache ZooKeeper, etcd, Netflix archaius, Consul, Chef, Ansible, SaltSrack, Terraform, IBM Active Deploy, XL Deploy, Urban Code Deploy, Puppet
|
7
|
Monitor
|
Graphite, Graphana, Collectd, AWS CloudWatch/Alarms, AppDynamics, NewRelic, SmartCloud Application Performance Management (APM), IBM Service Engage, Nagios, Nmon, Cacti, Logstash, Fluentd, New Relic, Prometheus, Nagios, Splunk
|
8
|
Operate
|
IBM Tealeaf Customer Behavior Analysis, IBM Digital Analytics, Mobile First Quality Assurance, Open Web Analytics (OWA), Webalizer, W3Perl
|