Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
22 views42 pages

SPM Unit 5

The document discusses Agile Methodology and its adoption, focusing on its principles, life cycle, and various frameworks like Scrum. It outlines the advantages and disadvantages of Agile, as well as the ADAPT model for successfully implementing Scrum in organizations. Additionally, it presents patterns for adopting and spreading Scrum, emphasizing the importance of team collaboration and customer satisfaction.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views42 pages

SPM Unit 5

The document discusses Agile Methodology and its adoption, focusing on its principles, life cycle, and various frameworks like Scrum. It outlines the advantages and disadvantages of Agile, as well as the ADAPT model for successfully implementing Scrum in organizations. Additionally, it presents patterns for adopting and spreading Scrum, emphasizing the importance of team collaboration and customer satisfaction.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

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.

What is the Agile Methodology?

 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.

Life cycle of Agile Methodology:


 The Agile software development life cycle helps you break down each project you take
on into six simple stages:
1. Requirement Gathering

 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.

 Creating a project plan and allocating resources.


2. Design

 Developing a high-level system architecture.


 Creating detailed specifications, which include data structures, algorithms, and interfaces.

 Planning for the software's user interface.


3. Development (Coding)

 Writing the actual code for the software.


 Conducting unit testing to verify the functionality of individual components.
4. Testing

This phase involves several types of testing:


 Integration Testing: Ensuring that different components work together.

 System Testing: Testing the entire system as a whole.


 User Acceptance Testing: Confirming that the software meets user requirements.

 Performance Testing: Assessing the system's speed, scalability, and stability.


5. Deployment

 Deploying the software to a production environment.


 Put the software into the real world where people can use it.

 Make sure it works smoothly in the real world.


 Providing training and support for end-users.
6. Review (Maintenance)

 Addressing and resolving any issues that may arise after deployment.
 Releasing updates and patches to enhance the software and address problems.

What is the Agile Manifesto Software Development?


 The Manifesto for Agile Software Development is a document produced by 17
developers at Snowbird, Utah in 2001. This document consists of 4 Agile Values and 12
Agile Principles.
4 Agile Values
 Individuals over processes and tools: Agile teams value team collaboration and
teamwork over working independently and doing things "by the book.”
 Working software over comprehensive documentation: The software that Agile teams
develop should work. Additional work, like documentation, is not as important as developing
good software.
 Customer collaboration over contract negotiation: Customers are extremely important
within the Agile methodology. Agile teams allow customers to guide where the software
should go. Therefore, customer collaboration is more important than the finer details of
contract negotiation.
 Responding to change over following a plan: One of the major benefits of Agile project
management is that it allows teams to be flexible. This framework allows teams to quickly
shift strategies and workflows without derailing an entire project.

What are the 12 Agile Principles?


 There are 12 Agile Principles mentioned in the Agile Manifesto. Agile principles are
guidelines for flexible and efficient software development. They emphasize frequent
delivery, embracing change, collaboration, and continuous improvement.
 The focus is on delivering value, maintaining a sustainable work pace, and ensuring
technical excellence.

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.

Types of Agile Methodology


1. Kanban
 Kanban is a visual method to manage tasks.
 Teams use a Kanban board to track tasks, which move through stages like "To Do," "In
Progress," and "Done."

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.

3. Extreme Programming (XP)


 XP focuses on technical practices and rapid delivery.
 It emphasizes values like communication, simplicity, feedback, courage, and respect.

4. Adaptive Project Framework (APF)


 APF is designed for projects where things can change unexpectedly.
 It's often used in IT projects where traditional methods may not apply.

5. Extreme Project Management (XPM)


 XPM is used for complex projects with a lot of uncertainty.
 It’s highly flexible, allowing teams to constantly adjust their processes and strategies.

6. Adaptive Software Development (ASD)


 ASD is about continuous learning and adaptation.
 The three main phases are:
