SPM Unit 5
SPM Unit 5
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
What is Agile?
Agile is a Project Management and software development approach that aims to be
more effective.
1. It focuses on delivering smaller pieces of work regularly instead of one big launch.
2. This allows teams to adapt to changes quickly and provide customer value faster.
Agile Methodology is a way to manage projects by breaking them into smaller parts. It
focuses on working together and making constant improvements. Teams plan, work on
the project, and then review how things are going in a repeating cycle.
Agile prioritizes flexibility, collaboration, and customer satisfaction.
Major companies like Facebook, Google, and Amazon use Agile because of its
adaptability and customer-focused approach.
In this stage, the project team identifies and documents the needs and expectations of
various stakeholders, including clients, users, and subject matter experts.
It involves defining the project's scope, objectives, and requirements.
Establishing a budget and schedule.
Addressing and resolving any issues that may arise after deployment.
Releasing updates and patches to enhance the software and address problems.
The Agile Alliance defines twelve lightness principles for those who need to attain agility:
1. Our highest priority is to satisfy the client through early and continuous delivery of
valuable computer software.
2. Welcome dynamic necessities, even late in development. Agile processes harness
modification for the customer’s competitive advantage.
3. Deliver operating computer software often, from a pair of weeks to a couple of months,
with a preference to the shorter timescale.
4. Business individuals and developers should work together daily throughout the
project.
5. The build comes around motivated people. Provide them with the setting and support
they need, and trust them to get the task done.
6. The most efficient and effective method of conveying information to and within a
development team is face-to-face communication.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and
users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity—the art of maximizing the amount of work not done—is essential.
11. The best architectures, requirements, and designs emerge from self-organizing
teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
2. Scrum
Scrum is great for small teams and works in sprints—short, focused work periods.
A Scrum Master removes obstacles for the team. Scrum includes two key events:
o Sprint Planning: Decides what the team will work on in the next sprint.
o Sprint Retrospective: Reflects on the last sprint to improve the process for the next
one.
Scrum is a framework for product management commonly used in software development, though
it is also applied in research, sales, marketing, and advanced technologies.
It is designed for teams of ten or fewer members, who break their work into goals completed
within time-boxed iterations (sprints), lasting no longer than one month (commonly two weeks).
The Scrum team assesses progress daily through a 15-minute daily Scrum (stand-up meeting). At
the end of each sprint, the team holds two meetings:
o Sprint Review: Demonstrates the work done for stakeholders and gathers feedback.
o Sprint Retrospective: Allows the team to reflect and improve.
When adopting a new framework like Scrum, organizations must follow structured processes to
integrate these changes effectively.
1. Awareness
2. Desire
3. Ability
4. Promotion
5. Transfer
1. ADAPT - Awareness
Awareness that the current process is not delivering acceptable results is the first step in change.
Recognizing that what worked in the past no longer works can be difficult.
Instead of listing many common project issues, focus on two or three major problems that reflect
the need for change.
Awareness Tools:
2. ADAPT - Desire
Awareness alone is not enough; teams must also desire to adopt Scrum.
Desire Tools:
Communicate that there is a better way.
Create a sense of urgency.
3. ADAPT - Ability
Simply wanting to change is not enough; teams must develop the skills needed to succeed with
Scrum.
Adopting Scrum requires learning new skills and unlearning outdated practices.
Ability Tools:
Provide coaching and training.
Hold individuals accountable for progress.
4. ADAPT - Promotion
Promote Scrum by sharing experiences, ensuring both memory retention and increased visibility of
success stories.
The three goals of promotion are:
5. ADAPT - Transfer
To sustain Scrum adoption, its principles must be transferred across the company.
A development team cannot remain Agile on its own; other departments must adapt to avoid
resistance that could hinder Agile transformation.
Groups needing Scrum implications transferred:
Human Resources
Facilities
Marketing
Finance
Transfer Tools:
Work closely with relevant departments.
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.
1) Start Small or Go All In
Organizations go ahead with it like a Pilot project, like selecting a few team members and
implementing Scrum with them. It's a ‘Start Small’ pattern.
The other approach can be Go All In, which is like the executives are convinced and want
the whole organization to implement in one go.
Reasons to prefer starting small:
Reduces resistance
Avoids problems within different teams
The All-in transition is quick!
Choosing between the two:
As recommended by Mike Cohn, one should always Start Small! It involves less cost and
guarantees early success. Going all in should be in limited cases, only when it’s a quick need.
Also, it involves more cost/money as there are a lot of changes in different departments if required.
2) Public Display of Agility or Stealth Transition
The next pattern that comes into the picture is whether to Publicize it or not. We can do the
Public Display of Agility. In this approach, the organization announces that it is adopting
Scrum.
This can vary from announcing it in a meeting room to announcing it through a press
release. The other approach is Stealth Transition. In this, only team members know they
are using Scrum until the project is complete.
Reasons for Public Display of Agility:
Everyone knows that the team is doing it, and they are more likely to be focused
Operating publicly is a firm statement of commitment
You can solicit organizational support
It sends a powerful message
Reasons for Stealth Transition:
Getting started with Scrum is one thing, spreading it across the organization is another.
Unless you choose an all-in transition, you will need to build upon the successes of the first
few teams as you move Scrum to other teams.
There are three general patterns given by Mike Cohn that talk about spreading Scrum.
1) Split and Seed
This talks about taking a team that has begun to be successful with Scrum and using its
team members to seed new teams. It’s typically put to use after the first few teams have
successfully implemented and adopted Scrum.
By this time, each team member understands how Sprints work and how the ready software
is delivered at the end of the sprint.
A large initial team is used to seed as many as four new teams.
Reasons to prefer Split and Seed pattern:
The Grow and Split pattern involves adding team members until the team is large enough
that it can be comfortably split in two.
Immediately after splitting, each of the new teams will probably be on the small end of the
desirable size, ranging from five to nine members.
This pattern repeats until the entire organization has transitioned.
Reasons to prefer Grow and Split pattern:
The third pattern of spreading Scrum is Internal Coaching. In organizations, some teams
excel with the new agile approach, while others need coaching to succeed with Scrum.
That person is assigned as a Coach for other teams. Coaches are given responsibilities to
attend sprint meetings, daily scrums each week, and coach other teams.
Reasons to prefer Internal Coaching:
In general, consider going with the Split and Seed pattern when in a hurry. It is the fastest
way of spreading Scrum. However, if the technology doesn’t support moving people among
teams, changing team members can affect productivity.
The Grow and Split pattern is simply a more natural and direct approach. Consider using
this approach if there is no sense of urgency, as it is less risky.
Internal Coaching can be used on its own, mostly when the group is large enough and
when splitting teams is not possible for the projects.
Introducing New Technical Practices
One final decision facing change agents, Scrum Masters, and new Scrum team members is
how soon the team should adopt new technical practices.
Reasons to Start Soon:
Very rapid improvements are possible. Many of the technical practices can provide some
quick wins to the team and organization.
If the team doesn’t try new technical practices early, it might never try them. Too many
Scrum teams adopt the bare minimum of Scrum and stop there, deciding that the
improvements already achieved through their new iterative and incremental work style are
sufficient.
It may address the project’s most pressing issues. Introducing a team to agile technical
practices can solve an array of typical project problems, including poor quality, over-
engineered solutions, long delivery cycles, and so on.
Reasons to Delay:
There may be strong resistance to some practices. Introducing certain technical practices
can be one of the most difficult challenges you face when transitioning. Many individuals
are extremely reluctant to try new methods, such as simple design, pair programming, and
test-driven development.
Fundamentals of DevOps
DEVOPS :
DevOps is a methodology in the software development and IT industry. Used as a set of
practices and tools, DevOps integrates and automates the work of software development
(Dev) and IT operations (Ops) as a means for improving and shortening the systems
development life cycle.
DEVOPS ARCHITECTURE:
DevOps Architecture works on the Agile Methodology. This eliminates delay and enhances
productivity rate. As a result, there is a continuous delivery of services.
There are various components of DevOps Architecture that make this process easier. These
components are mentioned down below:
1. Build:
o Good practices like Git allow teams to manage and track code efficiently. Git helps to
write code for business needs, track changes, and get notified about discrepancies
between actual and expected outputs. If necessary, it enables reverting to the
original code.
o Additionally, code can be organized in files and folders, ensuring reusability.
3. Test:
o Applications are ready for production after testing. Manual testing consumes more
time and resources to move code into production.
o DevOps employs Agile methodology to plan development. With both operations and
development teams working in sync, the planning process becomes more efficient,
boosting overall productivity.
5. Monitor:
o Continuous monitoring is used to detect risks of failure and track the health of the
application. Monitoring tools, like Splunk, enable tracking and gathering of log data in
real time, helping the team assess system performance.
6. Deploy:
o The operations team works closely with developers to create monitoring plans that
meet IT and business needs.
8. Release:
1. Automation:
1. Git:
o Git is a popular, free, and open-source tool that manages projects of any size. It allows
source code storage and version control, helping track project progress and allowing
the project to be reverted to a previous state if needed.
2. Jenkins:
o Jenkins helps track and fix bugs in code, offering over 1000 plugins in its ecosystem.
It is a widely used integrated server during the testing phase.
3. Docker:
4. Selenium:
o Puppet is a free management tool that supervises configuration codes. It follows the
principles of automated configuration management, enabling rapid and safe code
delivery.
6. Ansible:
o Ansible is another configuration management tool that saves resources and is simple
to use, leveraging a clear YAML syntax.
7. Kubernetes:
1. Reduced Cost:
o DevOps helps reduce the overall costs involved in development and production by
streamlining processes and improving efficiency.
o Customer experience and feedback are critical, and DevOps architecture helps
improve the user experience by providing insights and continuously addressing
customer needs.
6. Faster Software Release:
o Traditional methods hinder rapid software release. DevOps enables faster software
launches and updates, shortening time to market.
7. Stabilized Work Environment:
o DevOps helps create a stable work environment by addressing bugs, reducing feature
updates, and deploying new functions, thus boosting developer productivity.
8. More Room for Innovation:
o DevOps allows the team to quickly identify and resolve issues, which facilitates
innovation. The team can examine software continuously and brainstorm new ideas
using automation.
9. Higher Productivity:
In this strategy, the previous version of the application on each compute resource is stopped,
the latest application is installed, and the new version is started and validated.
The new version (green) is launched alongside the old version (blue). The new version is
tested and monitored before rerouting traffic to it, allowing for a rollback if any issues are
detected.
c) Canary Deployment
Canary deployment reduces the risk of deploying a new version that could impact the
workload. The new version is incrementally deployed, making it visible to a small percentage
of users.
As confidence in the deployment grows, it is gradually rolled out to replace the current version
entirely.
To implement this, use a router or load balancer that sends a small percentage of users to
the new version and monitor key performance indicators (KPIs) to measure deployment
success. The load on the new version increases until all users are migrated or the deployment
is rolled back.
d) Linear Deployment
Linear deployment shifts traffic in equal increments with set intervals between each shift.
Predefined options allow you to specify the percentage of traffic shifted in each increment
and the number of minutes between each increment.
e) All-at-once Deployment
All-at-once deployment shifts all traffic from the original environment to the replacement
environment at once.
An open-source tool that works best on multiple servers for executing arbitrary tasks. It is
written in Ruby.
Cost Price: Free
Advantages:
o Reliable deployment
b) Juju
o Controls scalability
Companies Using Juju: SparkCognition, LabCorp, Lenovo, IBM, ARM, Veritas
Technologies.
c) Travis CI
An open-source continuous integration tool that builds and tests applications on GitHub.
Cost Price: Free for open-source projects. Chargeable for private projects.
Advantages:
d) GoCD
An open-source application for continuous delivery and automation across various teams
within an organization, covering the entire process from building to deployment.
Cost Price: Free
Advantages:
e) Jenkins
o Increased concurrency
Companies Using Jenkins: ADP, Wells Fargo, Bank of America, JPMorgan, American
Express.
f) Octopus Deploy
o Supports changes
o Flexible integration across platforms
o Simple UI
Companies Using Octopus Deploy: GM Financial, CIMA, Parexel, AMETEK, ACA
Compliance Group.
g) IBM UrbanCode Deploy
Used for on-premise distribution and deployment of applications, with the option to integrate
with cloud environments.
Cost Price: Chargeable according to subscription plans.
Advantages:
An automated deployment tool provided by Amazon, used for releasing new features without
hassle.
Cost Price: Free for Amazon EC2 instances. Chargeable for team-based on-premise
instances.
Advantages:
Used for building connections with any Git repository, enabling automatic or manual
deployments, also through Slack.
Cost Price: Basic plan - $15, Plus plan - $25, Premium plan - $50.
Advantages:
o Allows execution and compilation of codes
o Offers various update features
A DevOps tool for continuous delivery, associated with Docker pipelines for continuous
integration and rapid delivery. It also supports multi-tier applications.
Cost Price: Free for one job. Chargeable for additional jobs (public and private projects).
Advantages:
o Easy configuration
o Separate pipelines for separate code repositories
ORCHRESTATION :
Orchestration is the coordinated execution of multiple IT automation tasks or processes. It is
typically applied across multiple computer systems, applications, and services to ensure that
deployment, configuration management, and other processes are executed in the proper
sequence.
IT teams manage a wide range of servers, systems, and applications across private data
centers, clouds, and edge locations. As IT environments become more complex, automating
tasks can improve efficiency and make processes easier to manage—but scaling automation
comes with its own challenges.
Orchestration Workflows for Deploying a Server:
5. Talk to the firewall or load balancer to make sure it’s configured to allow this new system
into its pool and policies.
6. Update the company ITSM system to confirm that the server has been successfully
deployed.
Benefits of Orchestration:
Deploy applications more quickly and efficiently, resulting in improved customer
experiences.
Reduce menial tasks and processes, allowing IT teams to focus on more strategic activities.
Minimize performance issues or outages caused by errors or misconfiguration of systems.
DevOps teams often navigate across different departments, requiring a solution that can smartly
integrate their tools. DevOps orchestration solutions combine various automated elements from
different DevOps toolkits.
o DevOps orchestration ensures seamless and quick delivery of new builds into
production, minimizing the effort spent on repetitive tasks. This enables DevOps teams
to focus on more critical projects and decision-making, rather than building pipelines.
2. Improve cross-team collaboration
o Having a platform that consolidates all activities and updates constantly boosts
effective communication between operations and development teams, ensuring
everyone is in sync throughout all steps.
3. Ensure higher release quality
o It’s challenging to maintain clarity and openness when tasks and information are
siloed. DevOps orchestration centralizes data related to all operations, coordinating
all tasks and providing updates and progress to key stakeholders throughout the
development lifecycle.
6. Boost the velocity of releases
The adoption of DevOps practices offers various benefits to different stakeholders within an
organization, including the development team, IT operations staff, and business owners.
Business owners naturally seek quantifiable returns on the time and effort invested in
implementing DevOps within their organization.
Here are the key business benefits of adopting a DevOps strategy:
DevOps adoption breaks down the silos in which development and business operations
teams traditionally operate. It enhances interaction between different teams, promotes
interoperability, and fosters a culture of transparency through collaboration.
By enabling IT and business teams to work together collaboratively, DevOps results in shorter
feedback loops and higher business growth. With improved interoperability, development
efforts align directly with business goals.
2. Faster Software Development Cycle
By following the continuous integration and continuous delivery (CI/CD) approach, DevOps
significantly speeds up software deployment. The development process consists of shorter
cycles, leading to faster code releases.
Synchronization between production cycles and IT infrastructure improves efficiency.
Automation within the development workflow, such as automated testing, not only
accelerates development but also enhances efficiency, enabling the adoption of innovative
techniques and increased flexibility.
4. Early Defect Detection Leading to Quality Software Development
Defects in software pose a significant threat to applications. DevOps facilitates early defect
detection and resolution at a faster rate, thereby improving overall software quality.
Collaboration, modular programming, and iterative development contribute to stable and
high-quality software. Automated, continuous monitoring and testing further enhance build
quality. Since businesses can quickly incorporate feedback and make changes, stringent
quality control measures lead to an improved user experience.
5. Improved Customer Experience and Consumer Satisfaction
Faster and better software development naturally enhances customer satisfaction. DevOps
teams can efficiently serve customers, incorporate feedback into future iterations, and
respond proactively and reactively to customer needs.
This increased agility and efficiency translate into higher ROI and business gains, as an
engaged customer base directly contributes to business success.
6. Increased Productivity Through Streamlined Business Processes
Traditional waterfall development involved multiple handoffs, increasing errors and slowing
down the process. DevOps enhances collaboration among teams, streamlining business
processes.
Real-time changes to the code can be implemented, identifying issues and opportunities
early. This reduces application downtime, enhances stakeholder productivity, and fosters
efficient collaboration, thereby improving the software development lifecycle.
7. Fostering Innovation Within the Organization
With streamlined processes and efficient releases, DevOps ensures high-quality builds. A
relaxed deployment phase allows teams to focus on innovative problem-solving approaches.
DevOps encourages creativity and innovation, leading to a more engaged and productive
workforce. Automated deployments and standardized production environments make
deployments predictable, freeing teams from repetitive tasks and allowing them to focus on
creative initiatives.
8. Improved Collaboration Leading to Employee Satisfaction
A smooth and transparent business process fosters collaboration among team members,
creating a happier workplace. Better communication and teamwork enhance efficiency and
work satisfaction.
A positive work atmosphere boosts employee morale, fostering a culture of trust. Since each
team member contributes to continuous delivery, empowerment and motivation increase,
resulting in high-quality, timely outputs that drive business growth
In a financial trading company, DevOps automated the testing, building, and development
process. Deployments that previously took long hours or entire weekends were reduced to
just 45 seconds, increasing overall efficiency and enhancing client satisfaction.
2. Use of DevOps in Network Cycling
With DevOps, deployment, testing, and rapid designing became ten times faster.
Telecommunication service providers could now implement security patches daily, instead of
every three months, accelerating the rollout of new network cycling versions.
3. Application in Car Manufacturing Industries
Car manufacturers leveraged DevOps to identify errors while scaling production, a process
that was previously difficult to manage. This improved efficiency and reduced production
issues.
4. Benefits to Airlines Industry
United Airlines adopted DevOps and saved $500,000 by implementing continuous testing
standards. This approach increased their code coverage by 85%, improving software
reliability and performance.
5. Application to GM Financial
GM Financial reduced regression testing time by 93%, significantly shortening the funding
period of loans by five times, thereby enhancing customer service and operational efficiency.
6. Bug Reduction Benefit of DevOps
DevOps helped organizations like Rabobank reduce bugs by up to 35%, with pre-production
bug reduction reaching as high as 40%. This resulted in better quality applications delivered
in less time.
7. Less Time for Integration
Key Bank utilized DevOps to reduce the integration time of security and compliance
processes from three months to just one week, improving agility and compliance adherence.
8. Decreased Computation Cost and Operation Time
Through DevOps, computation time was drastically reduced—by up to 60% in many cases.
This reduction in task completion time directly led to decreased operational costs.
9. Faster Development of Software
DevOps enables faster software development and delivery by ensuring a streamlined and
automated workflow, accelerating app deployment times.
10. Improvement in Team Collaboration
DEVOPS PIPELINE
What is the DevOps pipeline?
A DevOps pipeline is a set of automated processes and tools that allows both developers
and operations professionals to work cohesively to build and deploy code to a production
environment.
While a DevOps pipeline can differ by organization, it typically includes build
automation/continuous integration, automation testing, validation, and reporting. It may also
include one or more manual gates that require human intervention before code is allowed to
proceed.
Continuous is a differentiated characteristic of a DevOps pipeline. This includes continuous
integration, continuous delivery/deployment (CI/CD), continuous feedback, and continuous
operations. Instead of one-off tests or scheduled deployments, each function occurs on an
ongoing basis.
Components of a DevOps pipeline :
1. Continuous integration/continuous delivery/deployment (CI/CD)
Continuous integration is the practice of making frequent commits to a common source code
repository. It’s continuously integrating code changes into existing code base so that any conflicts
between different developer’s code changes are quickly identified and relatively easy to remediate.
This practice is critically important increasing deployment efficiency.
Continuous delivery ensures that the “main” or “trunk” branch of an application's source code is
always in a releasable state. In other words, if management came to your desk at 4:30 PM on a
Friday and said, “We need the latest version released right now,” that version could be deployed
with the push of a button and without fear of failure.
Continuous deployment entails having a level of continuous testing and operations that is so
robust, new versions of software are validated and deployed into a production environment without
requiring any human intervention.
This is rare and, in most cases, unnecessary. It is typically only the unicorn businesses who have
hundreds or thousands of developers and have many releases each day that require, or even want
to have, this level of automation.
To simplify the difference between continuous delivery and continuous deployment, think of delivery
as the FedEx person handing you a box, and deployment as you opening that box and using what’s
inside. If a change to the product is required between the time you receive the box and when you
open it, the manufacturer is in trouble!
2. Continuous feedback
The single biggest pain point of the old waterfall method of software development — and
consequently why agile methodologies were designed — was the lack of timely feedback. When
new features took months or years to go from idea to implementation, it was almost guaranteed that
the end result would be something other than what the customer expected or wanted. Agile
succeeded in ensuring that developers received faster feedback from stakeholders. Now with
DevOps, developers receive continuous feedback not only from stakeholders but also from
systematic testing and monitoring of their code in the pipeline.
Continuous Testing
Continuous testing is a critical component of every DevOps pipeline and one of the primary enablers
of continuous feedback. In a DevOps process, changes move continuously from development to
testing to deployment, which leads not only to faster releases but also to a higher-quality product.
This means having automated tests throughout your pipeline, including:
Unit tests that run on every build change
Smoke tests
Functional tests
End-to-end tests
Continuous Monitoring
Continuous operations is a relatively new and less common term, and definitions vary. One way to
interpret it is as “continuous uptime”.
For example, in the case of a blue/green deployment strategy, you have two separate production
environments:
Blue (publicly accessible)
Green (not publicly accessible)
New code is deployed to the green environment, and once confirmed functional, a switch is flipped
(usually on a load balancer), shifting traffic from the blue system to the green system. The result is
no downtime for end-users.
Another way to think of continuous operations is as continuous alerting. This means:
Engineering staff is on-call and notified of any performance anomalies in the application or
infrastructure.
Continuous alerting goes hand in hand with continuous monitoring to ensure issues are
addressed proactively.
o Progressive Collaboration DevOps promises to bridge the gap between the two where
both employ bottom-up and top-down feedback from each other. With DevOps, when
development seeks operational help or when operations require immediate
development, both remain ready for each other at any given time.
o In such a scenario, the software development culture brings into focus combined
development instead of individual goals; The development environment becomes
more progressive as all the team members work in cohesion towards a common goal.
Processing Acceleration:
o The abridged departments yield shorter development cycles which result in rapid
production. The entire process becomes modular wherein issues related to
configuration, application code, and infrastructure become more apparent and pre-
accessible.
o A decrease in error count also positively affects the success rates of development.
Therefore, very few fixes will be required to attain a fully functional code for the desired
output.
Higher Job Satisfaction:
o DevOps fosters equality by bringing different officials at the same level of interaction.
o DevOps serves as a handy tool for achieving that feat; it enables the workforce to work
in cohesion where chances for failure are minimal, and production is rapid. As a result,
the processing becomes efficient and the workspace more promising.
Technology Challenges
Lack of automation in the software development lifecycle, leading to loss of quality due to
error-prone, repetitive steps (e.g., testing).
Defects arising from inconsistent testing and deployment environments.
DevOps is a set of practices that combines software development (Dev) and IT operations
(Ops) to shorten the development lifecycle and improve software delivery. Key DevOps
capabilities include:
1. Continuous Integration (CI): Developers frequently integrate their code changes into a
shared repository. This enables early detection of integration issues, ensures code quality,
and reduces the time spent on fixing bugs.
2. Continuous Delivery (CD): In DevOps, software is continuously delivered to production with
automation tools, reducing the time between writing code and making it available to end-
users.
3. Automation: DevOps emphasizes automating manual processes such as testing,
deployment, and configuration management, which speeds up workflows and reduces human
error.
4. Infrastructure as Code (IaC): Infrastructure is managed and provisioned through code,
allowing for scalable, repeatable, and reliable infrastructure setups.
5. Monitoring and Feedback: Continuous monitoring of the application and infrastructure helps
identify potential issues and performance bottlenecks, while feedback loops allow teams to
act quickly to resolve issues.
6. Collaboration and Communication: DevOps encourages closer collaboration between
development and operations teams, breaking down silos and fostering a culture of shared
responsibility for the product’s lifecycle.
7. Scalability and Reliability: By adopting DevOps practices, teams can build systems that
scale more easily and are more resilient to failures, ensuring high availability.
How Agile and DevOps Complement Each Other:
Agile focuses on fast, flexible development, while DevOps focuses on automating and
streamlining the deployment pipeline to ensure faster and more reliable releases.
Together, they enable a faster feedback loop, from writing code to releasing it into production.
Agile works on the planning and development side, iterating on user stories, and DevOps
manages the operational side, ensuring that what’s developed can be deployed seamlessly.
Before installing open-source tools, teams must ensure compliance with OSS policies, including
usage, purchase requirements, and commercial restrictions. Tools like Black Duck help verify
compliance.
Popular DevOps Tools
1. Puppet
o Puppet is the most widely used DevOps tool. It allows the delivery and release of
technology changes quickly and frequently. It has features of versioning, automated
testing, and continuous delivery. It enables managing the entire infrastructure as code
without expanding the size of the team.
Features:
o Docker is a high-end DevOps tool that allows building, shipping, and running
distributed applications on multiple systems. It is suitable for container management.
Features:
o Nagios is a useful DevOps tool for identifying errors and rectifying them through
network, infrastructure, server, and log monitoring systems.
Features:
o Chef is a cloud-based system and open-source technology that uses Ruby for
infrastructure automation, reducing manual and repetitive tasks.
Features:
o Git is an open-source distributed version control system that enables collaboration and
faster release cycles.
Features:
People Aspect
DevOps directly improves human experiences in technology by addressing:
1. Reduced Stress & Anxiety
DevOps engineers and managers struggle to keep up with evolving tools and technologies.
Organizations find it challenging to recruit and retain qualified DevOps personnel.
Ideologies to be Adopted by Organizations to Overcome the Avalanche
1. Hire For the Growth Potential, Not for the Current Skills
o Experience and good foundations do matter! However, with the current rate of
knowledge turnover, I’d rather hire a smart, curious, self-driven Junior engineer than
someone who had been writing the same Java applications for the past 10 years.
2. Create a Continuous Learning Pipeline
o Akin to CI/CD pipelines pushing new features from code commit to production,
managers and organizations need to, can, and should create pipelines for training their
staff. It is more cost-effective for organizations to invest time and effort in training
existing and loyal staff than hiring from the market and losing to the market within a
year.
3. Learn on a Kanban
o Old CMMI-style Training Management Plans are just as useless as the old-school
Project Management Plans and Business Requirements Documents. A Learning Plan
can be as simple, transparent, and effective as a Kanban board with a card for every
book, training class, seminar, conference, or training dojo planned for each team
member.
4. Embrace MicroLearning
o Again, doing as we preach — while we strive to reduce the batch size of our product
deliverables, we should also reduce the batch size and ensure the continuous flow of
our learning. Old-school, 3-day, classroom classes are no longer needed nor should
they be encouraged or accepted by managers. Such classes are expensive, removed
from context, and ineffective.
5. Yearly Performance Reviews
o They didn’t really work in the past, but they are even more antiquated now. On one
hand, my team and I are working on 2-week sprint objectives and driving toward daily
deployments, but on the other hand, my reports and I need to come up with yearly
goals, and assess them at the end of the year?! That’s too long of a period in the IT
time & space continuum.
6. Promote Team Players as Opposed to Individual Star Performers
o This is another reason why the typical performance reviews don’t work — they single
out and reward the overachievers on the team, as opposed to promoting the teamwork
and collaboration so essential for DevOps. There will always be people who try harder
and work smarter, and we as managers should, absolutely, reward them!
7. Groom Generalists as Opposed to Specialists
o Agile has been preaching for a long time having “teams of multi-functional generalists.”
I have never seen a person who is equally diligent and detail-oriented for business
analysis work, as skilled in coding, and patient for testing. A developer carrying a pager
for 1 month will write a lot better code afterward, and an Ops engineer reviewing a pull
request will have a lot better understanding of the next deployment impact in
production.
PROCESSES:
The key purpose of DevOps is to reach agility in software development. It means that all
processes and stages of the creation and deployment are easily adaptable to changes thanks
to thorough communication and collaboration between the development and operations
departments.
DevOps Process Flow:
DevOps process contains many useful DevOps practices that were developed through years
of implementing DevOps concepts in the software production business.
All these developer operations are aimed to ensure automation, heighten productivity, and
provide quick ways of resolving issues and fixing bugs in the software build processes.
1. Continuous Integration
o According to this DevOps practice, the developer makes numerous daily modifications
to the shared repository's source code.
o When even little modifications are made to a bigger codebase, they get to be tested
and reported. Continuous integration (CI) aims to provide quick feedback so that any
flaws can be found and fixed right away.
2. Continuous Testing
o To get quick input on the business risk connected to software release, continuous
testing is required as one of the DevOps practices.
o It is a difficult and crucial component of the software. Testing is a necessity for software
rating. Automated testing tools are utilized because it is simpler to test continually
rather than testing a whole piece of software.
o The developer uses the test function to balance quality and speed.
3. Continuous Delivery
o Continuous delivery (CD) is the capability to make adjustments, such as adding new
characteristics and features, managing configurations, fixing bugs, and putting
experiments into production.
o A continual daily upgrade is our driving force behind continuous supply. If there is a
mistake in the production code at that point, we can easily repair it. So, here we are
quickly, consistently, and with the least amount of overhead creating and releasing our
application.
4. Continuous Deployment
o As soon as the code successfully completes all test cases, it is promptly deployed to
the manufacturing environment for production. Alternate versions of the code are
always present in the right places thanks to continuous updating.
o Continuous deployment many consider a better variant for IT DevOps production than
CD because it doesn’t require manual work from employees. Every update to the code
is automatically deployed with the help of DevOps deployment tools, leading to several
deployments in the production environment every day.
5. Continuous Monitoring
o DevOps lifecycle tools include a reporting tool that enables developers and testers to
assess the functionality and performance of their applications before it is implemented
in operations. To reduce the number of errors and changes, continuous monitoring
provides feedback.
6. Continuous Development
o The iterative process for creating software that will be provided to users is called
"continuous development". Continuous integration, testing, delivery, and deployment
are all components of it.
o So we can say that continuous development is a sort of umbrella term for other
DevOps basics.
o Organizations can provide innovative features or goods more quickly, with lower risk
and improved quality, by utilizing a continuous development strategy and its related
sub-strategies, without encountering substantial bandwidth constraints.
An order of progressive DevOps implementation might resemble this:
Lower risk as issues are identified Higher risk since issues are
6 Risk Management
and fixed early discovered late in the cycle
Analysis Break work into discrete, easily Work to implement changes defined
managed tasks at a high level
Implementation Implement changes Pivot from one task to another until all
incrementally and in small planned changes are created
pieces
Maintenance Use feedback from production Fix bugs identified in production -- this
environment to guide next may take a long time due to slow
cycle of Agile development speed of Waterfall development
Agile vs Waterfall – Difference Between Methodologies
Key Difference Between Waterfall and Agile
Waterfall is a Linear Sequential Life Cycle Model, whereas Agile is a continuous iteration of
development and testing in the software development process.
In Agile vs Waterfall difference, the Agile methodology is known for its flexibility, whereas Waterfall
is a structured software development methodology.
Comparing the Waterfall methodology vs Agile, which follows an incremental approach, whereas
the Waterfall is a sequential design process.
Agile performs testing concurrently with software development, whereas in Waterfall methodology,
testing comes after the “Build” phase.
Agile allows changes in project development requirements, whereas Waterfall has no scope of
changing the requirements once the project development starts.
What is Waterfall methodology?
Waterfall Model methodology which is also known as Linear Sequential Life Cycle Model.
Waterfall Model followed in the sequential order, and so project development team only
moves to next phase of development or testing if the previous step completed successfully.
What is the Agile methodology?
Agile methodology is a practice that helps continuous iteration of development and testing
in the software development process. In this model, development and testing activities are
concurrent, unlike the Waterfall model. This process allows more communication between
customers, developers, managers, and testers.
Advantages of Waterfall Model:
It is one the easiest model to manage. Because of its nature, each phase has specific
deliverables and a review process.
It works well for smaller size projects where requirements are easily understandable.
It is focused client process. So, it makes sure that the client is continuously involved
during every stage.
Agile teams are extremely motivated and self-organized so it likely to provide a better
result from the development projects.
The process is completely based on the incremental progress. Therefore, the client and
team know exactly what is complete and what is not. This reduces risk in the
development process.
Limitations of Waterfall Model:
The testing process starts once development is over. Hence, it has high chances of
bugs to be found later in development where they are expensive to fix.
Limitations of Agile Model
The project can easily go off track if the project manager is not clear what outcome
he/she wants.