Devops Unit-3
Devops Unit-3
Definition of DevOps
DevOps can be defined as a combination of cultural
philosophies, processes and tools to facilitate
organizations deliver services and applications much
faster than they can through conventional software
development processes.
It helps to increase customers‘ confidence in the
applications that an organization offers, there by
allowing the company to grow(flourish) and achieve its
business goals faster .
Definition of DevOps
DevOps is a collaboration between Development and
IT Operations to make software production and
Deployment in an automated & repeatable way.
DevOps helps increase the organization’s speed to
deliver software applications and services. The full
form of ‘DevOps’ is a combination of ‘Development’
and ‘Operations.’
In simple words, DevOps can be defined as an
alignment of development and IT operations with
better communication and collaboration.
Purpose of DevOps
Before DevOps came into the limelight, two separate
teams in an IT organization - the Development team
and the Operations team.
Devops aims to bridge the gap between two significant
departments of IT organization.
DevOps is not a tool or a team, it is the process or a
methodology of using various tools to solve the
problems between Developers and Operations team ,
hence the term "Dev-Ops“.
Purpose of DevOps
The development team is responsible for developing
software and making sure that the code worked
perfectly.
After hours of hard work and a lot of trial and error,
the team releases a code that has to be executed by the
Operations team which is responsible for the release
and operation of the code.
The operations team will be checking the application
and its performance and reporting back any bugs, if
present.
Purpose of DevOps
Before DevOps, the development and operation team
worked in complete isolation.
Testing and Deployment were isolated activities done
after design-build.
Without using DevOps, team members spend a large
amount of their time testing, deploying.
Development & operation teams have separate
timelines and are not synch, causing further delays.
There is a demand to increase the rate of software
delivery by business stakeholders.
Purpose of DevOps
The two major teams always had a conflict when it
came to execution.
The development team always had the pressure of
completing the old work that was considered faulty by
the operations team.
With DevOps, there is no wait time to deploy the code
and get it tested.
Hence, the developer gets instantaneous feedback on
the code, and therefore can close the bugs, and can
make the code production ready faster.
Purpose of DevOps
Key Purpose of DevOps is to join development and
operations teams to enable continuous delivery.
One key purpose of DevOps is to decrease the total
lifecycle of software development with the help of
faster deployments with efficient collaboration
between development and operations teams.
DevOps Working Process
In the DevOps model, development and operations
teams are no longer isolated.
In some cases, these two teams are combined into one
team, where engineers work throughout the
application lifecycle from development and testing to
deployment and operations .
These teams automate all processes that are time-
consuming manual processes.
They use technology stacks and tools to help them
operate and evolve their applications quickly and
reliably.
Life cycle of DevOps
DevOps lifecycle can be defined as a continuous
software development process that employs best
practices to plan, build, integrate, deploy, monitor,
operate and offer continuous feedback throughout the
software’s lifecycle.
DevOps Lifecycle can be viewed as a process of adding
new features and fixing bugs continuously to improve
the application, in the shortest time possible.
It is often represented by a continuous loop diagram.
Life cycle of DevOps
Life cycle of DevOps
Different phases of the DevOps lifecycle.
Plan – In contrast to conventional methods of development,
this model assumes that each stage will be repeated as
necessary. In this manner, the DevOps workflow is planned
with the likelihood of future iterations and likely prior
versions in mind.
Code –Developers will write code in accordance with the
specifications outlined in the planning phase and ensure that
the code is created with the project’s operations in mind.
Build – Code will be introduced to the project during this
phase. This can be accomplished in a variety of ways, through
GitHub or a comparable version control site is frequently
used.
Life cycle of DevOps
Build - The developer will request the addition of the
code, which will be reviewed as necessary. The request
will be approved if the code is ready to be uploaded,
and the code will be added to the project. Even when
adding new features and addressing bugs, this method
is effective.
Test – Throughout the testing phase, teams will do any
necessary testing to ensure the project performs as
planned.
Life cycle of DevOps
Release – The release phase occurs when the code has
been verified as ready for deployment and a last check
for production readiness has been performed.
Deploy – In the deploy phase, the project is prepared
for the production environment and is operating as
planned in that environment. This would be the
responsibility of the operations team. In DevOps, it is
a shared responsibility. This shared duty pushes
team members to collaborate to guarantee a successful
deployment.
Life cycle of DevOps
Operate – In the operating phase, teams test the project in
a production environment, and end users utilise the
product. Rather, it informs future development cycles and
manages the configuration of the production environment
and the implementation of any runtime requirements.
Monitor – During the monitoring phase, product usage as
well as any feedback, issues, or possibilities for
improvement are recognized and documented. This
information is then conveyed to the subsequent iteration to
help in the development process. This phase is essential for
planning the next iteration.
Life cycle of DevOps
Life cycle of DevOps
Life cycle of DevOps
1. Continuous Development
This phase involves ‘planning‘ and ‘coding’ for the
software. The vision of the project is defined, project
needs are gathered. Developers begin writing the code
for the application.
There are no DevOps tools that are required for
planning, but there are a number of tools for
maintaining the code.
Life cycle of DevOps
1. Continuous Development
The code can be written in any language, but it is
maintained by using Version Control tools. Maintaining
the code is referred to as Source Code Management.
The most popular tools used are Git, Mercurial, CVS, and
JIRA. Also tools like Ant, Maven, Gradle can be used in this
phase for building/ packaging the code into an executable
file that can be forwarded to any of the next phases.
Even after the final release, there are feedbacks that the
developer needs to consider. Therefore, this continuous
process of improving the application by the Developer is
called Continuous Development.
GIT
Life cycle of DevOps
2. Continuous Testing
After the code is uploaded to the source code platform,
it undergoes testing with the help of test codes.
This is the stage where the developed software is
tested for bugs.
For continuous testing ,automation testing tools
like Selenium, TestNG, JUnit etc are used.
These tools allow QAs to test code bases thoroughly to
ensure that there are no flaws in the functionality.
In this phase, Docker Containers can be used for
simulating the test environment.
Life cycle of DevOps
2. Continuous Testing
Automation testing saves a lot of time, effort and labor
for executing the tests instead of doing this manually.
Besides that, report generation is a big plus. The task
of evaluating the test cases that failed in a test suite
gets simpler.
After testing, the code is continuously integrated with
the existing code.
Continuous Testing
Life cycle of DevOps
3. Continuous Integration
This stage is the heart of the entire DevOps life cycle.
Developers require to commit changes to the source
code more frequently.
Every commit is then verified for early detection of
problems if they are present. code build not only
involves compilation but it also includes code review,
unit testing, integration testing, and packaging.
Life cycle of DevOps
3. Continuous Integration
The code supporting new functionality is integrated with
the existing code. Since there is continuous development of
software, the updated code needs to be integrated
continuously with the systems to reflect changes to the
end-users.
Jenkins is a very popular tool used in this phase. Whenever
there is a change in the GIT repository, Jenkins fetches the
updated code and it prepares a build of that code which is
an executable file in the form of a war or a jar.
This build is then forwarded to the test server or the
production server.
Continuous Integration
Life cycle of DevOps
Continuous Deployment
This is the most important step of the DevOps lifecycle,
during which the finished code is released to production
servers.
It is important to ensure that the code is correctly deployed
on all the servers.
Since the new code is deployed on a continuous basis,
Configuration management tools and Containerization
tools help in achieving Continuous Deployment (CD).
configuration management tools that are used here are
Chef, Puppet, Ansible, and SaltStack.
Life cycle of DevOps
Continuous Deployment
Containerization tools also play an equally important role in
the deployment stage.
Docker and Vagrant are the popular tools used for this
purpose.
Containerization tools help in maintaining consistency
across the environments where the application is
developed, tested and deployed.
Using these tools, there is no scope of errors/ failure in the
production environment as they replicate same packages
used in the development/ testing environment.
Life cycle of DevOps:
Continuous Monitoring
During this phase, the functioning and features of the
application are regularly monitored to detect system
faults such as low memory or a non-reachable server.
This phase involves the participation of the Operations
team who will monitor the user activity for bugs or any
improper behavior of the system.
It helps us automatically fix the problem as soon as
they are detected.
Life cycle of DevOps:
Continuous Monitoring
This procedure enables the IT staff to detect app
performance issues and their underlying causes.
Whenever IT teams discover a serious issue, the
application goes through the complete DevOps cycle
again to determine a solution.
During this phase, security vulnerabilities can be
recognized and corrected automatically.
The popular tools used for this are splunk,nagios,
NewRelic .
DevOps Tools
Devops
Benefits of DevOps
DevOps provides range of benefits to organizations,
helping them improve their software delivery
processes, increase collaboration, and enhance overall
business outcomes.
Some of the key benefits of DevOps include
Benefits of DevOps
1. Ensures effective collaboration between teams:
DevOps breaks down traditional silos between
development and operations teams. Increased
communication and shared ownership of the entire
software lifecycle foster better teamwork and
problem-solving.
2. Faster Time to Market: DevOps practices enable
organizations to release new features, updates, and
bug fixes more frequently and reliably. This agility
allows businesses to respond quickly to market
demands and changes, gaining a competitive edge.
Benefits of DevOps
3. Increased customer satisfaction
Dissatisfied customers are never a good sign for any
business. Feed back loops are an important
component of DevOps.
These loops empower end users to track the progress
of app development at various stages. In addition,
they can suggest changes(if any) or give their inputs to
make the app more customer-centric.
Benefits of DevOps
4. Continuous Delivery: DevOps enables continuous
integration and continuous deployment (CI/CD),
automating the end-to-end software delivery process.
This reduces manual intervention, minimizes errors,
and speeds up the deployment pipeline.
5. Improved Quality: With automated testing and
continuous feedback, DevOps ensures that issues are
identified early in the development cycle. This leads to
higher-quality software and fewer defects reaching
production environments.
Benefits of DevOps
6. Enhanced Reliability: Automation and rigorous
testing in a DevOps environment lead to more stable
and reliable systems. This reduces the likelihood of
outages and downtime, resulting in improved user
experience and customer satisfaction.
7. Risk Mitigation: Continuous monitoring and
feedback help detect vulnerabilities and performance
issues early, allowing teams to address them before
they impact users. This contributes to enhanced
security and risk management.
Benefits of DevOps
8. Innovation and Experimentation: DevOps
promotes a culture of experimentation and learning
from failures. Teams are more willing to try new ideas
and quickly adapt to changing requirements, leading
to innovation and business growth.
9. Cultural Transformation: Embracing DevOps
requires cultural shifts, such as adopting a mindset of
continuous improvement and collaboration. This
transformation can lead to increased employee
engagement and job satisfaction.
Benefits of DevOps
10. Alignment with Business Goals: DevOps aligns IT
activities with business goals and customer needs. By
delivering features and updates faster, organizations
can respond to market shifts and customer feedback
more effectively.
DevOps vs Agile
DevOps and Agile are modern software development
practices aimed at providing a framework to produce
a product.
Although both DevOps and agile result in the
development of software, they have different
approaches, involve different groups and departments
and structure production differently.
DevOps vs Agile
DevOps is a culture, fostering collaboration amongst
all participants involved in the development and
maintenance of software.