o Speculate: Develop ideas about how the project should progress.
o Collaborate: Work closely with the team and customers.
o Learn: Use feedback to improve and make better decisions.
7. Dynamic Systems Development Method (DSDM)
 DSDM is more structured and covers the entire project lifecycle.
 It includes four main phases:
o Feasibility and Business Study: Understand the project’s goals and feasibility.
o Functional Mode or Prototype Iteration: Build prototypes to refine the solution.
o Design and Build Iteration: Develop the final solution.
o Implementation: Deliver the completed product.

8. Feature Driven Development (FDD)


 FDD focuses on developing specific features.
 The team works on one feature at a time, delivering regular updates based on customer
feedback.

Advantages of Agile Methodology


 Focus on Customer Value: Agile places a high priority on customer satisfaction by
attending to their requirements and preferences.
 Enhanced Team Morale and Motivation: Agile gives teams the freedom to own their
work, fostering motivation and pride.
 Stakeholder Collaboration: Agile encourages strong coordination between product
owners, developers, and other stakeholders.
 Early and Continuous Delivery: Agile promotes incremental releases of functional
software, enabling early feedback from stakeholders.
 High-Quality Software: Agile emphasizes continuous integration, automated testing,
and frequent inspections to improve quality.

Disadvantages of Agile Methodology


 Lack of Predictability: Agile’s iterative approach makes it difficult to predict exact
timelines and project outcomes.
 Dependency on Customer Availability: Agile depends on frequent customer feedback.
If customers are unavailable or lack domain knowledge, it can slow development.
 Scaling Agile: Agile works best for small to medium-sized teams. Scaling Agile for
larger teams or complex projects can be challenging.
 Dependency on Team Dynamics: Agile relies on self-organizing teams with strong
decision-making abilities.
 Increased Overhead: Agile requires more planning, coordination, and communication,
which can add extra effort for projects with short deadlines.
ADAPTing TO SCRUM
SCRUM

 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.

Five Activities for Successful Scrum Adoption


Adopting Scrum successfully involves five key activities:

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:

1. Communicate that theres a problem.


2. Use metrics to highlight inefficiencies.

3. Provide exposure to new people and experiences.


4. Run a pilot project.
5. Focus on the most critical reasons to change.

2. ADAPT - Desire
 Awareness alone is not enough; teams must also desire to adopt Scrum.

 Moving from awareness of problems to willingness to change is often difficult.


 Example: "I am aware that I should eat more vegetables, but I do not yet desire to make that change
in my diet."

Desire Tools:
 Communicate that there is a better way.
 Create a sense of urgency.

 Build momentum for change.


 Get the team to try Scrum with a test project.

 Align incentives (or at least remove disincentives).


 Address fears about change.

 Help people let go of old methods.


 Recognize past successes instead of discrediting them.

 Engage employees in the transformation effort.

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.

Challenges teams face:


 Gaining new technical skills.
 Learning to collaborate effectively as a team.

 Practicing how to deliver working software within short sprints.

Ability Tools:
 Provide coaching and training.
 Hold individuals accountable for progress.

 Share information openly.


 Set realistic and achievable targets.

 Encourage a "Just do it" mindset.

4. ADAPT - Promotion
 Promote Scrum by sharing experiences, ensuring both memory retention and increased visibility of
success stories.
 The three goals of promotion are:

1. Lay the groundwork for future improvements by generating awareness.


2. Reinforce agile behaviors within existing teams by spreading positive results.
3. Create awareness and interest among teams not yet using Scrum.
Promotion Tools:
 Publicize success stories.

 Host Agile events (e.g., Agile Safari).


 Attract attention and interest through engaging demonstrations.

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

 Other departments such as IT, sales, and operations

Transfer Tools:
 Work closely with relevant departments.

 Ensure non-technical teams understand Scrum's benefits.


 Provide training and resources for non-technical staff.

 Align organizational goals with Agile values.

PATTERNS FOR ADOPTING SCRUM :


PATTERNS FOR ADOPTING SCRUM

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:

 It’s less expensive


 Early success guaranteed
 Avoids risks of going all in
 Less stressful
 Can be done without much change
