2. AGENDA
1. Why Agile and DevOps?
Where did this come from and why is it important.
2. Continuous Delivery as a Goal.
Where software is going and why you have to care.
3. Environments and Testing.
Making delivery pipelines work.
3. 16
Different
faces/rules
For different
markets
Monolithic App with many single points of failure
A real-life example…
Dev Teams focused on
Horizontal
Components
Totally separate
Ops, Maintenance,
and Dev teams
Clashing cultures
from Merger/
Locations/
Code bases
Up 24/7 with
Millions of €/day
wagered
In-house
Build
Deploy
Monitoring
…
4. From Agile to DevOps
Breaking down silos and and empowering teams
• Agile tended to fold QA resources into development teams
• Resulting in better understanding, better tests, more people testing
• DevOps is about getting to teams that develop, operate and
maintain software
• Better understanding – get operations involved at the start
• Better operations – monitoring and maintenance using people with context
• More resources – instead of a few people that know operations the whole
team has base knowledge with experts just dealing with hard problems
and making improvements
5. How is DevOps changing?
Shown really remarkable success in a short time…
• Initial focus was build and deployment automation
• Lots of nice technology and a bounded problem
• DevOps Enterprise Summit 2015 in SF
• “This is becoming a Continuous Delivery conference”
• Good news IMHO – broad base of examples
• In a more difficult phase now
• Automation is hard work
• State of tests and test environments is pretty bad out there
• Are we thinking about test at the right level?
6. What DevOps and CD mean for the organization
• The whole idea of holding off changes to retain stability gets
turned on its head
• Change all the time and stay stable!
• Changes get smaller and smaller, but are constantly being deployed
• With small changes integration issues become fairly simple
• Environments must proliferate along with associated infrastructure
• Ideally you need a new test environment to test every change
• Create/Destroy quickly and efficiently
• Are your environments captured as code?
• Use Cloud services here, even if you don’t want to for production
19
8. The ability to get changes—features,
configuration changes, bug fixes,
experiments—into production or into
the hands of users safely and quickly
in a sustainable way.
Jez Humble
“
“
What is Continuous Delivery?
9. Keys Continuous Delivery
Continuous Integration flowing into Production
1. If it not automatable it is broken
2. If you can’t reproduce production in an on-demand environment
you are taking a big risk
3. If it hurts do it more often – (build, deploy, integrate, test)
4. Everything required for an app to be built and deployed must
exist in source control.
5. Practice trunk-based development with code switches for in-work
items
6. Infrastructure - Cattle, not pets (When sick you shoot them…)
12. You NEED Virtual Test Environments
Physical test labs are going away…
• With newer styles of development smaller teams are testing
smaller changes on very short schedules
• Queuing up to access a test lab just defeats the purpose
• When supporting many systems many different environments are
needed – very expensive to do physically
• Investing in a virtual test lab is the only hope to have the scale
you need
• Need virtual resources on-prem or off: CPU, Storage, Networking,
Firewalls, Load Balancers, Hardware simulation
• Ideally every team has one (or more) dedicated test
environments to move a fast as possible.
13. Environments Proliferate with Modern Techniques
• Each box ideally represents a fresh environment
• Unrealistic to have this many physical labs
• Change and refresh can be costly and error-prone
14. Key factors to make the leap
Places to start
1. Education in Agile and Lean Concepts for the whole team
2. Designate some projects/products that fit well for DevOps
• “Skunk Works” project with members from across the silos
3. Start a DevOps initiative to define and create the environments
you need
• As small and fast as possible
4. Automate delivery pipeline decision point tests
5. Automate deployment to any environment
15. Skytap Hands-On
Using Skytap Cloud to enable CD and Modernization
1. Fixing a bug by generating a new test environment and running
tests
• (show new code in a new environment – Vagrant->Skytap)
2. A CD pipeline using infrastructure as code and Skytap as a
cache
• Puppet, Chef, Ansible, Urban Code Deploy
• (Deploy an application, partly automated, partly hand-built)
3. Hybrid Modernization with Containers
• (peel off a service from the monolith and deliver in a container)
16.
17. Run time binding
Amazon
Keys to making these workable
• Independent Deployment
• API versioning
• Automated and Comprehensive Monitoring
18. Reliable Software
On (relatively) unreliable infrastructure
• Solving availability with hardware and proprietary software is
hugely expensive
• The big Internet companies have gone another route
• Large amounts of cheap infrastructure – horizontal scale
• Software the handles failures gracefully – takes time to build
• “Resilience, security, scalability, availability deployability,
testability are architectural concerns.”
• “Designing intelligent elastic cloud architectures, so that
infrastructure runs only when you need it, is an art in itself”