DevOps - Unit-1 - Merged - All - Sasi - CLG
DevOps - Unit-1 - Merged - All - Sasi - CLG
• Developers write code to create new features, programs, websites, or databases. They focus
on producing new systems and applications as quickly as possible.
Ops
• Operators maintain infrastructure and ensure software runs smoothly. They deploy new
releases into production and monitor live environments for issues. They focus on ensuring
users have access to a fast, stable, and bug-free system.
How DevOps Works?
● Under a DevOps model, development and operations teams are no longer “siloed.”
Sometimes, these two teams are merged into a single team where the engineers
work across the entire application lifecycle, from development and test to
deployment to operations, and develop a range of skills not limited to a single
function.
● In some DevOps models, quality assurance and security teams may also become
more tightly integrated with development and operations and throughout the
application lifecycle. When security is the focus of everyone on a DevOps team,
this is sometimes referred to as DevSecOps.
How DevOps Works?
● These teams use practices to automate processes that historically have been
manual and slow. They use a technology stack and tooling which help them
operate and evolve applications quickly and reliably.
SDLC (Software Development Life Cycle)
• Planning
• Analysis
• Design
• Implementation (Coding)
• Testing & Deployment
• Maintenance
Planning
• The first stage of SDLC is all about “What do we want?” Project planning is a
vital role in the software delivery lifecycle since this is the part where the team
estimates the cost and defines the requirements of the new software.
• Planning, involves defining the software's purpose and scope. The team
collaborates to understand the end-users' needs and the goals the software
should meet. Essentially, we ask, "What problem will this software solve?" and
"What value will it offer to the user?"
Planning
• A feasibility study also takes place during the Planning phase. Developers and
product teams evaluate technical and financial challenges that might affect the
software's development or success.
• The second step of SDLC is gathering maximum information from the client
requirements for the product. Discuss each detail and specification of the
product with the customer.
• The development team will then analyze the requirements keeping the design
and code of the software in mind. Further, investigating the validity and
possibility of incorporating these requirements into the software system.
• The main goal of this stage is that everyone understands even the minute
detail of the requirement. Hardware, operating systems, programming,
and security are to name the few requirements.
Analysis
• After collecting the data, the team analyzes it, distinguishing the essential
features from the desirable ones. This analysis helps the team understand the
software's functionality, performance, security, and interface needs.
Software prototypes are built prior to the actual software to get valuable feedback
from the customer. Feedbacks are implemented and the prototype is again reviewed
by the customer for any change. This process goes on until the model is accepted by
the customer.
Advantages:
● Prototype model reduces the cost and time of development as the defects are
found much earlier.
● Missing features or functionality or a change in requirement can be identified in the
evaluation phase and can be implemented in the refined prototype.
● Involvement of a customer from the initial stage reduces any confusion in the
requirement or understanding of any functionality.
Disadvantages:
● Since the customer is involved in every phase, the customer can change the
requirement of the end product which increases the complexity of the scope and
may increase the delivery time of the product.
Spiral model
Spiral model phases are followed in the iterations. The loops in the model represent the phase
of the SDLC process i.e. the innermost loop is of requirement gathering & analysis which
follows the Planning, Risk analysis, development, and evaluation. Next loop is Designing
followed by Implementation & then testing.
Spiral Model has four phases:
•Planning
● Risk Analysis
● Engineering
● Evaluation
Spiral model
● Planning
The first phase of the Spiral Model is the planning phase, where the scope of the project is
determined and a plan is created for the next iteration of the spiral.
● Risk Analysis
In the risk analysis phase, the risks associated with the project are identified and evaluated.
Risks can be operational (e.g., team changes), technical (e.g., untested technologies), or
external (e.g., regulatory changes).
● Engineering
In the engineering phase, the software is developed based on the requirements gathered in
the previous iteration.
● Evaluation
In the evaluation phase, the software is evaluated to determine if it meets the customer’s
requirements and if it is of high quality.
Contd..
Advantages:
Disadvantages:
Once the iteration is completed, a product is verified and is delivered to the customer for their
evaluation and feedback. Customer’s feedback is implemented in the next iteration along with
the newly added feature.
Phases of Iterative & Incremental Development Model:
• Inception phase
● Elaboration Phase
● Construction Phase
● Transition Phase
Iterative & Incremental model
Inception Phase
• Define the project scope and its feasibility.
• Establish a high-level understanding of the system to be built.
Elaboration Phase
• Refine the project vision and requirements.
• Establish a robust architecture for the system.
Construction Phase
• Build the software incrementally based on the established architecture.
• Develop a fully functional system.
Transition Phase
• Deploy the system into the production environment.
• Ensure the system meets the users' needs.
Contd..
Advantages:
● Any change in the requirement can be easily done and would not cost as there is a
scope of incorporating the new requirement in the next iteration.
● Risk is analyzed & identified in the iterations.
● Defects are detected at an early stage.
● As the product is divided into smaller chunks it is easy to manage the product.
Disadvantages:
● Complete requirements and understanding of a product are required to break down and
build incrementally.
Big Bang model
Big Bang Model does not have any defined process. Money and efforts are put together as the
input and output come as a developed product which might be or might not be the same as
what the customer needs.
Big Bang Model does not require much planning and scheduling. The developer does the
requirement analysis & coding and develops the product as per his understanding. This model
is used for small projects only. There is no testing team and no formal testing is done, and this
could be a cause for the failure of the project.
Contd..
Advantages:
Disadvantages:
● Big Bang models cannot be used for large, ongoing & complex projects.
● High risk and uncertainty.
Agile 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 that 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. 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.
Agile model
• The agile software development life cycle is a software development project methodology
that prioritizes adaptability, flexibility, rapid development, and transformation.
• Agile Model is a combination of the Iterative and incremental model. This model focuses
more on flexibility while developing a product rather than on the requirement.
• In Agile, a product is broken into small incremental builds. It is not developed as a complete
product in one go. Each build increments in terms of features. The next build is built on the
previous functionality.
• In agile iterations are termed as sprints. Each sprint lasts for 2-4 weeks. At the end of each
sprint, the product owner verifies the product and after his approval, it is delivered to the
customer.
Phases of Agile model
• Requirements gathering
• Design the requirements
• Construction/ iteration
• Testing/ Quality assurance
• Deployment
• Feedback
Planning & Requirements gathering
• The planning phase in Agile is about defining the overall vision and high-
level objectives of the project. The Product Owner works with stakeholders
to create a Product Backlog, which is a prioritized list of features or tasks to
be completed. This backlog is dynamic and evolves over time as new
requirements emerge.
Design
• During this phase, the team focuses on designing the system architecture
and features based on the requirements defined in the backlog. However,
Agile design is adaptive and can change as the project progresses, unlike
traditional SDLCs where the design is typically fixed early on.
Construction/ iteration
• This phase involves the actual coding and implementation of the features
identified in the product backlog. Teams typically work in sprints (usually
1-4 weeks), and each sprint results in a potentially shippable product
increment.
Testing
• Testing in Agile is continuous and happens throughout the development
process, rather than as a separate phase at the end. This ensures that
issues are caught early, and the product evolves in a stable, reliable
manner.
Deployment
• Once the software is developed, tested, and reviewed, it is deployed to
production. In Agile, deployment can happen frequently, even after every
sprint, ensuring that the product is always ready for release.
Maintenance
• After the software is deployed, maintenance is an ongoing activity. Agile
allows teams to adapt and respond to feedback from users and
stakeholders, and they can address issues or add new features in
subsequent iterations.
Contd..
Advantages of Agile Model:
• It allows more flexibility to adapt to the changes.
● The new feature can be added easily.
● Customer satisfaction as the feedback and suggestions are taken at every stage.
Disadvantages:
● Lack of documentation.
● Agile needs experienced and highly skilled resources.
● If a customer is not clear about how exactly they want the product to be, then
the project would fail.
Types of Agile Framework
● If you choose an agile software project model, the second step is to choose
the framework based on your development team, workflow, scale, project
complexity, requirements, targets, and needs.
Scrum
Scrum is used to do tasks in a scenario where teams are involved. The idea of scrum
comes from the game of rugby and it helps in the proper working of smaller teams.
The three aspects of scrum can be described as below:
● Scrum Master helps in building the team, look after sprint meetings and take
care of problems in the path of progress.
● Product Owner helps in building the product backlog. The owner also gives the
most priority to the backlog and ensures that there is delivery after every
iteration.
● The Scrum Team looks after their work and completes the sprint.
Scrum
Key Roles
• Product Owner: Manages the product backlog and prioritizes features.
• Scrum Master: Facilitates the Scrum process and removes impediments.
• Development Team: Cross-functional team that delivers the product increment.
Key Artifacts
• Product Backlog: List of prioritized work items (user stories, tasks).
• Sprint Backlog: Subset of the product backlog selected for a sprint.
• Increment: The working product delivered at the end of a sprint.
Scrum
Services:
• Sprint Planning: Plan what work will be completed during the sprint.
• Daily Standup: Short daily meeting to discuss progress, plans, and blockers.
• Sprint Review: Showcase the completed work to stakeholders.
• Sprint Retrospective: Reflect on the sprint to identify improvements.
Lean
Lean Software Development is an Agile framework that applies principles from Lean
manufacturing to the software development process. Its primary focus is on delivering
maximum value to the customer by eliminating waste, optimizing processes, and fostering
continuous improvement.
Principles of Lean Software Development
Eliminate Waste - Identify and remove anything that does not add value to the customer.
Build Quality In - Prevent defects rather than fixing them later.
Create Knowledge - Emphasize learning and adapting through feedback and experimentation.
Defer Commitment - Make decisions as late as possible to allow for maximum flexibility and
adaptability.
Lean
Deliver Fast - Minimize lead time and deliver value to customers as quickly as possible.
Respect People - Empower individuals and teams to contribute their best work.
Optimize the Whole - Focus on the entire system rather than optimizing individual
components.
Extreme Programming
This methodology is helpful when the demand is not stable i.e. the requirement of the
demand is always changing. It can be also used when there is uncertainty regarding the
functionality of the whole system. Thus, with the help of extreme programming, the product is
released in shorter intervals of time thus creating checkpoints and improving productivity.
The aim of extreme programming works with respect to the customer.
The different phases of extreme programming are:
● Planning
● Analysis
● Execution
● Wrapping
● Closure
Kanban method
• The Japanese word Kanban refers to a card that has all the information which is required and done on
the product during its process of completion. This method is widely used in software development.
• Kanban is a visual framework for managing work that focuses on optimizing the flow of tasks through a
system. It does not prescribe time-boxed iterations.
• Visualize Workflow: Use a Kanban board with columns (e.g., To Do, In Progress, Done).
• Limit Work in Progress (WIP): Set limits to prevent bottlenecks and improve flow.
• Manage Flow: Continuously monitor and optimize the flow of tasks.
• Continuous Improvement: Use feedback and metrics to improve the process.
Feature-Driven Development (FDD)
Key Practices:
• Crystal is a family of Agile frameworks (e.g., Crystal Clear, Crystal Orange, Crystal Red)
that adapt based on team size, system criticality, and project priorities.
Key Practices:
• DSDM is an Agile framework focused on delivering projects on time and within budget while emphasizing
Key Practices:
• MoSCoW Prioritization: Categorize requirements into Must Have, Should Have, Could Have, and Won’t
Have.
Along with the software tools and processes, agile suggests that the people working in the processes
are equally if not more important. A project can be the most successful if the people working on it are
the best suited for it.
● A working software
Working software is more important. It is of utmost importance according to the agile manifesto to
provide the customers with working software than to have piles and piles of documentation.
Contd..
● Customer collaboration
Previously there would only be a contract between the customer and the developer. So after the
project would be completed it would be handed over to the customer. Many times a situation would
arise that the product asked for and the product delivered was not the same. Thus agile insists on
continuous delivery so that the developer and the customer are on the same page and can react to
changing market conditions.
● Responding to change
According to the Agile Manifesto, there might be many phases in software development when changes
can be done to the product. These changes should be encouraged irrespective of the phase the project
is in. This helps in achieving better goals and revised results.
Fundamentals of DevOps
What is 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.’
It allows organizations to serve their customers better and compete more strongly in the market.
In simple words, DevOps can be defined as an alignment of development and IT operations with
better communication and collaboration.
What is DevOps?
DevOps is a set of practices, principles, and cultural philosophies that emphasize collaboration
and communication between software development (Dev) and IT operations (Ops) teams.
The main objective of DevOps is to enhance the efficiency and reliability of the software
development and delivery process by promoting automation, continuous integration,
continuous delivery, and other practices that streamline the entire lifecycle.
What are Automation, Scaling, and Infrastructure?
Automation: In the context of DevOps, automation refers to the use of tools and processes to
mechanize manual and repetitive tasks in software development, testing, and deployment.
Automation minimizes human error and accelerates the delivery process.
Scaling: Scaling involves the ability to adapt the infrastructure and software systems to handle
increased workloads or demand. DevOps often employs auto-scaling mechanisms to automatically
adjust resources based on traffic or usage.
Testing and Deployment were isolated activities done after design-build. Hence they consumed
more time than actual build cycles.
Without using DevOps, team members spend a large amount of their time testing, deploying,
and designing instead of building the project.
Coding & operation teams have separate timelines and are not sync, causing further delays.
Why is DevOps Needed?
Faster Delivery: DevOps accelerates the development and deployment of software, allowing
organizations to release updates and new features more quickly, which is crucial in today’s fast-
paced business environment.
Improved Quality: Automation and continuous testing in DevOps reduce the chances of human
error and help maintain a consistent level of quality in software.
Efficiency: DevOps streamlines the software development process, making it more efficient by
automating manual tasks, optimizing resource usage, and reducing downtime.
Why is DevOps Needed?
Collaboration: DevOps fosters collaboration and communication between development and
operations teams, leading to a shared sense of responsibility and faster issue resolution.
Scalability: With the ability to auto-scale infrastructure and applications, DevOps helps
organizations handle varying workloads and effectively manage resources.
Security: DevOps practices, such as DevSecOps, integrate security into the software
development and delivery process, reducing vulnerabilities and enhancing data protection.
Automate everything possible: Automation is an essential component of DevOps. The general approach is to
automate as much of the software development lifecycle (SDLC) as possible. By automating tasks in the
development process, developers have more time to write code and build new features. Plus, it reduces human
error and increases team productivity.
Continuous improvement: Continuous improvement is tied to continuous delivery (CD) and enables DevOps
teams to push updates that improve software systems' efficiency constantly. This principle concerns incremental
improvements and ongoing efforts to improve products, services or processes.
DevOps Principles
Customer-centric decision making: Teams can use DevOps practices—such as real-time live monitoring and
rapid deployment—to streamline and speed up the process of gathering user feedback. With immediate visibility
into how live users interact with a software system, teams can and should use that insight to develop further
improvements.
Create with the end in mind: DevOps teams understand customers' needs and create products or services based
on solving real problems. It may mean that teams need to let go of their assumptions about how consumers will
use the software. Instead, they need to understand the product thoroughly and continuously focus on the idea
that they are building working products sold to actual customers.
DevOps Architecture
DevOps Architecture
Development and operations both play essential roles in order to deliver applications. The
development 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 teams; therefore,
delivery can be faster.
DevOps Architecture
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 teams 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.
DevOps Core Components
Continuous Integration/Continuous Delivery (CI/CD)
• CI: Developers integrate code into a shared repository frequently, with automated
Code: Many good practices such as Git enables the code to be used, which ensures
writing the code for business, helps to track changes, getting notified about the reason
behind the difference in the actual and the expected output, and if necessary reverting to
the original code developed.
DevOps Architecture
Test: The application will be ready for production after testing. In the case of manual
testing, it consumes more time in testing and moving the code to the output. The testing
can be automated, which decreases the time for testing so that the time to deploy the
code to production can be reduced as automating the running of the scripts will remove
many manual steps.
Plan: DevOps use Agile methodology to plan the development. With the operations and
development team in sync, it helps in organizing the work to plan accordingly to increase
productivity.
DevOps Architecture
Monitor: Continuous monitoring is used to identify any risk of failure. Also, it helps in
tracking the system accurately so that the health of the application can be checked. The
monitoring becomes more comfortable with services where the log data may get
monitored through many third-party tools such as Splunk.
Deploy: Many systems can support the scheduler for automated deployment. The cloud
management platform enables users to capture accurate insights and view the
optimization scenario, analytics on trends by the deployment of dashboards.
DevOps Architecture
Benefits of DevOps Architecture
• Faster Delivery: Automates repetitive tasks, reducing deployment time.
• Improved Collaboration: Breaks silos between teams for better coordination.
• Enhanced Reliability: Ensures consistent environments and robust monitoring.
• Scalability: Enables efficient scaling of applications and infrastructure.
• Cost Efficiency: Optimizes resource usage through automation and cloud-native
solutions.
DevOps Lifecycle
DevOps Lifecycle
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. During this phase, project requirements are gathered
and discussed with stakeholders. Moreover, the product backlog is also maintained based on
customer feedback which is broken down into smaller releases and milestones for
continuous software development.
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. There are no DevOps tools that are required for planning, but there are several tools
for maintaining the code.
DevOps Lifecycle
Continuous Integration: This stage is the heart of the entire DevOps lifecycle. 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. Building code not only involves
compilation, but it also includes unit testing, integration testing, code review,
and packaging.
In this phase, updated code or add-on functionalities and features are developed and
integrated into existing code. Furthermore, bugs are detected and identified in the code
during this phase at every step through unit testing, and then the source code is modified
accordingly. This step makes integration a continuous approach where code is tested
at every commit.
DevOps Lifecycle
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.
DevOps Lifecycle
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.
DevOps Lifecycle
Continuous Testing: This phase, where the developed software is continuously tested
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.
DevOps Lifecycle
Selenium does the automation testing, and TestNG generates the reports. This entire testing
phase can be automated 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.
DevOps Lifecycle
Continuous Deployment: Continuous deployment, or CD, is the final piece of a complete
DevOps pipeline and automates the deployment of code releases. That means if code
passes all automated tests throughout the production pipeline, it’s immediately released
to end users. CD critically removes the need for human intervention to orchestrate a
software release, which results in faster release timelines. This also gives developers
more immediate real-world feedback.
DevOps Lifecycle
Continuous Monitoring: Continuous monitoring is a set of automated processes and tooling
used to troubleshoot issues and development teams can use to inform future development
cycles, fix bugs, and patch issues.
A well established continuous monitoring system will typically contain four components:
Logging offers a continuous stream of raw data about business-critical components.
Monitoring provides intelligence about the raw data provided in logs and metrics.
Alerting provides proactive notifications when something has gone wrong and critical debugging information.
Tracing takes logging a step further, providing a deeper level of application performance and behavioral
insights that can greatly impact the stability and scalability of applications in production environments.
DevOps Lifecycle
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.
The continuity is the essential factor in the DevOps as it removes the unnecessary steps which
are required to take a software application from development, using it to find out its issues and
then producing a better version. It kills the efficiency that may be possible with the app and
reduce the number of interested customers.
DevOps Orchestration
DevOps automation is a process by which a single, repeatable task, such as launching an app or
changing a database entry, is made capable of running without human intervention, both on PCs
and in the cloud.
Orchestration refers to a set of automated tasks that are built into a single workflow to
solve a group of functions such as managing containers, launching a new web server,
changing a database entry, and integrating a web application. More simply, orchestration
helps configure, manage, and coordinate the infrastructure requirements an application
needs to run effectively.
DevOps Orchestration
Automation applies to functions that are common to one area, such as launching a web server, or integrating a
web app, or changing a database entry. But when all of these functions must work together, DevOps
orchestration is required.
DevOps orchestration involves automating multiple processes to reduce issues leading to the production date
and shorten time to market. On the other hand, automation is used to perform tasks or a series of actions that
are repetitive.
DevOps orchestration streamlines the entire workflow by centralizing all tools used across teams, along with
their data, to keep track of process and completion status throughout. Besides, automation can be pretty
complicated at scale, although normally it is focused on a specific operation to achieve a goal, such as a server
deployment. When automation has reached its limitations, that’s when orchestration plays to its strengths.
DevOps Orchestration
Reasons to invest in DevOps Orchestration:
Speed up the automation process
Agile capabilities are therefore critical to the success of any DevOps project, as DevOps
also relies on a collaborative and iterative approach to software development.
Agiling capabilities
Agile mindset: It involves a willingness to embrace change, a focus on
delivering value to customers, and a commitment to continuous improvement. The
agile mindset is a culture that values teamwork, collaboration, and open
communication. Organizations need to foster an agile mindset throughout their
teams to effectively adopt DevOps practices.
Agiling capabilities
Agile methodologies: Agile methodologies like Scrum, Kanban, and XP provide a
framework for agile development. These methodologies help teams to prioritize
work, manage work in progress, and continuously improve the development
process. Organizations need to select the appropriate agile methodology that
aligns with their business needs and the nature of their project.
Agiling capabilities
Agile practices: Agile practices like user stories, sprint planning, and
retrospectives help teams to collaborate, communicate, and deliver high-quality
software. User stories help to capture requirements in a customer-centric way,
while sprint planning helps to organize work into manageable chunks.
Retrospectives provide an opportunity to reflect on the development process and
make improvements.
Agiling capabilities
Agile tools: Agile tools like Jira, Trello, and GitLab can help teams to
manage their work and collaborate effectively. These tools provide a
platform for managing work in progress, tracking progress, and
communicating with team members.
Agiling capabilities
Continuous delivery: Continuous delivery is an agile practice that involves
continuously integrating and testing code changes, and deploying those changes to
production quickly and frequently. This requires an agile approach to development,
where teams work in small increments and focus on delivering value to customers.
Agiling capabilities
Continuous improvement: Continuous improvement is a core tenet of both
agile and DevOps. Teams need to continuously reflect on their work and make
improvements to their processes, tools, and practices. This involves an agile
mindset, where teams are willing to experiment, learn from their mistakes, and
make changes to improve the software delivery process.
Tool Stack Implementation
A tool stack is a collection of software tools that are used together to
support a particular process or workflow. In the context of DevOps, a
tool stack is a set of tools that are used to support the software
development and deployment process. Implementing a tool stack is a
critical aspect of DevOps adoption, as it enables teams to automate
tasks, streamline workflows, and improve collaboration.
Tool Stack Implementation
Tool selection: The first step in implementing a DevOps tool stack is to
select the appropriate tools. There are many tools available for
different aspects of the DevOps workflow, such as source code
management, continuous integration and delivery, testing, monitoring,
and collaboration. It's important to select tools that are compatible
with each other and can integrate seamlessly to support the end-to-
end software delivery process.
Tool Stack Implementation
Tool integration: Once the appropriate tools have been selected, they
need to be integrated to create a cohesive tool stack. This involves
configuring the tools to work together and automating the workflow
between them. Integration is critical to achieving the benefits of
DevOps, such as faster delivery, higher quality, and improved
collaboration.
Tool Stack Implementation
Tool adoption: After the tool stack has been implemented, it's
important to encourage adoption by the development and operations
teams. This involves providing training, support, and documentation to
ensure that everyone understands how to use the tools effectively.
Adoption is critical to achieving the benefits of DevOps, as it ensures
that the tool stack is used to its full potential.
Tool Stack Implementation
Tool optimization: Finally, it's important to optimize the tool stack
over time. This involves regularly reviewing the tool stack to identify
areas for improvement and making changes to the tools or processes
as necessary. Optimization is critical to ensuring that the DevOps tool
stack continues to support the evolving needs of the development and
operations teams.
Tool Stack Implementation
By selecting the appropriate tools, integrating them effectively,
encouraging adoption, and optimizing the tool stack over time,
organizations can realize the full potential of DevOps.
People Aspect
DevOps is a software development approach that emphasizes
collaboration, communication, and integration between development
and operations teams. It requires a cultural shift towards a shared
responsibility for software delivery and a focus on continuous
improvement. The people aspect in DevOps refers to the importance
of building a positive work environment that fosters collaboration,
creativity, and innovation among team members.
People Aspect
One of the critical aspects of the people aspect in DevOps is building cross-
functional teams that are empowered to make decisions and take ownership of the
entire software delivery process. This means breaking down silos between
development and operations teams and creating a shared understanding of the
end-to-end software delivery process. The goal is to enable teams to work
together effectively, streamline the delivery process, and deliver high quality
software faster.
People Aspect
Effective communication is another crucial element of the people
aspect in DevOps. It requires teams to communicate effectively,
collaborate, and share information freely. This fosters an environment
of trust and transparency that enables team members to work
together towards a common goal.
People Aspect
Leadership is also an essential element of the people aspect in
DevOps. Leaders must build a culture of psychological safety where
team members feel comfortable taking risks, learning from failures,
and sharing their ideas and opinions. They must also empower teams
to make decisions, take ownership of their work, and continuously
improve their processes.
People Aspect
The people aspect in DevOps also recognizes the importance of
diversity and inclusivity. DevOps teams must be inclusive of individuals
from diverse backgrounds, experiences, and perspectives. This creates
a culture of creativity and innovation that can lead to better outcomes
for both the organization and its customers.
People Aspect
Overall, the people aspect is a critical component of DevOps success.
It requires a focus on building high-performing teams, fostering a
culture of continuous improvement, and valuing diversity and
inclusivity. By prioritizing the people aspect, organizations can improve
collaboration, increase productivity, and deliver high-quality software
that meets the needs of their customers
Processes Aspect
In DevOps, processes refer to the workflows and practices that enable
teams to deliver high-quality software faster. These processes include:
Automated build and test steps triggered by CI ensure that code changes being merged into the
repository are reliable. The code is then delivered quickly and seamlessly as a part of the CD
process. In the software world, the CI/CD pipeline refers to the automation that enables
incremental code changes from developers’ desktops to be delivered quickly and reliably to
production.
Continuous Integration
Continuous integration is a DevOps software development practice where
developers regularly merge their code changes into a central repository, after
which automated builds and tests are run.
The key goals of continuous integration are to find and address bugs quicker,
improve software quality, and reduce the time it takes to validate and release
new software updates.
Why is Continuous Integration Needed?
In the past, developers on a team might work in isolation for an extended
period of time and only merge their changes to the master branch once their
work was completed. This made merging code changes difficult and time-
consuming, and also resulted in bugs accumulating for a long time without
correction. These factors made it harder to deliver updates to customers quickly.
How does Continuous Integration Work?
With continuous integration, developers frequently commit to a shared
repository using a version control system such as Git. Prior to each commit,
developers may choose to run local unit tests on their code as an extra
verification layer before integrating. A continuous integration service
automatically builds and runs unit tests on the new code changes to
immediately surface any errors.
How does Continuous Integration Work?
Continuous Integration Benefits
Improve Developer Productivity: Continuous integration helps your
team be more productive by freeing developers from manual tasks
and encouraging behaviors that help reduce the number of errors
and bugs released to customers.
Continuous Integration Benefits
Find and Address Bugs Quicker: With more frequent testing, your team
can discover and address bugs earlier before they grow into larger problems
later.
Once the code is integrated, build and passes the automated tests, the built is pushed
to the mock server. This enables the developer to check the application on the
production-like environment and confidently upload it on the actual production
environment — ensuring that the software will work well when it reaches to the
customer.
Continuous Delivery
The main goal of continuous delivery is to make the application deployment
seamless, reduce risk and ensure the application will work great in the
production environment.
With CD, the application is always ready to deploy and there is no last-minute
anxiety or urgency. Even the team can be confident about their codebase and
can concentrate on their daily development tasks.
Continuous Delivery
Benefits of Continuous Delivery
Faster Releases: Automating the release process reduces the time and effort required to
deploy changes.
Reduced Risk: Deploying smaller changes more frequently reduces the risk of
introducing major bugs.
Consistent Environments: Using identical environments from development to
production prevents environment-specific bugs.
Improved Collaboration: Developers, testers, and operations teams collaborate more
effectively.
Continuous Deployment
While Continuous Delivery makes the codebase ready for the deployment, Continuous
Deployment releases it directly to the production server.
Continuous deployment is a practice for application deployment wherein any code commit
passing the automated testing is automatically released to the production server and made
available to the users.
This process of deployment is fully automated without any manual intervention — and the
build components that don’t pass the production pipeline are prevented from deploying on the
server.
Continuous Deployment
This kind of automatic deployment works great to ship the new components
and features of the application and bug fixes quickly to the customers. Users’
feedback is quick as customers stay in the loop with every update and even the
team experiences peace of mind as there is no pressure of release date. Thus,
ultimately developers can focus more on developing the application and see
their work go live.
Continuous Deployment
Benefits of Continuous Deployment
Faster Delivery: New features and bug fixes are available to users immediately.
Reduced Risk: Deploying small, frequent changes minimizes the impact of bugs.
Quality metrics
Automation metrics
Time-based metrics
One of the main objectives of DevOps is to save time and ship code as fast as possible. Hence,
evaluating the performance of a CI/CD initiative predominantly revolves around measuring the
time taken for each of the activities involved. Given below is a list of the common time-based
metrics that organizations measure:
• Time to market (TTM)
• Deployment time
Time to Market(TTM)
This defines the duration between the ideation of a feature and the “go-live” of the same. Your CI/CD
efforts should significantly shrink the time taken to launch a feature to your customers. While
traditional software delivery takes 3-6 months for every internal software release, continuous
delivery can foster multiple releases weekly or daily.
It is therefore essential to keep a close watch on the time taken to release a feature to the customer
and if the continuous integration and continuous delivery principles have helped you shrink TTM.
If there’s no improvement, the reason could be the technologies you have employed, the workload
of the developers, the complexity of the feature. You should retrospect to see where the issue is and
fix it to increase the speed of your CI/CD pipeline.
Defect resolution time
Defect resolution time or the lifetime of a defect defines the time taken to
resolve an issue, raised after the code has been delivered or deployed. The time
taken to resolve a defect can significantly impact your customer churn rate. The
longer it takes to resolve an issue, the higher your churn rate will be. So, if the
there must be some process gaps that you need to identify and fix immediately.
Defect resolution time
The churn rate in CI/CD refers to the frequency of changes made to
code, deployments, or tests over a given period. High churn rates
can indicate instability in the development process, frequent rework,
or inefficiencies in the pipeline. Monitoring churn rate helps teams
identify areas for improvement and enhance software quality and
stability.
Defect resolution time
Code Churn Rate: Measures how often code is rewritten or
modified after being committed.
frame. If it does not, you need to understand why and fine-tune your
happen at the click of a button. If your team takes an hour or so for deployment,
the process is at the peak of inefficiency. Tracking this metric helps you increase
shipping your code at your own pace. However, the last thing you would want to do is to
compromise on the quality of your code. It is therefore pivotal to keep a check on how you are
doing on quality. The quality metrics that organizations track include, but are not limited to:
• Number of bugs
number of passed test cases with the total number of executed test cases. This
metric also helps you understand how well your automated tests work and how
often code changes are causing your tests to break. Continuous integration and
a buggy code faster will only deliver more bugs to your customers, causing
number of bugs and scrutinize the root cause in case of a spike. With a buggy
code in the system, none of the DevOps initiatives will yield the results that it
should.
Defect escape rate
The defect escape rate defines the percentage of defects found in pre-production testing versus in
production. Tracking how many defects make it to production is a great way to evaluate the overall
quality of the software releases that you do. If you are finding too many issues in production, then
you know that you’re not doing a good job of automated testing, QA, etc. Therefore, you have to
improve your testing practices and try moving faster again. Your defect escape rate is a great constant
feedback loop to assess how your team performs.
In essence, the defect escape rate serves as a valuable feedback loop, guiding your team in refining
their testing practices and maintaining a balance between speed and quality in software
development.
Automation metrics
Since DevOps relies heavily on automation, it is crucial to understand what impact it has
created, when it comes to your deployment process. Given below are some of the metrics that
will help you quantify your automation efforts while trying to identify if there is a scope for
improvement:
• Deployment frequency
• Failed Deployments
Deployment size per pipeline
This metric measures the size or complexity of deployments pushed
manage and less risky. Larger deployments might signify less frequent
more complex.
Deployment frequency
This metric tracks how often deployments are pushed through the
To calculate the failed deployment rate, divide the number of failed
deployments by the total number of deployments, resulting in a
percentage.
DevOps Maturity Model
DevOps Maturity Model
A DevOps maturity model is a framework that organizations use to assess their level of
maturity in adopting DevOps practices and processes. It typically consists of a set of
criteria or characteristics across different dimensions of DevOps, such as Culture,
Automation, Lean, Measurement, and Sharing (often referred to as the CALMS
framework).
DevOps Maturity Model
DevOps Maturity Model
Culture: Culture is at the heart of DevOps. It involves encouraging collaboration,
communication, and shared responsibility among development, operations, and other
stakeholders. Building a culture of trust, transparency, and continuous improvement is
essential for successful DevOps implementation.
Automation and Tooling: It evaluates the level of automation implemented across the
software delivery pipeline and the effectiveness of tools used for development, testing,
deployment, and monitoring.
Continuous Integration (CI) and Continuous Deployment (CD): This factor focuses
on the frequency and efficiency of integrating code changes into a shared repository (CI)
and automating the deployment process to production environments (CD).
Key factors of DevOps Maturity Model
Monitoring and Feedback Loops: It examines the organization's ability to monitor
application and infrastructure performance, collect user feedback, and use this information to
drive improvements.
Scalability and Infrastructure as Code (IaC): This factor assesses the scalability of the
infrastructure and the extent to which infrastructure provisioning and management are
automated using infrastructure as code principles.
Feedback and Metrics: This factor focuses on the collection and analysis of feedback
and metrics to measure the effectiveness of DevOps practices and identify areas for
improvement.
Key factors of DevOps Maturity Model
Customer-Centricity: It evaluates the organization's focus on delivering value to
customers by prioritizing their needs and preferences in the software development and
delivery process.
There's little to no automation in place, and deployments are infrequent and error-
prone.
The number of completed projects and the release frequency should ideally be high
resulting in ROI
Mean Time To Recovery (MTTR) from an unexpected incident/failure from the time of
occurrence, should be nil or as low as possible
Improved scalability
Operational efficiency
Enhanced quality
Business Benefits of DevOps Maturity Model
Faster adaptability to change:
In today's fast-paced business environment, agility is essential. The DevOps Maturity
Model enables you to optimize your software delivery process, allowing for faster
adaptation to evolving market demands and customer expectations.
By leveraging automation and continuous integration/delivery (CI/CD), you can
efficiently roll out new features, address bugs, and stay ahead of industry trends,
ensuring your business remains competitive.
Business Benefits of DevOps Maturity Model
Ability to Tap Opportunities:
The faster you can transform ideas into reality, the more
opportunities you can capture. The DevOps Maturity Model
enables you to achieve this by reducing development cycles and
speeding up deployments, allowing you to stay ahead of the
competition.
Business Benefits of DevOps Maturity Model
Identifying Areas of Fulfilment:
Assessment Criteria: Define the criteria and indicators for each dimension
of the maturity model. These criteria should be measurable and aligned with
the goals of the assessment. For example, criteria for the culture dimension
might include the level of collaboration between teams and the frequency of
knowledge sharing.
DevOps Maturity Assessment
Assessment Process/Scoring: Assign scores or ratings to each criterion
based on the organization's current state. This could be done using a scale
(e.g., 1-5) or descriptive levels (e.g., initial, repeatable, defined, managed,
optimized).