Reasons to prefer going all in:

 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:

 A chance to make progress before resistance starts


 It keeps pressure off
 No one knows until you tell them
 If no one knows, no one can tell you to stop
Choosing between the two:
As recommended, always choose to make a public display of Agility when you are confident and
committed to the transition and when you expect a lot of resistance but want to overcome it
quickly.
In contrast, choose a quiet approach when you want to do an experiment using Scrum.

Patterns for Spreading Scrum:

 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:

 Add teams more quickly


 Each team has someone with Scrum experience to guide them
2) Grow and Split

 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:

 Don’t have to destroy any existing teams


 Team members feel more continuity from sprint to sprint
3) Internal Coaching

 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:

 Well-running teams do not need to be split


 Coaches can be selected for new teams
 Coaches can move from team to team
Choosing Your Pattern!

 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.

ITERATING TOWARDS AGILITY

ITERATING TOWARDS AGILITY:


 Iterating towards agility in Scrum is a process that involves gradually introducing and refining
agile practices within a team or organization. It’s about making continuous improvements and
adaptations to enhance the team’s agility over time.
 Iterating towards Agility is a concept in Agile methodology that emphasizes the importance
of continuous improvement and adaptation. It involves the following steps:
1. Determine how many requirements (stories) fit in an iteration: This involves
understanding the scope of work that can be realistically achieved in a given iteration.
2. Break this requirement into tasks: Each requirement or user story is broken down into
smaller, manageable tasks.
3. Assign each task to their owners: Tasks are then assigned to team members based on
their skills and availability.
4. Each task is set to some estimated time: Time estimates are provided for each task to
help team members manage their time effectively.
 This approach allows teams to adapt to changes quickly and deliver value to customers on a
regular basis. It's a shift from traditional project management where change was designed,
had an identifiable beginning and ending, and was imposed from above.
Key points to consider when iterating towards agility in Scrum:
1. Start with the Basics: Begin by implementing the core elements of Scrum, such as sprints,
daily stand-ups, and retrospectives. This sets the foundation for iterative development.
2. Inspect and Adapt: After each sprint, use retrospectives to reflect on what worked well and
what didn’t. Make necessary adjustments to improve the process for the next sprint.
3. Embrace Empiricism: Scrum is based on empirical process control, which means making
decisions based on what is known. Use data and feedback to guide your actions.
4. Focus on Continuous Improvement: Encourage a culture of continuous improvement
where the team is always looking for ways to become more efficient and effective.
5. Scale Gradually: As the team becomes more comfortable with Scrum, start scaling the
practices to more teams or across the organization.
6. Use Scrum Patterns: Consider using Scrum patterns to address common challenges and
to guide the adoption process. Patterns provide a proven framework for solving specific
problems.
7. Measure Agility: Assess your team’s agility regularly to understand where you stand and to
identify areas for improvement. This can help in setting goals and tracking progress.
 Iterating towards agility is not a one-time event but a journey of continuous learning and
growth. It requires patience, commitment, and a willingness to experiment and learn from
failures.

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 is complementary to agile software development; several DevOps aspects came


from the agile way of working.

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 Before DevOps, resource consumption costs were evaluated based on pre-defined


individual usage with fixed hardware allocations.
o With DevOps, cloud usage and resource sharing come into play, making the build
process dependent on user needs and creating a mechanism to control resource
usage.
2. Code:

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 Automating tests significantly reduces testing time, allowing quicker deployment of


code by eliminating many manual steps.
4. Plan:

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 Automation can be used for deployment scheduling. Cloud management platforms


provide insights into trends and optimization scenarios, along with dashboards that
help monitor deployments efficiently.
7. Operate:
o DevOps transforms the traditional development and testing processes, which were
handled separately. In DevOps, teams collaborate throughout the service lifecycle.

o The operations team works closely with developers to create monitoring plans that
meet IT and business needs.
8. Release:

