UNIT-V:
Agile Methodology, ADAPTing to Scrum, Patterns for Adopting Scrum, Iterating towards
Agility.
Fundamentals of DevOps: Architecture, Deployments, Orchestration, Need, Instance of
applications, DevOps delivery pipeline, DevOps eco system. DevOps adoption in projects:
Technology aspects, Agiling capabilities, Tool stack implementation, People aspect, processes.
Agile Methodology
Agile Methodology meaning a practice that promotes continuous iteration of
development and testing throughout the software development lifecycle of the project. In the
Agile model in software testing, both development and testing activities are concurrent, unlike
the Waterfall model.
The agile software development emphasizes on four core values.
1. Individual and team interactions over processes and tools
2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan
5. Agile methodologies propose incremental and iterative approach to software design
6. The Agile process in software engineering is broken into individual models that designers
work on
7. The customer has early and frequent opportunities to look at the product and make
decision and changes to the project
8. Agile model is considered unstructured compared to the waterfall model
9. Small projects can be implemented very quickly. For large projects, it is difficult to
estimate the development time.
10. Error can be fixed in the middle of the project.
11. Development process is iterative, and the project is executed in short (2-4) weeks
iterations. Planning is very less.
12. Documentation attends less priority than software development
Every iteration has its own testing phase. It allows implementing
regression testing every time new functions or logic are released.
Testers and developers work together
At the end of every sprint, user acceptance is performed
Agile Process
below Agile methodology process to deliver successful systems quickly.
Agile Process Model
There are various Agile methods present in agile testing
Scrum
SCRUM is an agile development method which concentrates specifically on how to manage
tasks within a team-based development environment.
Scrum believes in empowering the development team and advocates working in small teams
(say- 7 to 9 members). Agile and Scrum consist of three roles, and their responsibilities
Scrum Master
Scrum Master is responsible for setting up the team, sprint meeting and removes
obstacles to progress
Product owner
The Product Owner creates product backlog, prioritizes the backlog and is responsible for
the delivery of the functionality at each iteration
Scrum Team
Team manages its own work and organizes the work to complete the sprint or cycle
Product Backlog
This is a repository where requirements are tracked with details on the no of
requirements(user stories) to be completed for each release. It should be maintained and
prioritized by Product Owner, and it should be distributed to the scrum team. Team can
also request for a new requirement addition or modification or deletion
Process flow of Scrum Methodologies:
Process flow of scrum testing is as follows:
Each iteration of a scrum is known as Sprint
Product backlog is a list where all details are entered to get the end-product
During each Sprint, top user stories of Product backlog are selected and turned into Sprint
backlog
Team works on the defined sprint backlog
Team checks for the daily work
At the end of the sprint, team delivers product functionality
Patterns For Adopting Scrum In Organizations
There are various Scrum adoption ways. These include four patterns of adopting Scrum
in the organization. These four patterns cast a pair of questions that need to be addressed
at the beginning of Scrum adoption in any project or organization. These questions are as
follows:
Should we start with one or two teams or convert all teams at the same time?
Should we announce our intent (perhaps just to others in the company but perhaps
publicly as well), or keep the change quiet for now?
Fundamentals of DevOps
The words "Development" and "Operations" are used to form the term "DevOps."
Software development and operations are combined to form the term "DevOps." This
enables one team to manage all stages of the lifetime of an application, from development to
testing, deployment, and operations. By using DevOps, you may reduce the distance between
system administrators, QA engineers, and software developers.
DevOps architecture is used for the applications hosted on the cloud platform and large
distributed applications. Agile Development is used in the DevOps architecture so that
integration and delivery can be contiguous. When the development and operations team works
separately from each other, then it is time-consuming to design, test, and deploy. And if the
terms are not in sync with each other, then it may cause a delay in the delivery. So DevOps
enables the teams to change their shortcomings and increases productivity.
Below are the various components that are used in the DevOps architecture:
1) Build
Without DevOps, the cost of the consumption of the resources was evaluated based on the pre-
defined individual usage with fixed hardware allocation. And with DevOps, the usage of cloud,
sharing of resources comes into the picture, and the build is dependent upon the user's need,
which is a mechanism to control the usage of resources or capacity.
2) 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. The
code can be appropriately arranged in files, folders, etc. And they can be reused.
3) 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.
4) 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.
5) 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.
6) 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.
7) Operate
DevOps changes the way traditional approach of developing and testing separately. The teams
operate in a collaborative way where both the teams actively participate throughout the service
lifecycle. The operation team interacts with developers, and they come up with a monitoring plan
which serves the IT and business requirements.
8) Release
Deployment to an environment can be done by automation. But when the deployment is made to
the production environment, it is done by manual triggering. Many processes involved in release
management commonly used to do the deployment in the production environment manually to
lessen the impact on the customers.
Orchestration
Orchestration is the automated configuration, management, and coordination of computer
systems, applications, and services. Orchestration helps IT to more easily manage complex tasks
and workflows.
Data centers
Data centers are a prime location to begin automating routine due to how many recurring tasks
tend to take place there.
Automating your data centers can:
Improve IT efficiency
Reduce deployment failures
Offer more manageable complexity across environments
Job scheduling & workload automation
Job scheduling and workload automation - Automating application workflows helps to:
Reduce downtime
Curb expenses caused by business interruptions
Enhance scalability thanks to its flexibility that simplifies even the most complex of
systems
IT processes
The automation of IT processes improves collaboration by supporting built-in and audited
annotation for crystal clear communication. Automation tools also give you the ability to
handle Big Data with your existing enterprise skills and best practices.
Deployment automation provides the ability to move your software between testing and
production environments by using automated processes. This leads to repeatable and reliable
deployments across the software delivery cycle.
Deployment automation lets you release new features and applications more quickly and
frequently, while removing the need for human intervention in application deployments.
DevOps Pipeline
A pipeline in software engineering team is a set of automated processes which allows DevOps
professionals and developer to reliably and efficiently compile, build, and deploy their code to
their production compute platforms.
The most common components of a pipeline in DevOps are build automation or continuous
integration, test automation, and deployment automation.
A pipeline consists of a set of tools which are classified into the following categories such as:
o Source control
o Build tools
o Containerization
o Configuration management
o Monitoring
Continuous Integration Pipeline
Continuous integration (CI) is a practice in which developers can check their code into a version-
controlled repository several times per day. Automated build pipelines are triggered by these
checks which allows fast and easy to locate error detection.
Some significant benefits of CI are:
o Small changes are easy to integrate into large codebases.
o More comfortable for other team members to see what you have been working.
o Fewer integration issues allowing rapid code delivery.
o Bugs are identified early, making them easier to fix, resulting in less debugging work.
Continuous Delivery Pipeline
Continuous delivery (CD) is the process that allows operation engineers and developers to
deliver bug fixes, features, and configuration change into production reliably, quickly, and
sustainably. Continuous delivery offers the benefits of code delivery pipelines, which are carried
out that can be performed on demand.
Some significant benefits of the CD are:
Faster bug fixes and features delivery.
CD allows the team to work on features and bug fixes in small batches, which means user
feedback received much quicker. It reduces the overall time and cost of the project.
DevOps ecosystem is the idea that tools should be helping you in your
journey from requirements to production. In order to help you along your DevOps path,
we’ve categorized the different classes of tools out there.
Scripts , CI/CD Tools , Build Tools , Source Code Management Tools (Code
Repositories) , Deploy Tools /Configuration as Code ,
Virtualization/Containerization , Reports, Statistics, and Analytics , Test
Automation , Static Code Analysis Tools
The DevOps Technology
The DevOps development pipeline relies on an entire technology stack that enables
automation, efficiency and collaboration.
Cloud Automation
Cloud automation allows IT teams and developers to automatically create, modify, and
delete environments in the cloud.
some as part of private cloud platforms, and some third-party tools, notably
configuration management, infrastructure as code (IaC) tools, and orchestration
tools like Kubernetes. These skills and tools are an essential part of any DevOps
team.
What is the DevOps Methodology?
DevOps is an information technology (IT) methodology that facilitates collaboration,
communication, and integration between software developers and IT operations staff. The
primary purpose of DevOps is to improve the quality and speed of software delivery, enabling
continuous, frequent updates that deliver value to customers.
The DevOps team works together to create a consistent development, testing and production
environment, and automates the development pipeline, to make software delivery efficient,
predictable, sustainable and secure.
DevOps gives developers better control over their infrastructure and a clearer understanding of
the production environment, and encourages operations specialists to be involved from the onset
of the development process. It creates a culture of shared ownership and responsibility for
software that runs and delivers value in production.
What is a DevOps Culture?
DevOps is not just a methodology or a practice, it is also an organizational culture. DevOps
culture focuses on small interdisciplinary teams that can work independently, and are jointly
responsible for the user experience delivered by a software product. The DevOps team lives in
production—they are primarily focused on improving live usage of the product.
A DevOps culture has the following essential elements:
DevOps teams adopt agile practices and integrate both development and operations into each
team's responsibilities. Teams work in small iterations, striving to improve the end-to-end
delivery of customer value, and removing waste and obstacles from the process. Teams are
jointly responsible, eliminating silos or finger pointing.
DevOps teams apply a growth mindset—they use monitoring and telemetry to collect evidence
in production and observe results in real time. They experiment with new features in production,
using techniques like canary or blue/green deployments, to quickly collect data, test features, and
use the results to drive continuous improvement.
DevOps teams focus on mean time to mitigate (MTTM) and mean time to remediate
(MTTR) rather than mean time between failures (MTBF). In contrast to traditional waterfall
teams that made major efforts to prevent problems in the field, the DevOps team recognizes that
failures will happen, and emphasizes the ability to act quickly, understand the impact, and
mitigate production issues.
DevOps teams think in terms of competencies, not roles—this includes both development and
operational skills. All team members share responsibility for running services. Both developers
and operations are responsible for live services, and all of them may share a rotating on-call
schedule. If you built it, you’re responsible for running it.
Use tools and automation consistently
DevOps pipelines rely heavily on automation and the adoption of new tools. SRE workflows, on
the other hand, prioritize standardizing technology and information across the organization. To
achieve this, SRE implementations require collaborators to use the same stacks. This can be
beneficial for DevOps, because even in a full DevOps environment, the use of different
technologies and tools may cause teams to unintentionally split into silos.
Measuring everything
Measurements are crucial in both DevOps and SRE. DevOps focuses primarily on process
performance and achieves continuous improvement via the CI/CD feedback loop. SRE treats
operations issues as software engineering issues, so it measures service level objectives (SLO) as
its key indicator. By combining process goals with production SLOs, teams can achieve not only
faster delivery, but also software that becomes more robust and reliable with each release.
DevOps and Digital Transformation
DevOps and Digital Transformation
Digital transformation is a global transition of businesses to processes and strategies using digital
technology. It is widely recognized that without digital transformation, businesses will find it
difficult to compete in the modern economy.
A digital transformation requires constant efforts from development and operations teams, to
create and integrate new technologies supporting business processes, employees and customers.
One of the key elements of a successful digital transformation is a DevOps mindset.
DevOps ensures that organizations build technologies that are useful, easy to maintain, and
capable of evolving to support changing requirements. While traditional IT is associated with
legacy technology that supported old-school business, DevOps will gradually become
synonymous with digital transformation.
The DevOps Technology Stack
The DevOps development pipeline relies on an entire technology stack that enables automation,
efficiency and collaboration. Below we describe several elements of this stack, which may be
used in different combinations by different teams.
Cloud Automation
Cloud automation allows IT teams and developers to automatically create, modify, and delete
environments in the cloud. DevOps has leveraged cloud computing since its early days, to enable
complete end-to-end automation of development and delivery pipelines.
However, automation is not built into the cloud. It requires specialized knowledge and uses
specialized tools, some of them offered by public cloud providers, some as part of private cloud
platforms, and some third-party tools, notably configuration management, infrastructure as code
(IaC) tools, and orchestration tools like Kubernetes. These skills and tools are an essential part of
any DevOps team.
Infrastructure as Code for DevOps
Infrastructure as code (IaC) uses the same descriptive model that the DevOps team uses for code
—version control—to manage infrastructure, including virtual machines, networks, and storage.
Infrastructure as Code (IaC) on Amazon Web
Services (AWS)
The primary IaC service on AWS is CloudFormation. CloudFormation reads templates and then
creates a set of ready-to-use resources for AWS.
.
Cloud Native and DevOps
“Cloud native” is a way to build and run applications that take advantage of the cloud computing
delivery model. Cloud native is not about where you deploy your application, but about how
applications are built and deployed. Cloud native applications can live both in the public cloud
and on-premises, assuming that the local data center has cloud automation capabilities.
Microservices architectures split large applications into smaller, functional
elements, each of which can be iteratively developed and maintained by a DevOps team. This
improves agility, reliability, and makes collaboration easier, because each element in a
microservices architecture is simple and well understood.
DevOps and Kubernetes
Most if not all DevOps teams are developing and running applications in containers.
Orchestration engines like Kubernetes are required to keep containers running at scale.
DevOps tools enable automation and control for planning, development, testing, deployment,
operations and monitoring. In addition, some tools have a view of the entire DevOps pipeline,
and can help orchestrate the entire process.
DevOps Tools Map
A wide range of tools are available for DevOps implementations and new tools are consistently
being developed. Below are the most common types of tools that are included by DevOps
teams and some examples of the specific tools in use.
Function Examples of Tools
Automated deployment Spinnaker
Automate deployment to staging or production environments. FluxCD
Flagger
Public cloud platforms Amazon Web Services
Provide scalable computing resources with rich automation capabilities. Microsoft Azure
Google Cloud Platform
DigitalOcean
IBM Cloud
Containerization Docker
Enables you to deploy services in a consistent way on any platform, with Kubernetes
orchestration tools to manage, scale, and deploy a large number of
containerized resources.
Collaboration Slack
Enable teams to communicate on tasks transparently with full JIRA
accountability.
Infrastructure as code Puppet
Automates system configurations and standardizes resource Chef
provisioning. Ansible
Terraform
CloudFormation
Azure ARM
Logging Fluentd
Enables you to collect and analyze event and operational data for Logstash
troubleshooting and optimization. Filebit
Elasticsearch
Splunk
Logging, monitoring and alerting Logstash
Enables collecting and analyzing operational data, optimizing Elasticsearch
performance, and responding to production issues. Splunk
Prometheus
Sensu
Datadog
NewRelic
Dynatrace
AppDynamics
PagerDuty
Security Snyk
Scans and secures applications and resources to remediate WhiteSource
vulnerabilities and prevent cyber attacks. Snort
Veracode
Sonatype
CI/CD systems Jenkins
Enables automatically building and testing code in a CI/CD pipeline. Gitlab
CircleCI
TravisCI