UNIT-I
1.1 Introduction To DevOps
DevOps is a collection of two words, “Development” and “Operations,”
representing a cultural approach that emphasizes collaboration between
development and operations teams to streamline the entire software delivery
lifecycle.
DevOps is a software development approach emphasizing collaboration,
automation, and continuous delivery to provide high-quality products to customers
quickly and efficiently.
DevOps breaks down silos between development and operations teams to enable
seamless communication, faster time-to-market, and improved customer
satisfaction.
DevOps is a software development approach emphasizing collaboration,
automation, and continuous delivery to provide high-quality products to customers
quickly and efficiently. DevOps breaks down silos between development and
operations teams to enable seamless communication, faster time-to-market, and
improved customer satisfaction.
Every phase of the software development lifecycle, including planning, coding,
testing, deployment, and monitoring, is heavily automated in DevOps. This
improves productivity, ensures consistency, and lowers error rates in the
development process.
A culture of continuous improvement is also promoted by DevOps, where feedback
loops are incorporated into the procedure to facilitate quicker iteration and better
decision-making.
Organizations can increase their agility, lower costs, and speed up innovation by
adopting DevOps.
DevOps lifecycle
Let’s briefly overview how the DevOps lifecycle works at every stage.
The DevOps lifecycle consists of eight representing the processes,capabilities,and
tools needed for development(on the left side of the loop) and operations (on the
right side of the loop).
1. Plan: In this stage, teams identify the business requirement and collect end-
user feedback. They create a project roadmap to maximize the business value
and deliver the desired product during this stage.
2. Code: The code development takes place at this stage. The development
teams use some tools and plugins like Git to streamline the development
process, which helps them avoid security flaws and lousy coding practices.
3. Build: In this stage, once developers finish their task, they commit the code to
the shared code repository using build tools like Maven and Gradle.
4. Test: Once the build is ready, it is deployed to the test environment first to
perform several types of testing like user acceptance test, security test,
integration testing, performance testing, etc., using tools like JUnit, Selenium,
etc., to ensure software quality.
5. Release: The build is ready to deploy on the production environment at this
phase. Once the build passes all tests, the operations team schedules the
releases or deploys multiple releases to production, depending on the
organizational needs.
6. Deploy: In this stage, Infrastructure-as-Code helps build the production
environment and then releases the build with the help of different tools.
7. Operate: The release is live now to use by customers. The operations team at
this stage takes care of server configuring and provisioning using tools like
Chef.
8. Monitor: In this stage, the DevOps pipeline is monitored based on data
collected from customer behavior, application performance, etc. Monitoring
the entire environment helps teams find the bottlenecks impacting the
development and operations teams’ productivity.
DevOps Advantages and Disadvantages
Here are some advantages and disadvantages that DevOps can have for business,
such as:
Advantages
o DevOps is an excellent approach for quick development and deployment of
applications.
o It responds faster to the market changes to improve business growth.
o DevOps escalate business profit by decreasing software delivery time and
transportation costs.
o DevOps clears the descriptive process, which gives clarity on product
development and delivery.
o It improves customer experience and satisfaction.
o DevOps simplifies collaboration and places all tools in the cloud for
customers to access.
o DevOps means collective responsibility, which leads to better team
engagement and productivity.
Disadvantages
o DevOps professional or expert's developers are less available.
o Developing with DevOps is so expensive.
o Adopting new DevOps technology into the industries is hard to manage in
short time.
o Lack of DevOps knowledge can be a problem in the continuous integration of
automation projects.
In the DevOps model, the operations team is responsible for the
following key tasks:
Infrastructure Management: Provisioning, configuring, and maintaining the underlying
infrastructure (servers, networks, storage, etc.) that supports the application and services.
Deployment Automation: Automating the deployment of software artifacts (e.g., code,
configurations, databases) to different environments (development, staging, production) using
tools like deployment pipelines.
Monitoring and Alerting: Setting up monitoring solutions to track the performance, health,
and availability of the systems and services. Configuring alerts to proactively notify the team
of any issues or anomalies.
Incident Response: Quickly identifying, investigating, and resolving production issues or
outages to minimize downtime and ensure service reliability.
Security and Compliance: Implementing security measures, such as access controls,
vulnerability management, and compliance with industry standards and regulations.
Capacity Planning: Forecasting and provisioning the required computational resources (e.g.,
CPU, memory, storage) to handle the expected workload and ensure scalability.
Change Management: Coordinating and managing changes to the production environment,
such as infrastructure upgrades, software updates, or configuration changes, to minimize the
risk of disruptions.
Collaboration with Development: Closely working with the development team to ensure a
smooth handoff of new features or bug fixes from development to production, and providing
feedback on infrastructure and operational concerns.
Continuous Improvement: Analyzing operational data, identifying bottlenecks, and
implementing process improvements to enhance the reliability, efficiency, and scalability of
the overall system.
1.2 Agile Model Development Model
• The meaning of Agile is swift or versatile."Agile process model" refers to a
software development approach based on iterative development.
• Agile methods break tasks into smaller iterations, or parts do not directly
involve long term planning.
• The project scope and requirements are laid down at the beginning of the
development process.
• Plans regarding the number of iterations, the duration and the scope of each
iteration are clearly defined in advance.
• Each iteration is considered as a short time "frame" in the Agile process
model, which typically lasts from one to four weeks.
• The division of the entire project into smaller parts helps to minimize the
project risk and to reduce the overall project delivery time requirements. Each
iteration involves a team working through a full software development life
cycle including planning, requirements analysis, design, coding, and testing
before a working product is demonstrated to the client.
Phases of Agile Model:
Following are the phases in the Agile model are as follows:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build
the project. Based on this information, you can evaluate technical and economic
feasibility.
Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply to
your existing system.
Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a
working product. The product will undergo various stages of improvement, so it
includes simple, minimal functionality.
Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
Deployment: In this phase, the team issues a product for the user's work
environment.
Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Agile Testing Methods:
o Scrum
o Crystal
o Dynamic Software Development Method(DSDM)
o Feature Driven Development(FDD)
o Lean Software Development
o eXtreme Programming(XP)
When to use the Agile Model?
o When frequent changes are required.
o When a highly qualified and experienced team is available.
o When a customer is ready to have a meeting with a software team all the time.
o When project size is small.
Advantage(Pros) of Agile Method:
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
Disadvantages(Cons) of Agile Model:
1. Due to the shortage of formal documents, it creates confusion and crucial
decisions taken throughout various phases can be misinterpreted at any time
by different team members.
2. Due to the lack of proper documentation, once the project completes and the
developers allotted to another project, maintenance of the finished project can
become a difficulty.
1.3 DevOps and ITIL
ITIL is an abbreviation of Information Technology Infrastructure Library.
It is a framework which helps the IT professionals for delivering the best services
of IT. This framework is a set of best practices to create and improve the process of
ITSM (IT Service Management). It provides a framework within an organization,
which helps in planning, measuring, and implementing the services of IT.
The main motive of this framework is that the resources are used in such a way so
that the customer get the better services and business get the profit.
This framework was introduced by HMSO (Her Majesty's Stationery Office) in
the U.K in the year of 1989. It was developed based on C.C.T.A. (Central
Communication and Telecommunication Agency).
Service Lifecycle in ITIL
The ITIL framework is completely based on the lifecycle of a service. The
lifecycle of IT Service Management is also called as a 'Plan-Do-Check-Act
(PDCA)' or 'Deming Cycle'. It helps the service providers to achieve a better
understanding of its structure. It also defines the process that how the services are
started and maintained.
The lifecycle of a service in the framework of ITIL is broadly classified into the
following five stages:
Service Strategy
Service Strategy is the first and initial stage in the lifecycle of the ITIL
framework. The main aim of this stage is that it offers a strategy on the basis of the
current market scenario and business perspective for the services of IT.
This stage mainly defines the plans, position, patters, and perspective which are
required for a service provider. It establishes the principles and policies which
guide the whole lifecycle of IT service.
Following are the various essential services or processes which comes under
the Service Strategy stage:
o Financial Management
o Demand Management
o Service Portfolio Management
o Business Relationship Management
o Strategy Management
Service Design
It is the second phase or a stage in the lifecycle of a service in the framework of
ITIL. This stage provides the blueprint for the IT services. The main goal of this
stage is to design the new IT services. We can also change the existing services in
this stage.
o Following are the various essential services or processes which comes
under the Service Design stage:
o Service Level Management
o Capacity Management
o Availability Management
o Risk Management
o Service Continuity Management
o Service Catalogue Management
o Information Security Management
o Supplier Management
o Compliance ManagementArchitecture Management
Service Transition
Service Transition is the third stage in the lifecycle of ITIL Management
Framework.
The main goal of this stage is to build, test, and develop the new or modified
services of IT. This stage of service lifecycle manages the risks to the existing
services. It also certifies that the value of a business is obtained.
This stage also makes sure that the new and changed IT services meet the
expectation of the business as defined in the previous two stages of service strategy
and service design in the lifecycle.
It can also easily manage or maintains the transition of new or modified IT services
from the Service Design stage to Service Operation stage.
There are following various essential services or processes which comes under the
Service Transition stage:
o Change Management
o Release and Deployment Management
o Service Asset and Configuration Management
o Knowledge Management
o Project Management (Transition Planning and Support)
o Service Validation and Testing
o Change Evaluation
Service Operations
Service Operations is the fourth stage in the lifecycle of ITIL. This stage provides
the guidelines about how to maintain and manage the stability in services of IT,
which helps in achieving the agreed level targets of service delivery.
This stage is also responsible for monitoring the services of IT and fulfilling the
requests. In this stage, all the plans of transition and design are measured and
executed for the actual efficiency. It is also responsible for resolving the incidents
and carrying out the operational tasks.
There are following various essential services or processes which comes under the
stage of Service Operations:
o Event Management
o Access Management
o Problem Management
o Incident Management
o Application Management
o Technical Managemen
Continual Service Improvement
It is the fifth stage in the lifecycle of ITIL service. This stage helps to identify and
implement strategies, which is used for providing better services in future.
Following are the various objectives or goals under this CSI:
o It improves the quality services by learning from the past failures.
o It also helps in analyzing and reviewing the improvement opportunities in
every phase of the service lifecycle.
o It also evaluates the service level achievement results.
o It also describes the best guidelines to achieve the large-scale improvements
in the quality of [Link] also helps in describing the concept of KPI, which
is a process metrics-driven for evaluating and reviewing the performance of
the services.
1.4 DevOps Process and continuous Delivery
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.
1) Continuous Development
This phase involves the planning and coding of the software. The vision of the
project is decided during the planning phase. And the developers begin
developing the code for the application.
2) Continuous Integration
It is a software development practice in which the developers require to commit
changes to the source code more frequently. This may be on a daily or weekly
basis. Then every commit is built, and this allows early detection of problems if
they are present.
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
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.
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.
6) Continuous Deployment
In this phase, the code is deployed to the production servers. Also, it is essential
to ensure that the code is correctly used on all the [Link] new code is
deployed continuously, and configuration management tools play an essential
role in executing tasks frequently and quickly. Here are some popular tools which
are used in this phase, such as Chef, Puppet, Ansible, and SaltStack.
7) Continuous Operations
All DevOps operations are based on the continuity with complete automation of
the release process and allow the organization to accelerate the overall time to
market continuingly
Continuous Delivery
Continuous Delivery (CD) is a DevOps practice that refers to the building, testing,
and delivering improvements to the software code. The phase is referred to as
the extension of the Continuous Integration phase to make sure that new changes
can be released to the customers quickly in a substantial manner.
This can be simplified as, though you have automated testing, the release process
is also automated, and any deployment can occur at any time with just one click
of a button.
Continuous Delivery gives you the power to decide whether to make the releases
daily, weekly, or whenever the business requires it. The maximum benefits of
Continuous Delivery can only be yielded if they release small batches, which are
easy to troubleshoot if any glitch occurs.
1.5 Release Management in DevOps
Definition and Role
• Release management involves planning, scheduling, and controlling software
builds, updates, and deployments.
• It involves coordinating teams, automating processes, and aligning all aspects of a
release with the organization's goals.
Automation and Continuous Delivery
• Release management heavily relies on automation to streamline the release
[Link] delivery practices enable frequent, reliable releases with
minimal manual intervention.
Release Pipeline
• The release pipeline includes stages like build, testing, staging, and deployment.
• It is often integrated with CI/CD tools like Jenkins, GitLab CI/CD, or CircleCI.
Version Control and Configuration Management
• Version control systems and configuration management tools help maintain a
consistent state across different environments.
Environment Management
• Each environment needs to be correctly configured and aligned with the pipeline
for smooth transitions.
Risk Management and Quality Assurance
• Effective release management involves identifying and mitigating risks associated
with deploying new software.
Communication and Coordination
• Release management requires strong communication and coordination among
different teams. A clear release plan with defined timelines and responsibilities
ensures smooth execution.
Continuous Improvement
• Release management is not static, continually refining processes based on feedback
and evolving project requirements.
1.6 Scrum
Definition
A lightweight Agile framework for managing and completing complex projects.
Scrum is designed to help teams work together more effectively by breaking down work into
manageable chunks, delivering value incrementally, and continuously improving through iterative cycles.
Roles
Scrum Master: Facilitates the process, ensures the team follows Scrum practices, and removes obstacles.
Product Owner: Represents stakeholders, prioritizes the product backlog, and ensures the team delivers value.
Team: A cross-functional group responsible for delivering increments of the product.
Artifacts
Product Backlog: A prioritized list of features, enhancements, and bug fixes required for the product.
Sprint Backlog: A list of tasks and items the team commits to completing during a sprint.
Increment: The sum of all completed product backlog items at the end of a sprint, representing a
potentially shippable product version.
Events
- Sprint: A time-boxed iteration (usually 2-4 weeks) during which the team works on completing the tasks in the
sprint backlog.
- Sprint Planning: A meeting where the team plans the work for the upcoming sprint by selecting items from the
product backlog.
- Daily Scrum: A short, daily meeting where the team members discuss their progress, plans for the day, and any
obstacles they face.
- Sprint Review: A meeting at the end of the sprint where the team demonstrates the completed increment to
stakeholders for feedback.
- Sprint Retrospective: A meeting where the team reflects on the sprint, discussing what went well, what didn’t,
and how to improve in the next sprint.
Sprint Goal
The Sprint Goal provides the team with a focused objective and helps align their efforts toward a
common outcome.
Backlog Refinement
Backlog refinement involves breaking down high-priority backlog items into smaller, more manageable
pieces and ensuring the backlog is up-to-date and reflects the latest priorities.
Incremental Delivery
Delivering small, usable pieces of the product frequently. Each sprint aims to deliver a potentially
shippable increment of the product, allowing for continuous feedback and improvement
Continuous Improvement
Through retrospectives and ongoing feedback, Scrum encourages teams to continually refine their
processes, improve collaboration, and increase productivity over time
1.7 Kanban
• Kanban is a visual project management methodology that helps teams manage
and improve the flow of their work.
• Originating from the Toyota Production System, Kanban emphasizes a
continuous, incremental approach to process improvement.
• By making work visible, limiting work-in-progress, and focusing on
bottlenecks, Kanban enables teams to enhance their efficiency, productivity,
and responsiveness to changing business needs.
Kanban Principles
Visualize the Workflow
Kanban starts with making the work visible by creating a Kanban board that displays the
different stages of the workflow, from "To Do" to "Done". This allows teams to gain a clear
understanding of the current state of their work and identify any bottlenecks or blockages.
Limit Work-in-Progress
Kanban emphasizes the importance of limiting the amount of work that is in progress at any
given time. This helps prevent overloading the team, reduces context switching, and ensures that
work is completed efficiently and on time.
Manage Flow
Kanban focuses on optimizing the flow of work through the system, rather than maximizing the
utilization of individual resources. By understanding and improving the flow of work, teams can
identify and address issues that are affecting their productivity and efficiency
Kanban Workflow
Backlog
The Backlog represents the list of tasks or user stories that need to be completed. This is where
new work is added to the system.
To Do
The To Do column represents tasks that are ready to be worked on, but have not yet been started.
In Progress
The In Progress column represents tasks that are currently being worked on by team members
Done
The Done column represents tasks that have been completed and are ready for delivery or
deployment.
Kanban Boards
Physical Boards.
Kanban boards can be physical, using sticky notes or cards on a wall or whiteboard,
which allows for easy visualization and collaboration.
Digital Boards
Many teams use digital Kanban boards, which are often integrated with project
management software or collaboration platforms. These provide additional features like real-
time updates, reporting, and remote access.
Customizable
Kanban boards can be customized to fit the unique needs and workflows of each team, with
columns and swimlanes that represent the specific stages of their process.
Visibility
The visual nature of Kanban boards helps to increase transparency and accountability, allowing
teams to quickly identify and address issues or bottlenecks
Kanban Cards
Task Details
Kanban cards represent individual tasks or user stories, and typically include
information like the task name, description, due date, and assignee.
Work in Progress
As tasks move through the Kanban workflow, the cards are physically or digitally
moved across the board, providing a clear visualization of the current state of the
work.
Prioritization
Kanban cards can be prioritized based on factors like business value, due date, or
dependencies, helping teams focus on the most important work.
Metadata
Additional metadata, such as labels, tags, or custom fields, can be added to Kanban
cards to provide more context and facilitate better decision-making.
Kanban Metrics
Lead Time
The time it takes for a task to go from "To Do" to "Done".
Cycle Time
The time it takes for a task to go from "In Progress" to "Done".
Work in Progress (WIP)
The number of tasks currently in the "In Progress" column.
Throughput
The number of tasks completed per unit of time (e.g., per day or week).
Benefits of Kanban
Increased Visibility
Improved Efficiency
Adaptability
1.8 Identifying and Addressing Bottlenecks in DevOps
Identifying Bottlenecks
• Implement robust monitoring and metrics to pinpoint stages of pipeline delays or inefficiencies.
• Analyze Work in Progress (WIP) limits to identify overloaded stages and adjust WIP limits.
• Gather regular feedback from development and operations teams to identify common delays or issues.
• Automated testing and deployment processes can identify bottlenecks if tests or deployments
consistently fail or take longer than expected.
• Visualize the pipeline using tools like Kanban boards or value stream mapping to identify bottlenecks.
Addressing Bottlenecks
• Optimize workflows by simplifying or automating complex processes.
• Adjust WIP limits to control the flow of work through the pipeline.
• Improve communication between development, operations, and testing teams to prevent
misunderstandings and delays.
• Scale resources to alleviate bottlenecks due to insufficient computing power or limited personnel.
1.9 Delivery Pipeline
• A delivery pipeline is an automated process guiding code through stages from development to
production.
• Stages include source control, build, automated testing, and deployment.
• Continuous Integration (CI) and Continuous Delivery (CD) are key practices within the pipeline.
• Tools like Jenkins, GitLab CI/CD, and Ansible, Docker,Kubernets automate these processes, making them
more efficient and less prone to human error.
• Feedback loops provide developers with immediate insights into the success or failure of each stage,
facilitating quick troubleshooting and continuous improvement.
• The "Pipeline as Code" configuration allows it to be version-controlled and repeatable across
environments.
• Benefits of the delivery pipeline include consistency in the release process, faster delivery of features
and fixes, and improved code quality.
• Security and scalability are important considerations in managing complex pipelines.
• A well-structured delivery pipeline fosters a culture of continuous improvement and rapid iteration