Devops
Devops
Definition:2
Agile development is a term that's used to describe iterative software development. Iterative
software development shortens the DevOps life cycle by completing work in short
increments, usually called sprints. Sprints are typically one to four weeks long. Agile
development is often contrasted with traditional or waterfall development, which plans larger
projects up front and completes them according to the plan.
Delivering production quality code every sprint requires the Agile development team to
account for an accelerated pace. All coding, testing, and quality verification must be done
each and every sprint. Unless a team is properly set up, the results can fall short of
expectations. While these disappointments offer great learning opportunities, it's helpful to
learn some key lessons before getting started.
DevOps
DevOps is a software development practice that combines software development and IT
operations. It uses a combination of tools, practices, and a cultural philosophy to improve the
software development lifecycle.
Benefits of DevOps
Faster delivery: DevOps can reduce the time it takes to develop and deploy
software.
Better quality: DevOps can improve the quality and security of software.
Faster response to customers: DevOps can help organizations respond to customer
needs more quickly.
Better collaboration: DevOps can improve communication and collaboration between
development and operations teams.
DevOps teams use tools like continuous integration and delivery (CI/CD) to improve
software quality and security.
DevOps teams use monitoring and analytics tools to analyze how code changes affect
the overall environment.
DevOps history
The DevOps movement started around 2007 when software development and IT operations
teams became concerned with the traditional software development model.
DevOps tools
Some examples of DevOps tools include AWS CodePipeline, Azure DevOps, and Google
Cloud Deployment Manager.
Agile development breaks down projects into small, manageable "sprints" where teams
deliver working software increments regularly, aligning with the DevOps philosophy of
continuous delivery.
By streamlining the development process with automation and frequent releases, teams can
deliver new features to customers more quickly.
Improved quality:
Continuous testing and feedback loops throughout the development process help identify and
resolve issues early on, resulting in higher quality software.
Increased adaptability:
Agile practices allow teams to respond to changing requirements and market conditions more
effectively.
Enhanced collaboration:
Breaking down silos between development and operations teams fosters better
communication and collaboration.
What is ITIL
ITIL stands for Information Technology Infrastructure Library. It’s actually used to guide it
team to improve the value of service by focusing on solving the business issues and creating
business value. One of the important parts of ITIL is the configuration management database
which provides services, users, software, hardware, documents, and IT components to the
central authority. ITIL has been adopted by thousands of organizations worldwide like
Microsoft, NASA, and HSBC. ITIL’s current version which is use in the market is ITIL4, it
provides a practical and flexible basis to support organizations for a digital transformation.
ITIL
ITIL and DevOps are frameworks that can be used together to improve IT service
management (ITSM). ITIL provides a structured approach to ITSM, while DevOps focuses
on streamlining and automating software development and deployment.
ITIL's SLAs can reduce confusion and complaints by outlining what has been promised to a
customer
Reduce incidents
Combine ITIL's incident management processes with DevOps' automation to reduce
incidents
Improve collaboration
Automation can improve collaboration between stakeholders
Increase release success
DevOps' automated deployment pipeline can increase the success rate of releases.
1. DevOps can replace ITIL: There are essential business functions like service
Management, support, operation, governance, and costing these processes are
important and they both given by DevOps and ITIL, only DevOps or ITIL can’t
provide them.
2. ITIL is always documentation: It’s actually not true information ITIL is what the
team makes the choice the rules are made by team, ITIL has Its own guidelines but
the decision is always made by the IT team.
3. ITIL is only for large companies: It’s true that ITIL is used by large enterprises but
Its guidelines can also benefit small businesses, small business only needs to know
how to handle change management, major incident, and knowledge management.
It’s better collaboration between IT and business when we use ITIL and DevOps together and
it also helps in customer satisfaction due to the improved delivery of services and better
management of issues. ITIL provides a tried-and-true starting point, where DevOps can add
improvement with the blameless examination, automation, and other collaborative
approaches which makes every IT process easier.
DevOps processes
The meaning of DevOps processes is pretty much connected to the DevOps description
itself. When we talk about the DevOps process we refer to the cycle of established DevOps
phases that enables efficient software development. The combination of DevOps
methodologies, practices, and tools organized in the DevOps loop is what creates the agile
intake process
The DevOps process involves several steps, including planning, building, testing, and
releasing code. The goal of DevOps is to streamline the flow of information between
development and operations teams to improve efficiency and collaboration.
Steps in the DevOps process
Planning: Define objectives and goals, and create a design based on requirements
Other considerations
Continuous Delivery (CD) is an important part of DevOps that helps teams deliver software
updates quickly and safely.
Continuous Delivery (CD)
Continuous Delivery (CD) automates the steps of building, testing, and deploying software. It
ensures that code changes are always ready for deployment with minimal manual
intervention.
Aims to reduce costs, accelerate development, and lower risks while maintaining code
quality
Involves creating a release pipeline that automates infrastructure creation and
deployment of new builds.
Continuous integration ensures code worked by several developers across multiple
locations is always integrated into a common repository.
Configuration management makes it possible to abstract away the complexities of a
product into simple configurations.
Test-driven development ensures that the code can be tested and deployed, all in a
matter of a few minutes.
Continuous Integration(CI)
There could be scenarios when developers in a team, work in isolation for an extended period
and only merge their changes to the master branch once their work is completed. This not
only makes the merging of code very difficult, prone to conflicts, and time-consuming but
also results in bugs accumulating for a long time which are only identified in later stages of
development. These factors make it harder to deliver updates to customers quickly.
At its core, continuous delivery follows a streamlined process known as the continuous
delivery pipeline for cloud computing environments. The pipeline begins with the developer
or development team committing their code to the source repository. Automated tests (unit,
regression, performance, etc.) are run for every check-in to ensure high-quality code. Once
the code is verified, the executables are deployed automatically to an intermediate
environment such as staging, integration, or UAT. At this point, the code is ready to go into
production and can be pushed live on demand.
Faster Releases: Helps teams get features and updates to customers more quickly.
Lower Risk: Reduces the chances of problems during releases by making smaller
changes more often.
Better Teamwork: Improves communication and collaboration between developers
and operations teams.
Higher Quality: Leads to better software by catching bugs early through regular
testing.
More Flexibility: Allows teams to quickly respond to customer feedback and changes
in the market.
Popular CD Tools:
In the world of software development, release management plays a pivotal role in ensuring
the smooth and efficient delivery of software products. It serves as a bridge between the
development and operations teams, allowing for effective collaboration and coordination
throughout the software development lifecycle.
Release management in DevOps refers to the comprehensive set of practices and processes
involved in planning, scheduling, coordinating, and controlling the release of software
applications or updates. It aims to minimize risk, ensure quality, and maximize the value of
software releases to end-users or customers.
Release planning involves identifying the scope of a release, defining its objectives, and
establishing a timeline for its delivery. It also includes coordinating with various
stakeholders, such as developers, testers, operations teams, and business units, to align their
efforts and ensure a successful release.
2. Environment Management
Effective release management requires the establishment and maintenance of consistent and
reliable environments for development, testing, and production. This involves managing the
configuration of infrastructure, software dependencies, and data to ensure compatibility and
minimize potential issues during deployment.
3. Release Deployment
The deployment phase of release management involves the actual installation, configuration,
and activation of the software release on target environments. It relies on automation and
deployment tools to streamline the process and reduce the risk of errors or downtime.
5. Change Management
Monitoring the performance and stability of a released software application is crucial for
identifying and addressing any issues or bugs. Gathering feedback from end-users and
stakeholders helps to continuously improve the software and enhance future releases.
1. Reduced Risk
Efficient release management allows for shorter deployment cycles, enabling organizations to
deliver new features, enhancements, or bug fixes to end-users more frequently. This agility
enhances customer satisfaction and keeps businesses competitive.
3. Improved Collaboration
In the realm of DevOps, release management serves as a critical function to ensure the
successful delivery of software applications. By planning, coordinating, and controlling the
release process, organizations can minimize risks, enhance collaboration, and deliver high-
quality software products to their customers.
Scrum
Scrum is a framework of roles, rules, artifacts, and events used for implementing Agile
projects. This iterative approach to software development consists of ‘sprints’ that generally
last for one to four weeks, ensuring regular delivery of new product versions.
Scrum is just a simple framework for complex product development that is based on values
and principles. Scrum is not a prescriptive methodology that tells you how your process
should look like. Scrum is highly focused on what is happening during the Sprint. Scrum will
not tell you how your process within the Sprint should look like. Scrum is an additive
framework, what that means is Scrum will only tell you the minimum sets of what you need
to have so that you can claim you are using Scrum. The same as when you need to install a
software on your computer, there is a minimum requirement for the computer
specification. But it is not illegal to install the software on a computer that is above the
minimum specification. So with this premise, it is not illegal to add practices that will
enhance the flow of your value delivery within the Scrum Framework.
A framework that helps teams work in short cycles
Emphasizes collaboration, flexibility, and responsiveness to change
Uses a semi-prescriptive approach to minimize ambiguities
Helps organize complicated tasks into user stories
Clear differentiation of roles and ceremonies
Quick release cycles
Electronic Kanban boards are also available in ALM tools like Rally (CA Agile), Jira, Swift,
Kanban, LeanKit, Kanban, etc. Stages could be configured in these tools, and the movement
of tickets between stages could be viewed in these tools.
Kanban in DevOps is a visual tool that helps teams manage work items and track progress in
a project. It's a common framework for agile and DevOps software development.
How it works
Kanban boards are split into columns that track each stage of a project.
Benefits
Kanban principles start with what you know, pursue incremental change, respect the current
process, and encourage leadership at all levels.
A delivery pipeline in DevOps is a series of automated steps that code changes go through
from development to production. It's made up of interconnected stages, each with a specific
task.
DevOps pipeline
Stages of a DevOps pipeline
Continuous testing
Automated tests are run on the code to ensure its usability and suitability
Continuous delivery (CD)
Validated code changes are put into select environments or code repositories
Continuous deployment
The release and deployment of software into production environments is automated
Continuous operations
The efficient management of hardware and software upgrades to reduce the need for planned
downtime
Continuous monitoring
The validation of the environment's stability and verification that the applications are doing
what they're designed to do
Jenkins, Bamboo, and GitLab are some tools that can be used to create a
DevOps pipeline.
Bottlenecks
Bottlenecks in DevOps are obstacles that slow down the software development life cycle
(SDLC). They can be caused by a number of factors, including a lack of resources, poor
planning, or competing incentives.
Causes of bottlenecks
Legacy processes: Outdated change management processes can slow down the
development cycle
Lack of resources: A shortage of testing or QA personnel or facilities can cause
bottlenecks
Manual processes: Manual tasks can slow down the development cycle
Use monitoring tools to track resource utilization, build and deployment times, and
performance metrics
UNIT-2
Software modeling
DevOps
DevOps aims to shorten the software development lifecycle and improve the quality and
reliability of software releases. It can result in a competitive advantage for businesses and
their customers.
DevOps Lifecycle
DevOps defines an agile relationship between operations and Development. It is a process that is
practiced by the development team and operational engineers together from beginning to the final
stage of the product.
Learning DevOps is not complete without understanding the DevOps lifecycle phases. The DevOps
lifecycle includes seven phases as given below:
7 Cs of DevOps:
1. Continuous Development
2. Continuous Integration
3. Continuous Testing
4. Continuous Deployment/Continuous Delivery
5. Continuous Monitoring
6. Continuous Feedback
7. Continuous Operations
1. Continuous Development
In Continuous Development code is written in small, continuous bits rather than all at once,
Continuous Development is important in DevOps because this improves efficiency every
time a piece of code is created, it is tested, built, and deployed into production. Continuous
Development raises the standard of the code and streamlines the process of repairing flaws,
vulnerabilities, and defects. It facilitates developers’ ability to concentrate on creating high-
quality code.
2. Continuous Integration
Continuous Integration can be explained mainly in 4 stages in DevOps. They are as follows:
The stages mentioned above are the flow of Continuous Integration and we can use any of the
tools that suit our requirement in each stage and of the most popular tools are GitHub for
source code management(SCM) when the developer develops the code on his local machine
he pushes it to the remote repository which is GitHub from here who is having the access can
Pull, clone and can make required changes to the code. From there by using Maven we can
build them into the required package (war, jar, ear) and can test the Junit cases.SonarQube
performs code quality reviews where it will measure the quality of source code and
generates a report in the form of HTML or PDF format. Nexus for storing the build
artifacts will help us to store the artifacts that are build by using Maven and this whole
process is achieved by using a Continuous Integration tool Jenkins.
3. Continuous Testing
Any firm can deploy continuous testing with the use of the agile and DevOps methodologies.
Depending on our needs, we can perform continuous testing using automation testing tools
such as Testsigma, Selenium, LambdaTest, etc. With these tools, we can test our code and
prevent problems and code smells, as well as test more quickly and intelligently. With the aid
of a continuous integration platform like Jenkins, the entire process can be automated, which
is another added benefit.
4. Continuous Deployment/ Continuous Delivery
5. Continuous Monitoring
6. Continuous Feedback
Once the application is released into the market the end users will use the application and
they will give us feedback about the performance of the application and any glitches affecting
the user experience after getting multiple feedback from the end users’ the DevOps team will
analyze the feedbacks given by end users and they will reach out to the developer team tries
to rectify the mistakes they are performed in that piece of code by this we can reduce the
errors or bugs that which we are currently developing and can produce much more effective
results for the end users also we reduce any unnecessary steps to deploy the application.
Continuous Feedback can increase the performance of the application and reduce bugs in the
code making it smooth for end users to use the application.
7. Continuous Operations
We will sustain the higher application uptime by implementing continuous operation, which
will assist us to cut down on the maintenance downtime that will negatively impact end
users’ experiences. More output, lower manufacturing costs, and better quality control are
benefits of continuous operations.
2. Code – During this point, the code is being developed. To simplify the design process, the
developer team employs lifecycle DevOps tools and extensions like Git that assist them in
preventing safety problems and bad coding standards.
3. Build – After programmers have completed their tasks, they use tools such as Maven and
Gradle to submit the code to the common code source.
4. Test – To assure software integrity, the product is first delivered to the test platform to
execute various sorts of screening such as user acceptability testing, safety testing,
integration checking, speed testing, and so on, utilizing tools such as JUnit, Selenium, etc.
5. Release – At this point, the build is prepared to be deployed in the operational environment.
The DevOps department prepares updates or sends several versions to production when the
build satisfies all checks based on the organizational demands.
7. Operate – This version is now convenient for users to utilize. With tools including Chef, the
management department take care of server configuration and deployment at this point.
8. Monitor – The DevOps workflow is observed at this level depending on data gathered from
consumer behavior, application efficiency, and other sources. The ability to observe the
complete surroundings aids teams in identifying bottlenecks affecting the production and
operations teams’ performance.
software architecture
Software architecture in DevOps is a framework that integrates the processes, tools, and
teams involved in the software development and delivery lifecycle. It aims to improve the
quality of software delivery and organizational performance.
Key aspects of software architecture in DevOps
Collaboration
Automation
DevOps architecture uses automation to ensure that changes to code and configuration are
repeatable, traceable, and automated.
Monitoring
DevOps architecture uses continuous monitoring to identify risks of failure and track the
health of the application.
Infrastructure as code
DevOps architecture uses software to provision and configure operations.
Reliability engineer
DevOps architecture includes a reliability engineer on each development team who ensures
that changes are deployed successfully.
Development and operations both play essential roles in order to deliver applications.
The deployment comprises analyzing the requirements, designing, developing, and
testing of the software components or frameworks.
The operation consists of the administrative processes, services, and support for the
software. When both the development and operations are combined with
collaborating, then the DevOps architecture is the solution to fix the gap between
deployment and operation terms; therefore, delivery can be faster.
DevOps architecture is used for the applications hosted on the cloud platform and
large distributed applications. Agile Development is used in the DevOps architecture
so that integration and delivery can be contiguous. When the development and
operations team works separately from each other, then it is time-consuming to
design, test, and deploy. And if the terms are not in sync with each other, then it may
cause a delay in the delivery. So DevOps enables the teams to change their
shortcomings and increases productivity.