bertjan@openvalue.eu
Software architecture in a DevOps world
Bert Jan Schrijver
@bjschrijver
Bert Jan Schrijver
L e t ’ s m e e t
@bjschrijver
Why DevOps?
Principles of DevOps
What is DevOps?
Introduction
Flexibility in software
Conclusion
Q&A
Outline
Software architecture in a DevOps world
DevOps applied to
software architecture
@bjschrijver
• Sum of all decisions taken during development
• Making design decisions about important stuff
• Enabling a team to build software that provides
solutions for business problems
What is software architecture?
Definitions
Every change goes through the
build/test pipeline and
automatically gets put into
production.
Continuous Deployment
?!
DevOps
Building and testing software in
such a way that the software can be
released to production at any time.


"Ship early, ship often, sacrificing
features, never quality" - Kyle Neath
Continuous Delivery
Team members integrate their
work frequently. Commits are
verified by automated builds
and tests.
Continuous Integration
Who’s who in CD & DevOps
@bjschrijver
DevOps: a definition
Development and operations engineers
being responsible together
for the entire lifecycle of a product.
:


building and running better-quality software
more quickly and more reliably.
Developers and other IT professionals
working together on a shared goal
DevOps: another definition
DevOps: another definition ;-)
A set of practices intended to reduce
the time between committing a change
to a system and the change being
placed into normal production, while
ensuring high quality.
Why DevOps?
as an enabler for Continuous Delivery, faster problem
resolution and focus on value instead of problems.
DevOps makes your business move faster
What is DevOps really about?
DevOps is about culture
Source:	http://www.azmc.org/wp-content/uploads/2012/11/Arts-and-Culture-Large.jpg
DevOps is about freedom and responsibility
Source:	https://images.unsplash.com/photo-1449177009399-be6867ef0505
DevOps is about empathy
Source:	http://www.scarymommy.com/wp-content/uploads/2014/06/empathy.jpg
Principles
of DevOps
@bjschrijver
Continuous improvement
Automation
Ownership
Experimentation
Gradual changes
Customer oriented
Collaboration
Software architecture and DevOps
• Applied to software architecture:
• Start with the simplest solution you can come
up with
• Improve and refine along the way
• Focus on dealing with uncertainty
• Do just enough architecture to get through
the next sprint ;-)
DevOps principle: gradual changes
• Applied to software architecture:
• Focus on the business’ needs
• Don’t design for yourself!
• Help out with clarifying non-functional
requirements
DevOps principle: customer oriented
• Applied to software architecture:
• Diagram generation
• Automated architecture checks
• Infrastructure as code -> cloud
architecture
DevOps principle: automation
• Applied to software architecture:
• Team owns the architecture
• Architect needs to be involved with the team
• Architect is accountable for the end result
too!
• Minimise dependencies to things outside
the team
DevOps principle: ownership
DevOps principle: ownership
Source: https://architectelevator.com/architecture/organizing-architecture
• Applied to software architecture:
• Talk to all stakeholders
• Developers are stakeholders as well!
• Be transparent, explain decisions, be
open for feedback
• No room for ivory towers
DevOps principle: collaboration
• Applied to software architecture:
• Do proof of concepts to gain insights
• Try to solve problems early
• Embrace failure
• Don’t be afraid to start over

(.. an iteration worth of work)
DevOps principle: experimentation
DevOps principle: experimentation
Source: https://www.linkedin.com/posts/gergelyorosz_architecture-softwaredesign-bigtech-activity-6851431869691523072-2wbf/
• Applied to software architecture:
• Focus on feedback loops
• Ask developers for feedback!
• Measure & monitor
• Evolving architecture instead of up-front
• Software architecture is never finished
DevOps principle: continuous improvement
About flexibility in software…
Summary
How do you work as an architect