o While automation can handle deployment to most environments, releases to


production are often triggered manually to minimize risks and customer impact.
o Release management processes ensure smooth production deployment, balancing
automation and manual intervention.
DEVOPS COMPONENTS:

Key Features of DevOps Architecture:

1. Automation:

o Automation helps reduce time in testing and deployment phases, increasing


productivity and enabling faster releases. Automation helps quickly catch bugs, which
can then be easily fixed. For continuous delivery, each code drop is defined through
automated tests, cloud-based services, and builds.
o Builds are deployed in production using automation to minimize human errors that may
arise during manual deployment.
2. Collaboration:

o DevOps fosters collaboration between the development and operations teams,


improving productivity and enhancing accountability and ownership.

o Teams work closely together, sharing responsibilities, which speeds up deployment to


production.
3. Integration:

o Software applications need to be integrated with other components in the environment.


The integration phase involves combining existing code with new features or
functionality, followed by testing.
o Continuous integration and testing support continuous development. Continuous
integration and delivery ensure quicker, safer, and more reliable releases.
4. Configuration Management:

o Configuration management helps in building robust and stable systems for


engineering teams by using tools that can automatically manage and monitor updates
to configuration data.

o Configuration files can be written during deployment or loaded at runtime, depending


on the environment.
Best Tools to Use in DevOps Architecture:

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:

o Docker is an essential tool for software deployment and distribution improvement. It is


portable and secure, as it works in isolated containers, making it OS-independent.

4. Selenium:

o Selenium is a portable testing framework that helps develop excellent web


applications. It supports languages like Java, Ruby, Python, and Perl for automated
testing.
5. Puppet:

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:

o Kubernetes is an open-source tool that assists in managing and deploying container


clusters, making it ideal for applications with multiple containers.
8. Terraform:

o Terraform is an open-source tool that allows developers to manage multiple cloud


services using a consistent CLI, automating resource provisioning and reducing
human errors.
Benefits of DevOps Architecture:

1. Reduced Cost:

o DevOps helps reduce the overall costs involved in development and production by
streamlining processes and improving efficiency.

2. Increased Productivity and Release Time:

o DevOps eliminates conflicts between development and operations teams. This


reduction in friction leads to higher productivity and quicker release times.
3. Customers Are Served:

o DevOps is customer-centric, collecting real-time data and feedback to improve


customer service and satisfaction.
4. It Gets More Efficient with Time:

o Unlike traditional methods, DevOps simplifies the development lifecycle and


requirement gathering, leading to greater efficiency through transparency,
accountability, and collaboration.
5. Improved User Experience:

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:

o By promoting communication and collaboration between teams, DevOps eliminates


organizational silos, leading to significant growth in productivity.
DEVOPS DEPLOYMENT:
Deployment strategies define how you want to deliver your software. Organizations follow different
strategies based on their business model. Some opt to deliver fully tested software, while others
may prefer to gather user feedback through beta releases and allow users to evaluate under-
development features.
The following section discusses various deployment strategies:
a) In-place Deployments

 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.

 This allows application deployments to proceed with minimal disturbance to underlying


infrastructure. However, availability can be affected during these deployments.
 This approach minimizes infrastructure costs and management overhead. A load balancer
can be used to deregister instances during deployment and restore them after completion.
In-place deployments can be all-at-once (resulting in a service outage) or done as a rolling
update.
b) Blue/Green Deployment

 Blue/green deployment, sometimes called red/black deployment, is a technique for releasing


applications by shifting traffic between two identical environments running different versions
of the application.
 It minimizes downtime during updates, mitigating risks associated with downtime and rollback
functionality.

 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.

Best DevOps Deployment Tools:

Here are some of the most popular deployment tools in DevOps:


a) Capistrano

 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

o Easy setup and automation


o Simplifies general tasks in software teams

o Encapsulates drive infrastructures


 Companies Using Capistrano: Typeforum, New Relic, Tilt, Repro, Qiita.

