3. Over the wall development
copyright 2015 Len Bass 3
Board has
idea
Developers
implement
Operators place
in production
Time
4. Where Does theTime Go?
• As Software Engineers our view is that there are the following
activities in software development
• Requirements
• Design
• Implementation
• Test
• Code Complete
• Different methodologies will organize these activities in
different ways.
• Agile focuses on getting to Code Complete faster than with
other methods.
4
Developers
implement
copyright 2015 Len Bass
5. What is wrong?
•Code Complete Code in Production
•Between the completion of the code and
the placing of the code into production is a
step called: Deployment
•Deploying completed code can be very
time consuming because of concern about
errors that could occur.
5copyright 2015 Len Bass
6. What is the work flow for code from a
multiteam development effort
• You develop and test your code in isolation
• Your code is integrated with code developed by other
teams to see if an executable can be constructed.
• The built system is tested for correctness
• The built system is tested for performance and other
qualities (staging)
• The built system is placed into production
copyright 2015 Len Bass 6
8. How much time?
• Historically, releases are scheduled for once a quarter or
once a year to give time to coordinate and adequately
test.
• This means there may be months delay before a new
concept or feature is added to a system.
• This delay has become more and more unacceptable.
• Weekly or daily releases are becoming the norm.
copyright 2015 Len Bass 8
9. Goal of DevOps
• The goal of DevOps is to reduce the time to market
without compromising quality by
• Reducing errors during deployment
• Speeding up incident handling after deployment
• Speeding up deployment
copyright 2015 Len Bass 9
12. Example for speeding up
Deployment (Deployment pipeline)
• Developer creates and tests code on local machine.
• Checks code into a version control system
• Continuous integration server (CI) builds the system and runs a series of
integration tests.
• After passing the tests, the system is promoted to a staging environment
where it undergoes more tests including performance, security, and user
acceptance tests.
• After passing those tests, the system is promoted to provisional production
where it undergoes even more tests.
copyright 2016 Len Bass 12
Pre-commit
tests
X
Build Image
and Perform
Integration
tests
UAT / staging /
performance
tests
Deploy to
production
Commit
...
Pre-commit
tests
Commit
Developers
promote
to normal
production