with(in) a DevOps team?
By applying the same DevOps principles
to the domain of software architecture.
Source:	https://cdn2.vox-cdn.com/thumbor/J9OqPYS7FgI9fjGhnF7AFh8foVY=/148x0:1768x1080/1280x854/cdn0.vox-cdn.com/uploads/chorus_image/image/46147742/cute-success-kid-1920x1080.0.0.jpg
THAT’S IT.
NOW GO KICK SOME ASS!
Source:	https://cdn2.vox-cdn.com/thumbor/J9OqPYS7FgI9fjGhnF7AFh8foVY=/148x0:1768x1080/1280x854/cdn0.vox-cdn.com/uploads/chorus_image/image/46147742/cute-success-kid-1920x1080.0.0.jpg
THAT’S IT.
NOW GO KICK SOME ASS!
Questions?
@bjschrijver
Thanks for your time.
Got feedback? Tweet it!
All pictures belong
to their respective
authors
@bjschrijver
33
Continuous Delivery & DevOps
sound great, but it won’t work here…
“
”
Photo:	Dave	Lehl,	text	source:	Jez	Humble
“CD & DevOps won’t work here”
• Stated reasons:
• we’re regulated
• we’re not building
websites
• too much legacy
• our people are too
stupid
• Actual reasons:
• our culture stinks
• our architecture
stinks
Photo:	Dave	Lehl,	text	source:	Jez	Humble
Source: talk by Jez Humble
https://www.youtube.com/watch?v=837Z_oehhRg
36
37
• Agile software development
• Building the right thing
• Building the thing right
• You build it, you run it
• Cross functional teams
• Room to experiment, room for failure
Culture & organisation
Source:	http://kids.nationalgeographic.com/explore/countries/netherlands/#netherlands-tulip-fields.jpg
• Version control
• Branching strategy
• Database changes
• Design for failure
• Feature toggles
• Automated provisioning
Design & architecture
• Pipeline: 

An automated sequence of stages to deliver software
from version control to your users.
• Build pipeline
• Deployment pipeline
Build & deploy
Source:	http://autoexpert.com.au/buying-a-car/understanding-towing-and-load-limits-for-suvs-and-utes
NFR’s: requirements that, when not met, make the system non-functional.
• Testing strategy
• Test automation
• Non functional requirements
• Security
• Performance
• Verify expected business value
Test & verification
• Static code analysis
• Traceable pipelines
• Automatic change logs
• Usage metrics
• Dynamic dashboards
• Data driven decisions, act on metrics
• Fix problems before the users notice
Information & reporting
Source:	http://www.nasa.gov/images/content/218652main_STOCC_FS_img_lg.jpg
Why should I do all this?
Why CD & DevOps?
• Reducing errors
• Lowering stress
• Empowering teams
• Deployment flexibility
• Practice makes perfect
Source:	https://7216-presscdn-0-76-pagely.netdna-ssl.com/wp-content/uploads/2011/12/confused-man-single-good-men.jpg
Where do I get started?
…said no product manager ever.
J. Paul Reed
Let’s spend the next few months..
..working on automated testing and build/release
infrastructure, and redesigning how our application is
written. We can postpone our feature development.
“
”
Take one thing you’re pretty
sure you can improve.
Start small
Tackle the next issue
and keep improving!
Iterate
Approach
How to spark change
When done, share the results
with your team.
Celebrate!
Show results
@bjschrijver
CD patterns & anti-patterns
Continuous Delivery without DevOps
Anti-pattern
Pattern or anti-pattern?
Uniform build pipelines
Anti-pattern
Pattern
Pattern or anti-pattern?
Long-running pipelines
Anti-pattern
Pattern or anti-pattern?
Obsess on test automation
Pattern
Pattern or anti-pattern?
Logging and metrics for ops only
Anti-pattern
Pattern or anti-pattern?
Obsess on feedback loops
Pattern
Pattern or anti-pattern?
Manual steps in a delivery pipeline
Anti-pattern
Pattern
Pattern or anti-pattern?
Long living branches
Anti-pattern
Pattern or anti-pattern?
Design for failure
Pattern
Pattern or anti-pattern?
Separate deployment from release
Pattern
Pattern or anti-pattern?
Automate database changes
Pattern
Pattern or anti-pattern?
Testing NFR’s in the build pipeline
Pattern
Pattern or anti-pattern?
Software delivery in the old days…
WORKED FINE IN DEV
OPS PROBLEM NOW
Continuous Delivery vs. DevOps
a repeatable, reliable process
for releasing software
What is the goal of CD?
Ingredients
03
Build & deploy
Information & reporting
05
Design & architecture
02
Culture & organisation
01
Test & verification
04
of Continuous Delivery
@bjschrijver

Software architecture in a DevOps world