b) Juju

 An open-source management tool that decreases operational overhead by performing


various tasks in public and private clouds.
 Cost Price: Free
 Advantages:

o Fastest way to deploy OpenStack Cloud


o Service configurations as per user needs
o No dependency problems

o Offers environment portability


o GUI-based tool and command line support

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:

o Easy to build and maintain

o Effective integration with GitHub


o Great UI and dashboard

o Built-in support for vendors


 Companies Using Travis CI: Govini, Idea Evolver, Emogi, Baker Hughes, Cvent, Mendal.ai.

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:

o Quick configuration with sequential execution


o Easy extraction of templates

o Built-in test examination


o Easy visualization and reliable UI
 Companies Using GoCD: Hazeorid, OpenX, Xola, ThoughtWorks, Omnifone, Feedzai.

e) Jenkins

 A widely-used open-source automation server, written in Java. It is a server-based system


that includes multiple dashboards.
 Cost Price: Free
 Advantages:

o Fast updates with built-in GUI tools


o Requires less maintenance

o Rapid delivery and continuous integration


o Easy configuration

o Increased concurrency
 Companies Using Jenkins: ADP, Wells Fargo, Bank of America, JPMorgan, American
Express.
f) Octopus Deploy

 A management server for automating deployment and release management. It is compatible


with databases.
 Cost Price: Free for small teams. Chargeable for large teams.
 Advantages:

o Repeatable and reliable deployments

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:

o Deploys applications through data centers


o Plugin ecosystem

o Simple drag-and-drop process


o Tracks user activity
 Companies Using IBM UrbanCode Deploy: PNC, Analog Devices, Blue Cross Blue Shield,
Amica Mutual Insurance, Huntington.
h) AWS CodeDeploy

 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:

o Reliable and faster deployments

o Easy to launch and track applications


o Decreases downtime and increases availability

o Easily adaptable to other applications


 Companies Using AWS CodeDeploy: Algorithmia, Indica, Hello Labs, Adsia, Zugata,
Eventtus.
i) DeployBot

 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

o Monitors deployment process


o Can automatically search for keywords
 Companies Using DeployBot: Sellsuki, Edify, Kiwi, Millstream, Kasper Systems.
j) Shippable

 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 Complete process from building to deployment

o Easy configuration
o Separate pipelines for separate code repositories

o Allows multiple runtimes


 Companies Using Shippable: Clean Harbors, Worldpay, Wayfair, Stericycle, Booklt.

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:

1. Deploy the server.


2. Configure the server.

3. Assign storage capacity.


4. Grab an application from a repository, install it, and configure it.

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.

 Improve collaboration across multiple IT domains, such as network, security, etc.


 Optimize cost savings by ensuring that systems (like cloud resources) are decommissioned
during periods of low utilization.
Why Invest in DevOps Orchestration?

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.

1. Accelerate your automation process

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 DevOps orchestration reduces the chance of mistakes reaching the end-user by


including quality control activities such as approvals, scheduling, security testing, and
automatic status reporting.
4. Reduce costs for IT infrastructure and human resources

o DevOps orchestration lowers infrastructure investment costs and the number of IT


employees required. Over time, firms can expand their cloud service footprint and be
more flexible in allocating business costs.
5. Build transparency across the SDLC (Software Development Life Cycle)

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

o DevOps orchestration involves considerable automation and the automated


progression of software through processes (such as testing) and on to the next stage
of a release pipeline.

NEED FOR DEVOPS


Business Benefits of DevOps:

 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:

1. Faster Software Development Cycle


2. Improved Interoperability Among Teams
3. Continuous Releases and Deployments

4. Early Defect Detection Leading to Quality Software Development


5. Improved Customer Experience and Greater Customer Satisfaction

6. Increased Productivity Through Streamlined Business Processes


7. Fostering Innovation Within the Organization

8. Greater Employee Satisfaction


1. Improved Interoperability Among Teams

 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

 One of the biggest advantages of DevOps adoption is agility. Shortened software


