Unit I-Devops
Unit I-Devops
INT 331
WHAT IS DEVOPS?
“DevOps is the next step in the evolution of Agile and
ALM”
Agile: DevOps:
How do I develop How do I deliver
the “right” software faster?
software?
Business IT Ops
Developers
ALM:
How do I develop
software with
quality?
Feedbac Application-drive
k n
Loops Infrastructure
Copyright © 2016 Deliveron Consulting Services
WHAT DOES DEVOPS LOOK LIKE?
What does it mean for me?
Business Teams Developers Testers Operations
• The late DevOps authority Robert Stroud said DevOps is all about
"fueling business transformation"
that involves people, process and culture change. The most effective
strategies for DevOps transformation focus on structural
improvements that build community.
A successful DevOps initiative requires a culture—or
mindset—change that brings greater collaboration between multiple
teams—product, engineering, security, IT, operations and so on—as
well as automation to better achieve business goals.
• System architect Patrick Debois, best known as the creator of the DevOps
movement, says the biggest advantage of DevOps is the vision it
provides.
• There are many challenges in a DevOps initiative. Your organization must reimagine its
structure to improve the way things get done. Companies often underestimate the amount
of work required in a DevOps transformation, though. According to a recent Gartner study,
75% of DevOps initiatives through 2020 will fail to meet their goals due to issues around
organizational learning and change.
• “Organizational learning and change are key to allowing DevOps to flourish. In other
words, people-related factors tend to be the greatest challenges — not technology, ” says
Gartner senior analyst George Spafford.
• Choosing the Right Metrics is Hard
• Enterprises transitioning to DevOps practices need to use metrics to recognize progress,
document success, and uncover areas that need improvement,
• Forrester notes. For example, an acceleration in deployment velocity without a
corresponding improvement in quality is not a success. An effective DevOps effort needs
metrics that drive smart automation decisions—and yet organizations often struggle with
DevOps metrics.
• So where to start? Find metrics that align with velocity and throughput success.
Challenges of DevOps
• Limited Funds
• DevOps initiatives face other obstacles as well. Given the significant
organizational and IT changes involved—with previously siloed teams
joining forces, changing job roles, and encountering other transitions—
adjustments will take time. According to a survey of IT executives from
software company Pensa, the top challenges to DevOps success are:
• Limited budgets (cited by 19.7% of respondents)
• Legacy systems (17.2%)
• Application complexity (12.8%)
• Difficulty managing multiple environments (11.3%)
• Company culture (9.4%)
• Complexity
The Future of DevOps
• The future of DevOps will likely bring changes in tooling and organizational strategies, but its core mission will remain
the same
• Automation Will Play a Major Role
• Automation will continue to play a major role in DevOps transformation, and artificial intelligence for IT
operations—AIOps—will help organizations achieve their DevOps goals. The core elements of AIOps—machine
learning, performance baselining, anomaly detection, automated root cause analysis (RCA) and predictive
insights—work together to accelerate routine operational tasks. This emerging technology, which can transform how IT
operations teams manage alerts and resolve issues, will be a crucial component of the future of DevOps.
• AIOps Will Make Service Uptime Easier to Achieve
• In addition to using data science and computational techniques to automate mundane tasks, AIOps also ingests metrics
and uses inference models to pull actionable insights from data, notes data science architect Jiayi Hoffman. AIOps'
automation capabilities can make service uptime much easier to achieve, from monitoring to alerting to remediation.
And AIOps is a boon for DevOps teams, who can use AIOps tools for real-time analysis of event streams, proactive
detection to reduce downtime, improved collaboration, faster deployments, and more.
• Will Sharpen Focus on Cloud Optimization
• The future of DevOps will also bring a greater focus on optimizing the use of cloud technologies. The centralized nature
of the cloud provides DevOps automation with a standard platform for testing, deployment, and production notes
Deloitte Consulting analyst David Linthicum.
• And regardless of what advanced technologies the future brings, organizations will need to realize that DevOps is all
about the journey and that the organization's DevOps-related goals and expectations will evolve over time.
DevOps Lifecycle
the product.
DevOps Lifecycle : DevOps lifecycle is the methodology where professional development
teams come together to bring products to market more efficiently and quickly.
The structure of the DevOps lifecycle consists of Plan, Code, Building, Test, Releasing, Deploying,
Operating, and Monitoring.
DevOps Lifecycle in Detail.
• Plan: Determining the commercial needs and gathering the opinions of end-user by
professionals in this level of the DevOps lifecycle.
• Code: At this level, the code for the same is developed and in order to simplify the
design, the team of developers uses tools and extensions that take care of security
problems.
• Build: After the coding part, programmers use various tools for the submission of the
code to the common code source.
• Test: This level is very important to assure software integrity. Various sorts of tests are
done such as user acceptability testing, safety testing, speed testing, and many more.
• Release: At this level, everything is ready to be deployed in the operational
environment.
• Deploy: In this level, Infrastructure-as-Code assists in creating the operational
infrastructure and subsequently publishes the build using various DevOps lifecycle
tools.
• Operate: At this level, the available version is ready for users to use. Here, the
department looks after the server configuration and deployment.
• Monitor: The observation is done at this level that depends on the data which is
gathered from consumer behavior, the efficiency of applications, and from various other
sources.
Important Links
• https://www.youtube.com/watch?v=to5H5iPZmD4
• https://www.youtube.com/watch?v=dJAxKm8La88
DevOps lifecycle phases: the 7Cs of DevOps lifecycle
• As we have discussed in Lifecycle that everything is continuous in
DevOps – from planning to monitoring.
• So let’s break down the entire lifecycle into seven phases where
continuity is at its core.
• Any phase in the lifecycle can iterate throughout the projects multiple
times until it’s finished.
7 C’s of DevOps
1. Continuous Development
This phase plays a pivotal role in delineating the vision for the entire software
development cycle.
During this phase, project requirements are gathered and discussed with
stakeholders.
Once the team agrees upon the business needs, the development team starts
coding for the desired requirements.
It’s a continuous process where developers are required to code whenever any
changes occur in the project requirement or in case of any performance issues.
2. Continuous integration
• Continuous integration is the most crucial phase in the entire DevOps
lifecycle.
• This tool helped the organization in integrating critical functionalities such as incident
management. This tool also makes the testing with simulation simple.
Tools Used in Continuous integration
• Jenkin, Bamboo, GitLab CI, Buddy, TeamCity, Travis, and CircleCI are a
few DevOps tools used to make the project workflow smooth and
more productive.
Well, whatever tools you select for continuous integration, pick the
one that can fit your business and project requirements.
Continuous Testing
• Some teams carry out the continuous testing phase before the
integration occurs, while others do it after the integration.
• Quality analysts continuously test the software for bugs and issues
during this stage using Docker containers.
• In case of a bug or an error, the code is sent back to the integration
phase for modification.
• Automation testing also reduces the time and effort to deliver quality
results.
• Teams use tools like Selenium at this stage. Moreover, continuous
testing enhances the test evaluation report and minimizes the
provisioning and maintenance cost of the test environments
Tools Used in Continuous Testing
• JUnit, Selenium, TestNG, and TestSigma are a few DevOps tools for
continuous testing.
• Development teams release the code to servers and schedule the updates for servers,
keeping the configurations consistent throughout the production process.
• This practice made the continuous delivery of new features in production possible.
Tools Used
• Ansible, Puppet, and Chef are the configuration management tools that
make the deployment process smooth and consistent throughout the
production process.
• Docker and Vagrant are another DevOps tool used widely for handling
the scalability of the continuous deployment process.
Furthermore, this has helped them improve the application as per their
customers’ needs.
This is how Tangerine bank managed to repurpose the resources and
money on other crucial things excellently after adopting DevOps.
Tools Used:
Pendo is a product analytics tool used to collect customer reviews and
insights.
Qentelli’s TED is another tool used primarily for tracking the entire
DevOps process to gather actionable insights for bugs and flaws.
• The code supporting new functionality is continuously integrated with
the existing code. Therefore, there is continuous development of
software. The updated code needs to be integrated continuously and
smoothly with the systems to reflect changes to the end-users.
• Jenkins is a popular tool used in this phase. Whenever there is a
change in the Git repository, then Jenkins fetches the updated code and
prepares a build of that code, which is an executable file in the form of
war or jar. Then this build is forwarded to the test server or the
production server.
• 3) Continuous Testing
• This phase, where the developed software is continuously testing for
bugs. For constant testing, automation testing tools such as TestNG,
JUnit, Selenium, etc are used. These tools allow QAs to test multiple
code-bases thoroughly in parallel to ensure that there is no flaw in the
functionality. In this phase, Docker Containers can be used for
simulating the test environment.
• Selenium does the automation testing, and TestNG generates the
reports. This entire testing phase can automate with the help of a
Continuous Integration tool called Jenkins.
• Automation testing saves a lot of time and effort for executing the tests
instead of doing this manually. Apart from that, report generation is a
big plus. The task of evaluating the test cases that failed in a test suite
gets simpler. Also, we can schedule the execution of the test cases at
predefined times. After testing, the code is continuously integrated
with the existing code.
• Some developers carry out the continuous testing phase prior to the
continuous integration phase. Based on the updations in the application
code, this phase can be repositioned around the continuous integration
phase in the DevOps lifecycle. Here, the developed software is
continuously tested for bugs. A test environment is simulated with the use
of Docker containers.
• Through automated testing, developers save effort and time, usually lost in
manual testing. Reports generated by automated testing improve the test
evaluation process. Analyzing the failed test-cases becomes easy. After
going through a UAT (User Acceptance Testing) process, the resultant
testsuite is simpler and bug-free. TestNG, Selenium and JUnit are some of
the DevOps tools used for automated testing. These tools can also arrange
test-case execution in a preset timeline
• 4) Continuous Monitoring
• Monitoring is a phase that involves all the operational factors of the entire
DevOps process, where important information about the use of the software
is recorded and carefully processed to find out trends and identify problem
areas. Usually, the monitoring is integrated within the operational
capabilities of the software application.
• It may occur in the form of documentation files or maybe produce
large-scale data about the application parameters when it is in a continuous
use position. The system errors such as server not reachable, low memory,
etc are resolved in this phase. It maintains the security and availability of
the service.
• Monitoring the performance of an application is of key importance
for application developers. In this phase, developers record data on
the use of application and continuously monitor each functionality.
• “Server not reachable” or “low memory” are some of the common
system errors resolved in this phase. Continuous monitoring helps in
sustaining the availability of services in the application. It also
determines the threats and root causes of recurring system errors.
Security issues get resolved and problems are automatically detected
and fixed.
• Compared to the software development teams, the IT operations
teams are more involved in this phase. Their role is pivotal in
supervising user activity, checking the system for unusual behavior,
and tracing the presence of bugs.
• Sensu, ELK Stack, NewRelic, Splunk and Nagios are the key DevOps
tools used in continuous monitoring. These tools enable complete
control in overseeing the performance of the system, the production
server, and the application. The operations team can actively engage
in increasing the reliability and productivity of the applications with
the help of these tools.
• When major issues are detected in this phase, the application is
swiftly rerun through all the earlier phases of the DevOps lifecycle.
That is how finding a resolution to all sorts of issues becomes faster in
this phase
• The last phase of the DevOps life cycle is the shortest phase and the
least complicated one. The purpose of continuous operation is to
automate the process of releasing the application and the
subsequent updates. Development cycles in continuous operations
are shorter, allowing developers to ongoing accelerate the
time-to-market for the application.
5) Continuous Feedback
• The application development is consistently improved by analyzing
the results from the operations of the software. This is carried out by
placing the critical phase of constant feedback between the
operations and the development of the next version of the current
software application.
• It is clear from the discussion that continuity is the critical factor in the
DevOps in removing steps that often distract the development, take it
longer to detect issues and produce a better version of the product after
several months. With DevOps, we can make any software product
more efficient and increase the overall count of interested customers in
your product.