DevOps-1
DevOps-1
DevOps-1
The DevOps is the combination of two words, one is Development and other is Operations.
DevOps is a transformative culture and practice that unites software development (Dev) and
IT operations (Ops) teams.
o In 2009, the first conference named DevOpsdays was held in Ghent Belgium. Belgian
consultant and Patrick Debois founded the conference.
o In 2012, the state of DevOps report was launched and conceived by Alanna Brown at
Puppet.
o In 2014, the annual State of DevOps report was published by Nicole Forsgren, Jez
Humble, Gene Kim, and others. They found DevOps adoption was accelerating in
2014 also.
o In 2015, Nicole Forsgren, Gene Kim, and Jez Humble founded DORA (DevOps
Research and Assignment).
o In 2017, Nicole Forsgren, Gene Kim, and Jez Humble published "Accelerate: Building
and Scaling High Performing Technology Organizations".
DevOps Architecture Features
Here are some key features of DevOps architecture, such as:
1) Automation
Automation can reduce time consumption, especially during the testing and deployment
phase. The productivity increases, and releases are made quicker by automation. This will
lead in catching bugs quickly so that it can be fixed easily. For contiguous delivery, each code
is defined through automated tests, cloud-based services, and builds. This promotes
production using automated deploys.
2) Collaboration
The Development and Operations team collaborates as a DevOps team, which improves the
cultural model as the teams become more productive with their productivity, which
strengthens accountability and ownership. The teams share their responsibilities and work
closely in sync, which in turn makes the deployment to production faster.
3) Integration
Applications need to be integrated with other components in the environment. The
integration phase is where the existing code is combined with new functionality and then
tested. Continuous integration and testing enable continuous development.
4) Configuration management
It ensures the application to interact with only those resources that are concerned with the
environment in which it runs. The configuration files are not created where the external
configuration to the application is separated from the source code. The configuration file
can be written during deployment, or they can be loaded at the run time, depending on the
environment in which it is running.
Development Process :
DevOps is a continuous cycle, often depicted as an infinity symbol, where the 'final' stage
connects to the 'first', to emphasize the continuing nature of the process.
Plan
Code & Assemble
Build
Test
Release
Deploy
Operate
Monitor
dev0ps approach starts with the agile mantra “People over Process over Tools”. People –
Communication & Collaboration Process – Source Control Check-ins, Code Review, Code
Quality, CI, CD, Change Control, RCAs Tools – For Continuous Delivery and Continuous
Monitoring
DevOps Principles
The main principles of DevOps are Continuous delivery, automation, and fast reaction to
the feedback.
1. End to End Responsibility: DevOps team need to provide performance support until
they become the end of life. It enhances the responsibility and the quality of the
products engineered.
2. Continuous Improvement: DevOps culture focuses on continuous improvement to
minimize waste. It continuously speeds up the growth of products or services
offered.
3. Automate Everything: Automation is an essential principle of the DevOps process.
This is for software development and also for the entire infrastructure landscape.
4. Custom Centric Action: DevOps team must take customer-centric for that they
should continuously invest in products and services.
5. Monitor and test everything: The DevOps team needs to have robust monitoring
and testing procedures.
6. Work as one team: In the DevOps culture role of the designers, developers, and
testers are already defined. All they needed to do is work as one team with complete
collaboration.
Benefits of DevOps
1. Faster Delivery: DevOps enables organizations to release new products and updates
faster and more frequently, which can lead to a competitive advantage.
2. Improved Collaboration: DevOps promotes collaboration between development and
operations teams, resulting in better communication, increased efficiency, and reduced
friction.
3. Improved Quality: DevOps emphasizes automated testing and continuous integration,
which helps to catch bugs early in the development process and improve the overall
quality of software.
4. Increased Automation: DevOps enables organizations to automate many manual
processes, freeing up time for more strategic work and reducing the risk of human error.
5. Better Scalability: DevOps enables organizations to quickly and efficiently scale their
infrastructure to meet changing demands, improving the ability to respond to business
needs.
6. Increased Customer Satisfaction: DevOps helps organizations to deliver new features
and updates more quickly, which can result in increased customer satisfaction and
loyalty.
7. Improved Security: DevOps promotes security best practices, such as continuous testing
and monitoring, which can help to reduce the risk of security breaches and improve the
overall security of an organization’s systems.
8. Better Resource Utilization: DevOps enables organizations to optimize their use of
resources, including hardware, software, and personnel, which can result in cost savings
and improved efficiency.
ITOps:
IT operations is important because it manages the most critical digital assets and processes
within an organization. It's a key component of any business, and helps to ensure that IT
systems are secure, reliable, and compliant with industry regulations.
Managing hardware and software: Ensuring that hardware, software, and network
resources are functioning optimally
Administering network structure: Managing the devices that can connect to the
network
Defending assets: Mitigating threats posed by malware and hackers
Implementing new technologies: Streamlining processes and reducing manual labour
Planning for disaster recovery: Protecting the business from experiencing significant
downtime and lost revenue
DevOps has become one of the most valuable business disciplines for enterprises or
organizations. With the help of DevOps, quality, and speed of the application delivery has
improved to a great extent.
DevOps For Business Agility
Software development providers struggle to deliver at the rate business leaders want. As
the speed of application development is increasing, businesses must deliver software ultra-
fast with high quality. To achieve that, businesses need an express way with highest degree
of automation and standardization to repeat the entire solutions life cycle over and over
again at supersonic speed; DevOps is that expressway.
DevOps is a culture that promotes better working relationship within the company and
improves IT service delivery agility. DevOps is an approach based on agile and lean principles
in which business owners, development, operations and quality engineering team
collaborate to deliver software in a continuous stable manner.
Continuous Testing
Continuous testing is a key principle in DevOps that's important because it helps deliver
high-quality software faster. It involves running automated tests throughout the software
development lifecycle (SDLC) to find and fix issues early:
Faster feedback: Automated test cases provide instant feedback at each stage of
development.
Improved quality: Continuous testing ensures quality is prioritized at every stage.
Reduced risk: Software is checked many times throughout its life cycle, which reduces
the risk of business disruption.
Improved user experience: Continuous testing can simulate use cases and
troubleshooting scenarios to observe how users respond.
Faster time to market: Continuous testing can help you get a viable product to market
faster.
Seamless collaboration: Continuous testing can help developers, QA, and operations
teams collaborate more seamlessly.
Continuous testing is integrated into the CI/CD pipeline and can include functional, code
quality, unit, regression, integration, and load tests.
What is CI / CD in DevOps :
CI/CD, or continuous integration and continuous delivery, is a set of practices that are an
essential part of DevOps methodology. CI/CD aims to streamline and speed up the software
development lifecycle.
SDLC Cycle represents the process of developing software used by the software industry to:
- Design
- Develop
- Test
- Defining Requirements
- Testing
- Deployment
- Maintenance
The senior members of the team perform it with inputs from all the stakeholders and
domain experts or SMEs (Subject Matter Expert) in the industry.
Planning for the quality assurance requirements and identifications of the risks associated
with the projects is also done at this stage.
Business analyst and Project organizer set up a meeting with the client to gather all the data
like what the customer wants to build, who will be the end user, what is the objective of the
product. Before creating a product, a core understanding or knowledge of the product is
very necessary.
Defining Requirements :
Once the requirement analysis is done, the next stage is to certainly represent and
document the software requirements and get them accepted from the project stakeholders.
Deployment :
Once the software is certified, and no bugs or errors are stated, then it is deployed. Then
based on the assessment, the software may be released.
Maintenance :
Once when the client starts using the developed systems, then the real issues come up and
requirements to be solved from time to time.
SDLC Models
Software Development life cycle (SDLC) is a spiritual model used in project management
that defines the stages include in an information system development project, from an
initial feasibility study to the maintenance of the completed application.
There are different software development life cycle models specify and design, which are
followed during the software development phase. These models are also called "Software
Development Process Models." Each process model follows a series of phase unique to its
type to ensure success in the step of software development.
- Waterfall Model
- RAD Model
- Prototype Model
- Spiral Model
- V Model
- Agile Model
Waterfall Model
The Waterfall Model is a classical software development methodology. It was first
introduced by Winston W. Royce in 1970. It is a linear and sequential approach to software
development that consists of several phases. It must be completed in a specific order. This
classical waterfall model is simple and idealistic. It was once very popular. Today, it is not
that popularly used. However, it is important because most other types of software
development life cycle models are a derivative of this. In this article we will see waterfall
model in detail.
The waterfall model is useful in situations where the project requirements are well-defined
and the project goals are clear. It is often used for large-scale projects with long timelines,
where there is little room for error and the project stakeholders need to have a high level of
confidence in the outcome.
Features of Waterfall Model
Following are the features of the waterfall model:
1. Sequential Approach: The waterfall model involves a sequential approach to software
development, where each phase of the project is completed before moving on to the
next one.
2. Document-Driven: The waterfall model depended on documentation to ensure that the
project is well-defined and the project team is working towards a clear set of goals.
3. Quality Control: The waterfall model places a high emphasis on quality control and
testing at each phase of the project, to ensure that the final product meets the
requirements and expectations of the stakeholders.
4. Rigorous Planning: The waterfall model involves a careful planning process, where the
project scope, timelines, and deliverables are carefully defined and monitored
throughout the project lifecycle.
1. Requirements: The first phase involves gathering requirements from stakeholders and
analyzing them to understand the scope and objectives of the project.
2. Design: Once the requirements are understood, the design phase begins. This involves
creating a detailed design document that outlines the software architecture, user
interface, and system components.
4. Testing: In the testing phase, the software is tested as a whole to ensure that it meets
the requirements and is free from defects.
Alpha testing: Alpha testing is the system testing performed by the development
team.
Beta testing: Beta testing is the system testing performed by a friendly set of
customers.
Acceptance testing: After the software has been delivered, the customer performs
acceptance testing to determine whether to accept the delivered software or reject
it.
5. Deployment: Once the software has been tested and approved, it is deployed to the
production environment.
6. Maintenance: The final phase of the Waterfall Model is maintenance, which involves
fixing any issues that arise after the software has been deployed and ensuring that it
continues to meet the requirements over time.
Advantages :
- Simple
- Provides a structured way of doing things.
- Works well with the small projects where requirements are well understood before
hand.
- Time spent in the software development cycle can reduce cost at later stages.
Disadvantages :
- Not change friendly
- Poor resource allocation
- Communication gap can result in disaster.
- Need crystal clear requirements.
- No working model of the software will be available until all phases are finished.
- It might be difficult to foresee all the risks which will come later stages of
development.
Prototype Model
The Prototyping Model is one of the most popularly used Software Development Life Cycle
Models (SDLC models). This model is used when the customers do not know the exact
project requirements beforehand. In this model, a prototype of the end product is first
developed, tested, and refined as per customer feedback repeatedly till a final acceptable
prototype is achieved which forms the basis for developing the final product.
Steps of Prototyping Model
1. Requirement Gathering and Analysis: This is the initial step in designing a prototype
model. In this phase, users are asked about what they expect or what they want from the
system.
2. Quick Design: This is the second step in the Prototyping Model. This model covers the
basic design of the requirement through which a quick overview can be easily described.
3. Build a Prototype: This step helps in building an actual prototype from the knowledge
gained from prototype design.
4. Initial User Evaluation: This step describes the preliminary testing where the
investigation of the performance model occurs, as the customer will tell the strengths
and weaknesses of the design, which was sent to the developer.
5. Refining Prototype: If any feedback is given by the user, then improving the client’s
response to feedback and suggestions, the final system is approved.
6. Implement Product and Maintain: This is the final step in the phase of the Prototyping
Model where the final system is tested and distributed to production, here the program
is run regularly to prevent failures.
The customers get to see the partial product early in the life cycle. This ensures a greater
level of customer satisfaction and comfort.
The developed prototype can be reused by the developer for more complicated projects
in the future.
Flexibility in design.
Early feedback from customers and stakeholders can help guide the development
process and ensure that the final product meets their needs and expectations.
Prototyping can be used to test and validate design decisions, allowing for adjustments
to be made before significant resources are invested in development.
Prototyping can help reduce the risk of project failure by identifying potential issues and
addressing them early in the process.
Prototyping can facilitate communication and collaboration among team members and
stakeholders, improving overall project efficiency and effectiveness.
Prototyping can help bridge the gap between technical and non-technical stakeholders
by providing a tangible representation of the product.
The Prototyping Model should be used when the requirements of the product are not
clearly understood or are unstable.
The prototyping model can also be used if requirements are changing quickly.
The prototyping Model is also a very good choice to demonstrate the technical feasibility
of the product.
RAD Model
The RAD model or Rapid Application Development model is a type of software development
methodology that emphasizes quick and iterative release cycles, primarily focusing on
delivering working software in shorter timelines. Unlike traditional models such as the
Waterfall model, RAD is designed to be more flexible and responsive to user feedback and
changing requirements throughout the development process.
1. Speedy Development
Accelerating the software development process is RAD’s main goal. RAD prioritizes rapid
prototyping and iterations to produce a working system as soon as possible. This is
especially helpful for projects when deadlines must be met.
2. Adaptability and Flexibility
RAD places a strong emphasis on adapting quickly to changing needs. Due to the model’s
flexibility, stakeholders can modify and improve the system in response to changing
requirements and user input.
3. Stakeholder Participation
Throughout the development cycle, RAD promotes end users and stakeholders’ active
participation. Collaboration and frequent feedback make it possible to make sure that the
changing system satisfies both user and corporate needs.
4. Improved Interaction
Development teams and stakeholders may collaborate and communicate more effectively
thanks to RAD. Frequent communication and feedback loops guarantee that all project
participants are in agreement, which lowers the possibility of misunderstandings.
6. Customer Satisfaction
Delivering a system that closely satisfies user expectations and needs is the goal of RAD.
Through rapid delivery of functioning prototypes and user involvement throughout the
development process, Rapid Application Development (RAD) enhances the probability of
customer satisfaction with the final product.
The use of reusable components helps to reduce the cycle time of the project.
Feedback from the customer is available at the initial stages.
Reduced costs as fewer developers are required.
The use of powerful development tools results in better quality products in
comparatively shorter periods.
The progress and development of the project can be measured through the various
stages.
It is easier to accommodate changing requirements due to the short iteration time
spans.
Productivity may be quickly boosted with a lower number of employees.
The use of powerful and efficient tools requires highly skilled professionals.
The absence of reusable components can lead to the failure of the project.
The team leader must work closely with the developers and customers to close the
project on time.
The systems which cannot be modularized suitably cannot use this model.
Customer involvement is required throughout the life cycle.
Not every application can be used with RAD.
Agile Model
What is Agile : It is flow of action / Process / Pattern
Why Agile is popular?
There are two reasons why Agile is so popular and famous.
- Continuous Feedback
- Constant Customer / Client Interaction
Important Terms in Agile Model :
- SCRUM
- Kanban
Sprint / Iteration :
The main motto of the Agile Model is to deliver the product successfully.
What is Sprint : Time period. The sprint period usually 1 to 4 weeks time. In general Sprint
time period is 2 weeks.
It includes :
- What to take
- What to do
- What to deliver
Before going further we need to focus on :
- Product backlog
- Sprint backlog
What is product? : It is an end result what customer / client expects.
What is Product Backlog?
A product backlog is a prioritized list of work for the development team that is derived from
the product roadmap and its requirements. The most important items are shown at the top
of the product backlog so the team knows what to deliver first.
In simple words :
- All the actions are related to the entire process / development.
Kanban Board
Kanban board is a tool used to visualize the work and limit work-in-progress.
As in scrum, we are taking some activities from a product backlog and adding in a sprint
backlog. However, in Kanban, we do not have sprint, so sprint backlog activity will not be
performed. This is the main difference between scrum and Kanban that scrum contains
sprint backlog while kanban does not contain the sprint backlog.
Kanban board consists of three states:
- To Do
- Doing
- Done
When the project is started, then we put all the activities from the product backlog to the
'To Do' state. When the team member starts working on an activity, then that activity is put
in a 'Doing' state, and when the activity is placed, then it is placed in a 'Done' state.
One of the most important features of the Kanban board is a Limit option. In the above
figure, we have eight tasks in a product backlog and limit set is 4. At a time, it will take only
four tasks in a 'To Do' state, and if any of the tasks come in a 'Doing' state, then one more
task from the product backlog will be placed in a 'To Do' state. In this way, we can set
the limit depending on the availability of the resources.
Steps :
- Visualize the workflow
- Limit work in progress
- Manage Flow
- Make Process Policies Explicit
- Implement Feedback Loops
- Pull System
- Continuous Improvement
Visualize the Workflow :
Here, we create visual representation of the work process using Kanban board. This board
consists columns that represents different stages of the workflow
For example :
- What to do
- In progress
- Done
Limit Work in Progress (WIP) :
WIP limit helps to prevent overloading the team and ensure the work control flow of work.
For example :
If a column has a WIP limit of 3 the team can work only on 3 tasks.
Manage Flow :
Focus on achieving on study and continuous flow of work through the system. Analyse the
work flow regularly identifies bottlenecks and address them to optimize process.
Bottleneck : A bottleneck is a stage of your Kanban board where tasks pile up and create a
backlog, causing delays and waste.
To handle blockers and bottlenecks in your Kanban process and optimize your Kanban board
and workflow.
Identify the root cause
The first step to handle blockers and bottlenecks is to identify the root cause of the
problem. A blocker is anything that prevents you from completing a task or moving it to the
next stage of your Kanban board. A bottleneck is a stage of your Kanban board where tasks
pile up and create a backlog, causing delays and waste.
Communicate and collaborate
The second step to handle blockers and bottlenecks is to communicate and collaborate with
your team and stakeholders. Communication is key to ensure that everyone is aware of the
status of the tasks, the blockers and bottlenecks that affect them, and the actions that need
to be taken to resolve them.
The third step to handle blockers and bottlenecks is to implement solutions and monitor
results. Once you have identified the root cause of the problem and communicated and
collaborated with your team and stakeholders, you need to take action to remove the
blocker or reduce the bottleneck.
Prevent recurrence and improve continuously
The fourth step to handle blockers and bottlenecks is to prevent recurrence and improve
continuously. Blockers and bottlenecks are not one-time events, but rather symptoms of
deeper issues that need to be addressed.
Review your Kanban board and workflow
The fifth step to handle blockers and bottlenecks is to review your Kanban board and
workflow. Your Kanban board and workflow are the visual representations of your Kanban
process, and they should reflect your current reality, goals, and expectations. Therefore, you
need to review them regularly and make sure they are aligned with your team's needs,
customer's demands, and organizational objectives.
Make Process Policies Explicit :
This step involves the following three activities-
2. Establish standards:
Revisit limits and policies.
Train the team.
Implement a new process.
In Kanban, reviews are crucial for establishing a feedback loop, aimed at reflecting on and
enhancing service delivery through data-driven insights and observations.
Pull System
The use of pull signals to indicate that fresh tasks are ready to be handled is an important
part of a pull system. When the quantity of cards in a column falls below the specified limit
in a Kanban pull system, a pull signal is generated. This tells the previous column that a new
job is ready to move forward. No further tasks may be pulled once the work in progress limit
has been reached unless an outstanding one has been completed first.
Continuous Improvement
Set up the system to continuously monitor and improve processes.
Make the process, process-driven rather people-driven.
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.
IT Services by ITIL :
Selecting
Planning
Delivering
Maintaining
Benefits of ITIL :
Lower Costs
High Quality of IT Services
Increased Business Productivity
Improved Return on Investment
Greater Customer Satisfaction
Improved Resource Utilization
ITIL Service Life Cycle :
Service Strategy
Service Design
Service Transition
Service Operation
Continual Service Improvement
Release Management
Release Management in DevOps is about planning, scheduling and controlling the software
development and delivery process.
IT operations and Developers collaborate from the beginning of the process to the end in
DevOps from shorter and fewer feedback loops faster releases.