Software Architecture
for Innovation
Eberhard Wolff
Fellow innoQ
@ewolff
Slide 2
Slide 2 text
What is Innovation?
> New products and services on the market
> New sources of revenue
Slide 3
Slide 3 text
What is Innovation?
€
Slide 4
Slide 4 text
How does innovation
relate to software
architecture?
Slide 5
Slide 5 text
What is software
architecture?
Slide 6
Slide 6 text
Software architecture:
set of
structures
needed to reason about a system,
comprise
software elements,
relations among them, and
properties of both.
Slide 7
Slide 7 text
Software architecture of a system:
set of
structures
needed to reason about a system,
comprise
software elements,
relations among them, and
properties of both.
Slide 8
Slide 8 text
Software architecture
implements
desired quality attributes
with technological means
UI Tests: Selenium
> Easy to start
> Natural for testers
> Fragile
> Loose semantics
Slide 19
Slide 19 text
Behavior-driven
Scenario: User registers successfully
Context
Event
Expected
outcome
Given a new user with email
[email protected]
firstname Eberhard
name Wolff
When the user registers
Then a customer with email
[email protected] should exist
And no error should be reported
Release
> Automated!
> No manual change to any system
> Mitigate risk e.g. with Blue-green
> Two environments
> Install system on second in the background
Production
> Gather feedback
> …by monitoring
> ...and logging
> Does the software perform as expected?
Slide 28
Slide 28 text
Continuous Delivery
Software Production
Quick&
reliable
Feedback
Slide 29
Slide 29 text
CD & Innovation
> Make software easy to change
> …by putting it into production quickly
> ...and reliably
> Less risk
> Monitor success
> ...by logging and monitoring
Slide 30
Slide 30 text
Continuous Delivery is
one more tool to
achieve desired
quality attributes.
Slide 31
Slide 31 text
CD Quality Attributes
> Architecture must enable Continuous Delivery
> Easy to deploy & test
> Independent deployment
> Easy & fast Continuous Delivery Pipeline
Slide 32
Slide 32 text
Trading Quality
Software
Architecture
Continuous
Delivery
Provide easy
to deployment
Provide
changeability
Slide 33
Slide 33 text
What Software
Architecture supports
Continuous Delivery?
Server Server
Microservice Definition
> Independent
deployment units
> E.g. process, VMs,
Docker containers
> Any technology
Micro
Service
Micro
Service
Slide 38
Slide 38 text
Components Collaborate
Micro
Service
Micro
Service
Link
Data Replication
REST
Messaging
Microservice Pipeline
> Independent deployment
> Build pipeline per Microservice
> Small
> Easier to set up
> Simpler (3rd party systems)
> Faster Feedback: Less tests
Slide 45
Slide 45 text
Microservices enable
innovation by
Scaling Agile
Slide 46
Slide 46 text
Agility
> Put software out quickly
> …by implementing stories
> Measure success
> Provide feedback for next iteration
> Hard to do for large applications
Team can deploy without integration
Changes can be deployed independently & quickly
One or many Microservices per Team
Synergy Microservices / Conway’s Law
Order Search
Billing
Order Billing Search
Technology decisions per team
Slide 53
Slide 53 text
Microservices enable
innovation by
self- organization
Slide 54
Slide 54 text
Self Organization
> Team can decide when to deploy into
production
> Team can decide on technologies
> Total freedom?
Slide 55
Slide 55 text
Microservices enable
innovation by
delegating technical
decision to teams
Slide 56
Slide 56 text
Conclusion
Slide 57
Slide 57 text
There are other ways
to make software
easily changeable.
Slide 58
Slide 58 text
Continuous Delivery
> Continuous Delivery allows to put out new
features quickly
> ...and measure success
> Microservices support Continuous Delivery
Slide 59
Slide 59 text
Microservices
> Microservices allow each team to create
new products
> …put them in production
> ...and see the effect on revenue
> …with little coordination
Slide 60
Slide 60 text
Microservices
> Microservices allow to do experiments
> ...and remove failed experiments
> Even with new or different technologies!
Slide 61
Slide 61 text
Not new!
> Amazon 2006
> Teams
> …build business services
> …operate them
> ...foundation: Amazon Cloud
> ...(i.e. virtual machines)
> Microservices + DevOps + Continuous Delivery
Slide 62
Slide 62 text
Not radical!
> Developer Anarchy is the radical approach.
> No management
> Programmers driven by business KPIs
(Key Performance Indicators)
> http://www.se-radio.net/2016/03/se-radio-
episode-253-fred-george-on-developer-
anarchy/