development cycles enable faster incorporation of changes, enhancing speed to market—a
crucial factor in staying ahead of competitors.
 The accelerated development cycle ensures faster product deployment and quicker
correction of errors and bugs. DevOps tools and processes not only improve development
speed but also ensure that business processes follow the optimal direction, leading to
increased ROI.
3. Continuous Releases and Deployments

 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

INSTANCE OF APPLICATIONS or APPLICATIONS OF DEVOPS


Real-Life Applications of DevOps
1. Application of DevOps in the Online Financial Trading Company

 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

 Transparency plays a crucial role in better decision-making and efficient resource


management. DevOps promotes collaboration by breaking large projects into smaller tasks
assigned to different teams, increasing productivity and efficiency across the organization.

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 monitoring is another important component of continuous feedback. A DevOps


approach entails using continuous monitoring in the staging, testing, and even development
environments.
It is sometimes useful to monitor pre-production environments for anomalous behavior, but in
general, this approach is used to continuously assess the health and performance of applications in
production.
Numerous tools and services exist to provide this functionality, and this may involve anything from
monitoring:
 On-premise or cloud infrastructure such as server resources, networking, etc.
 Application performance

 API interface performance


3.Continuous Operations

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.

DEVOPS ECO SYSTEM

Key Components of the DevOps Ecosystem


1. Continuous Integration (CI) and Continuous Delivery (CD) Tools:
These tools automate the build, test, and deployment processes, helping to ensure that
changes to the code are quickly and reliably integrated into the main codebase and
deployed to production.
2. Version Control Tools:
These tools, such as Git, help teams manage changes to code, collaborate more
effectively, and track the history of code changes.
3. Infrastructure as Code (IaC) Tools:
These tools, such as Terraform or CloudFormation, enable the creation and management
of infrastructure using code, allowing for more consistent and repeatable infrastructure
deployments.
4. Monitoring and Analytics Tools:
These tools enable teams to monitor the health of their systems and applications, detect
and diagnose issues quickly, and gain insights into how their software is being used.
5. Collaboration Tools:
These tools, such as Slack or Microsoft Teams, enable teams to communicate and
collaborate effectively, improving productivity and team morale.
6. Agile Methodologies:
These methodologies, such as Scrum or Kanban, help teams work together more efficiently
and effectively, delivering value to customers more quickly and with higher quality.
7. Culture and People:
DevOps is not just about tools and technologies; it is also about people and culture.
Building a culture of collaboration, continuous improvement, and trust is critical to the
success of any DevOps initiative.
8. Security and Compliance:
DevOps teams must also consider security and compliance as they build and deploy
software. Tools and processes that enable secure development and deployment are critical
to ensuring the safety and privacy of users and customers.
9. Training and Education:
Continuous learning and improvement are essential to the success of any DevOps initiative.
Providing training and education to team members helps ensure that they have the
knowledge and skills needed to succeed in a fast-paced, rapidly evolving environment.

DevOps Adoption in Projects


Technology Aspects
 Adopting a DevOps Culture:

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 With conjoined operational and developmental paradigms, the communication lag


between the two is reduced to null.
o Organizations continuously strive for a better edge over their competing rivals, and if
such acceleration is not achieved, the organization will have to succumb to
competing forces—innovation will be slower, and the product market will decay.
 Shorter Recovery Time:

o DevOps deployment functions on a more focused and exclusive approach which


makes issues more accessible to spo; this helps error rectification faster and easier to
implement.
o The resolution to problems is inherently quicker, as troubleshooting happens to take
place at the current development level only, within a single team. Thus, the overall
time for recovery and rectification is drastically reduced.
 Lower Failure Rate:

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.

 Delays in testing due to infrastructure unavailability.


 Fragile point-to-point integrations between modules.

Agile and DevOps Capabilities


 Agile and DevOps are two distinct but complementary methodologies that help teams deliver
high-quality software more efficiently and effectively. Here's an overview of each and their
capabilities:
Agile Capabilities:

 Agile is a methodology that emphasizes iterative development, flexibility, and collaboration.


