What is Innovation?
>New products and services on the market
>New sources of revenue
What is Innovation?
€
How does innovation
relate to software
architecture?
What is software
architecture?
Software architecture:
set of
structures
needed to reason about a system,
comprise
software elements,
relationsamong them, and
propertiesof both.
Software architecture of a system:
set of
structures
needed to reason about a system,
comprise
software elements,
relationsamong them, and
propertiesof both.
Software architecture
implements
desired quality attributes
with technological means
Enable innovation…
>Easy to change software
>Measuring success (i.e. revenue)
Changeable software
>Holy grail ever of software development
>Through clean architecture
>Good code quality
UI Tests: Selenium
>Easy to start
>Natural for testers
>Fragile
>Loose semantics
Behavior-driven
Scenario: User registers successfully
Context
Event
Expected
outcome
Given a new user with email [email protected]
firstnameEberhard
name Wolff
When the user registers
Then a customer with email [email protected] exist
And no error should be reported
Production
>Gather feedback
>…by monitoring
>...and logging
>Does the software perform as expected?
Continuous Delivery
Software Production
Quick&
reliable
Feedback
CD & Innovation
>Make software easy to change
>…by putting it into production quickly
>...and reliably
>Less risk
>Monitor success
>...by logging and monitoring
Continuous Delivery is
one more tool to
achieve desired
quality attributes.
CD Quality Attributes
>Architecture must enable Continuous Delivery
>Easy to deploy & test
>Independent deployment
>Easy & fast Continuous Delivery Pipeline
Trading Quality
Software
Architecture
Continuous
Delivery
Provide easy
to deployment
Provide
changeability
What Software
Architecture supports
Continuous Delivery?
MicroservicePipeline
>Independent deployment
>Build pipeline per Microservice
>Small
>Easier to set up
>Simpler (3
rd
party systems)
>Faster Feedback: Less tests
Microservicesenable
innovation by
Scaling Agile
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 SearchBilling
Order Billing Search
Technology decisions per team
Microservicesenable
innovation by
self-organization
Self Organization
>Team can decide when to deploy into
production
>Team can decide on technologies
>Total freedom?
Microservicesenable
innovation by
delegating technical
decision to teams
Conclusion
There are other ways
to make software
easily changeable.
Continuous Delivery
>Continuous Delivery allows to put out new
features quickly
>...and measure success
>Microservicessupport Continuous Delivery
Microservices
>Microservicesallow each team to create
new products
>…put them in production
>...and see the effect on revenue
>…with little coordination
Microservices
>Microservicesallow to do experiments
>...and remove failed experiments
>Even with new or different technologies!
Not new!
>Amazon 2006
>Teams
>…build business services
>…operate them
>...foundation: Amazon Cloud
>...(i.e. virtual machines)
>Microservices + DevOps + Continuous Delivery
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/