Agility and Process
Agility and Process
2
Agility and Cost of Change
3
What is an Agile Process?
• Driven by customer descriptions of what is
required (scenarios).
• Customer feedback is frequent and acted on.
• Recognizes that plans are short-lived.
• Develops software iteratively with a heavy
emphasis on construction activities.
• Delivers multiple ‘software increments’ as
executable prototypes.
• Adapts as project or technical changes occur.
4
Agility Principles
• Customer satisfaction is achieved by providing value
through software that is delivered to the customer as
rapidly as possible.
• Develop recognize that requirements will change and
welcome changes.
• Deliver software increments frequently (weeks not
months) to stakeholders to ensure feedback on their
deliveries is meaningful.
• Agile team populated by motivated individuals using
face-to-face communication to convey information.
• Team process encourages technical excellence, good
design, simplicity, and avoids unnecessary work.
5
Agility Principles
• Working software that meets customer needs is the
primary goal.
• Pace and direction of the team’s work must be
“sustainable,” enabling them to work effectively for
long periods of time.
• An agile team is a “self-organizing team”—one that can
be trusted develop well-structured architectures that
lead to solid designs and customer satisfaction.
• Part of the team culture is to consider its work
introspectively with the intent of improving how to
become more effective its primary goal (customer
satisfaction).
6
Scrum Framework
7
Scrum Details
8
Extreme Programming (XP) Framework
10
Kanban Framework
11
Kanban Details
12
DevOps
13
DevOps Culture
• The word 'DevOps' is a combination of two words
'development' and 'operations.‘
15
DevOps vs Waterfall
Waterfall DevOps
After placing an order for new servers, the Development After placing an order for new servers Development and
team works on testing. The Operations team works on Operations team work together on the paperwork to
extensive paperwork as required in enterprises to set-up the new servers. This results in better visibility of
deploy the infrastructure. infrastructure requirement.
Projection about failover, redundancy, data center Projection about failover, redundancy, disaster recovery,
locations, and storage requirements are skewed as no data center locations, and storage requirements are
inputs are available from developers who have deep pretty accurate due to the inputs from the developers.
knowledge of the application.
Operations team has no clue on the progress of the In DevOps, the Operations team is completely aware of
Development team. Operations team develop a the progress the developers are making. Operations
monitoring plan as per their understanding. team interact with developers and jointly develop a
monitoring plan that caters to the IT and business
needs. They also use advance Application Performance
Monitoring (APM) Tools
Before go-live, the load testing crashes the application. Before go-live, the load testing makes the application a
The release is delayed. bit slow. The development team quickly fixes the
bottlenecks. The application is released on time.
16
DevOps Details
17
When to Adopt DevOps
• DevOps should be used for large distributed
applications such as eCommerce sites or
applications hosted on a cloud platform.
• It should not be used in a mission-critical
application like bank, power and other sensitive
data sites. Such applications need strict access
controls on the production environment, a
detailed change management policy, access
control policy to the data centers.
18
DevOps Lifecycle
• Development:
– In this stage the development of software takes place constantly. In this phase,
the entire development process is separated into small development cycles.
• Testing
– QA team use tools to identify and fix bugs in the new piece of code.
• Integration
– In this stage, new functionality is integrated with the prevailing code, and testing
takes place. Continuous development is only possible due to continuous
integration and testing.
• Deployment
– In this phase, the deployment process takes place continuously. It is performed
in such a manner that any changes made any time in the code, should not affect
the functioning of high traffic website.
• Monitoring
– In this phase, operation team will take care of the inappropriate system behavior
or bugs which are found in production.
19
DevOps vs. Agile
• Typical IT process
• Agile Process
20
DevOps vs. Agile
• DevOps Process
21
Agile vs DevOps
Agile DevOps
Emphasize breaking down barriers between developers DevOps is about software deployment and operation
and management. teams.
Addresses gap between customer requirements and Addresses the gap between development and
development teams. Operation team
Focuses more on functional and non-functional It focuses operational and business readiness.
readiness
Agile development pertains mainly to the way DevOps emphases on deploying software in the most
development is thought out by the company. reliable and safest ways which aren't necessarily always
the fastest.
Agile development puts a huge emphasis on training all DevOps, likes to divide and conquer, spreading the skill
team members to have varieties of similar and equal set between the development and operation teams. It
skills. So that, when something goes wrong, any team also maintains consistent communication.
member can get assistance from any member in the
absence of the team leader.
Agile development manages on "sprints. It means that DevOps strives for consolidated deadlines and
the time table is much shorter (less than a month) and benchmarks with major releases, rather than smaller
several features are to be produced and released in that and more frequent ones.
period.
22
DevOps Principles
1. Customer-Centric Action: DevOps team must take customer-centric
action for that they should constantly invest in products and services.
2. End-To-End Responsibility: The DevOps team need to provide
performance support until they become end-of-life. This enhances the
level of responsibility and the quality of the products engineered.
3. Continuous Improvement: DevOps culture focuses on continuous
improvement to minimize waste. It continuously speeds up the
improvement of product or services offered.
4. Automate everything: Automation is a vital principle of DevOps process.
This is not only for the software development but also for the entire
infrastructure landscape.
5. Work as one team: In the DevOps culture role of the designer,
developer, and tester are already defined. All they needed to do is work
as one team with complete collaboration.
6. Monitor and test everything: It is very important for DevOps team to
have a robust monitoring and testing procedures.
23
Adopting DevOps
• Unfortunately DevOps is rather complex and
requires a number of experienced engineers. A
gradual implementation may look like this:
1. Establish an agile development process
2. Adopt cloud computing
3. Adapt your processes to a CI and CD workflow
4. Automate your software deployment
5. Automate software testing
6. Implement continuous deployment
24
Some Simple Tools
• Git: A distributed source code management tool.
• Lucidchart: A visual workspace that helps developers
and IT managers create robust, easy-to-understand
diagrams of processes, teams, and data.
• Kubernetes: Take containerization to the next level by
grouping into logical units, deploying in clusters, and
automating distribution and scheduling.
• Raygun: Monitor your errors and crash reports with
Raygun, an application performance monitoring
platform.
25
An Example of a DevOps CI/CD Process
26