It helps teams adapt to changes quickly and deliver software incrementally. Key Agile
capabilities include:
1. Iterative Development: Agile projects are broken into smaller cycles called sprints (typically
2-4 weeks). This allows teams to deliver incremental value and gather feedback early and
often.
2. Customer Collaboration: Agile emphasizes customer feedback, ensuring the software is
built based on user needs and can evolve as those needs change.
3. Cross-Functional Teams: Agile teams are often cross-functional, meaning developers,
testers, designers, and other key roles collaborate closely within the same team to achieve a
common goal.
4. Continuous Improvement: Teams hold regular retrospectives to review what went well and
what could be improved, fostering a culture of continuous learning and improvement.
5. Flexibility to Change: Agile enables teams to respond to changes in requirements, priorities,
and scope throughout the development process, ensuring the product remains aligned with
business needs.
6. Focus on Working Software: Agile prioritizes delivering working software frequently over
comprehensive documentation. This leads to quicker releases and tangible progress.
DevOps Capabilities:

 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.

Tool Stack Implementation:


 To implement these capabilities effectively, the right tool stack must be selected to build an
automated pipeline. This pipeline streamlines development, testing, deployment, and release
activities, ensuring rapid, reliable, and repeated software releases with minimal manual effort.
Principles for Selecting Tools:
 Repeatability: Automated pipelines should run consistently and frequently.

 Reliability: The pipeline should ensure software stability and dependability.


 End-to-End Automation: All activities, from coding to release, should be automated.

 100% Source Control: All artifacts must be version-controlled.


 Built-in Quality Checks: Automated gating conditions should maintain software quality.
 Release-Ready: The pipeline should release only fully completed and tested software.

 Continuous Feedback: Automated reports should provide real-time feedback.


 Customer Tooling Appetite: The selection should consider budget, existing tools, alliances,
and project feasibility.
Open Source Stack Considerations:

A Java and open-source stack is recommended for development projects because:

 The tools are powerful, widely used, and cost-effective.


 They support Java-based application development.
 They eliminate licensing overhead and enable quick implementation.
OSS Compliance:

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:

 Real-time context-aware reporting.

 Model and manage the entire environment.


 Defined and continually enforced infrastructure.

 Desired state conflict detection and remediation.


 Inspects and reports on packages running across the infrastructure.

 Eliminates manual work for the software delivery process.


 Helps developers deliver great software quickly.
2. Ansible

o Ansible is a leading DevOps tool. It is an open-source IT engine that automates


application deployment, cloud provisioning, intra-service orchestration, and other IT
tools. It makes it easier for DevOps teams to scale automation and speed up
productivity.
Features:

 Easy-to-use open-source deployment.

 Avoids complexity in the software development process.


 Eliminates repetitive tasks.
 Manages complex deployments and speeds up development.
3. Docker

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:

 Configures systems quickly and efficiently.


 Increases productivity.

 Provides isolated application environments.


 Routes requests dynamically to active containers.
 Securely stores secrets in the swarm.
4. Nagios

o Nagios is a useful DevOps tool for identifying errors and rectifying them through
network, infrastructure, server, and log monitoring systems.
Features:

 Monitors desktop and server operating systems.

 Network analyzer for bottleneck identification and bandwidth optimization.


 Monitors services, applications, OS, and network protocols.

 Provides complete monitoring of Java Management Extensions.


5. Chef

o Chef is a cloud-based system and open-source technology that uses Ruby for
infrastructure automation, reducing manual and repetitive tasks.
Features:

 Maintains high availability.


 Manages multiple cloud environments.

 Uses Ruby for domain-specific language.


 Determines system status before making changes.
6. Jenkins

o Jenkins facilitates continuous integration and deployment, allowing for automated


builds and testing.
Features:

 Increases automation scalability.


 Web interface for easy setup and configuration.

 Distributes tasks across multiple machines.


 Supports continuous integration and delivery.

 Low maintenance with built-in GUI tools.


7. Git

o Git is an open-source distributed version control system that enables collaboration and
faster release cycles.
Features:

 Free open-source tool.


 Supports distributed development.

 Enables pull requests and faster releases.


 Highly scalable and secure.
8. SaltStack
o SaltStack is a DevOps tool that manages infrastructure with intelligent orchestration.
Features:

 Eliminates configuration inconsistencies.

 Traces web request details.


 Provides secure access and image management.

 Supports multi-tenancy with role-based access control.


9. Splunk

o Splunk transforms machine data into operational intelligence.


Features:

 Next-generation monitoring and analytics.


 Unified IT services view.

 Data-driven analytics with actionable insights.


10. Selenium
o Selenium automates web application testing.
Features:

 Free open-source tool.

 Supports multi-platform testing.


 Builds keyword-driven frameworks for WebDriver.

 Creates browser-based automation suites.

People Aspect
DevOps directly improves human experiences in technology by addressing:
1. Reduced Stress & Anxiety

o Automates deployment to minimize human involvement, reducing stress.


o Reduces burnout by making software delivery routine and predictable.
2. Offloading Mind-Numbing, Repetitive Work

o Automates repetitive tasks to increase efficiency and minimize human errors.


3. Increasing Collaboration and Trust

o Encourages collaboration across development, operations, and QA teams.

o Breaks down silos to improve workflow efficiency.


Drawbacks or Hardships:

 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:

1. Adopt an agile development methodology;


2. Utilize cloud computing;

3. Get your procedures in line with a CI and CD workflow;


4. Automate software deployment process flow;

5. Organize automated software testing;


6. Use a continuous deployment DevOps strategy.
The comparison between both models is tabulated as follows -

S.No. Purpose Agile Model Waterfall Model

1 Approach Iterative and incremental Sequential and linear

Highly flexible, allows changes at Rigid, difficult to accommodate


2 Flexibility
any stage changes once development starts

Development Faster due to parallel development Slower due to sequential phase


3
Speed and continuous feedback completion

Continuous involvement Involvement mainly at the beginning


4 Client Involvement
throughout the process and end

Continuous testing in every Testing phase happens after


5 Testing
iteration (TDD, automated testing) development is completed

Lower risk as issues are identified Higher risk since issues are
6 Risk Management
and fixed early discovered late in the cycle

Minimal documentation; focus on Extensive documentation is


7 Documentation
working software required

Complex and dynamic projects Well-defined and structured projects


8 Best Suited For
requiring frequent changes with fixed requirements

Examples of Use Software products, startups, Government projects, banking


9
Cases evolving requirements systems, medical software
Below is a difference between Agile and Waterfall methodologies:

Stage Agile Waterfall

Planning Identify small, discrete Plan loosely defined changes


application changes to
implement

Analysis Break work into discrete, easily Work to implement changes defined
managed tasks at a high level

Design Focus on modular system No specific approach to system


designs and interfaces design

Implementation Implement changes Pivot from one task to another until all
incrementally and in small planned changes are created
pieces

Testing Test incrementally Test all together -- failed tests result


in rework of code implementation

Deployment Deploy using gradual, iterative Deploy cautiously -- deployment risk


methods, like canary releases increases with a complex set of
changes

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.

 Faster delivery of the project

 Process and results are well documented.


 Easily adaptable method for shifting teams

 This project management methodology is beneficial to manage dependencies.


Advantages of the Agile Model:

 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.

 Agile software development method assures that quality of the development is


maintained

 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:

 It is not an ideal model for a large size project

 If the requirement is not clear at the beginning, it is a less effective method.

 Very difficult to move back to makes changes in the previous phases.

 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

 It is not useful method for small development projects.

 It requires an expert to take important decisions in the meeting.

 Cost of implementing an agile method is little more compared to other development


methodologies.

 The project can easily go off track if the project manager is not clear what outcome
he/she wants.

You might also like