SlideShare a Scribd company logo
Software Architecture
for Innovation
Eberhard Wolff
Fellow innoQ
@ewolff
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,
relations among them, and
properties of both.
Software architecture of a system:
set of
structures
needed to reason about a system,
comprise
software elements,
relations among them, and
properties of 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
Continuous Delivery
eberhard.wolff@gmail.com - 68d9d9b46d11128addca-20160331114327-5878-1
http://continuous-delivery-buch.de/
Delivery Pipeline
Build Pipeline
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Many tests to minimize risk
Infrastructure automation
Fast Feedback
Jenkins + Build
Pipeline Plug In
Commit Stage
> Compile
> Unit Tests
> Static Code Analysis
> Result: binary or installer
Acceptance Tests
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
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
eberhard.wolff@gmail.com
firstname Eberhard
name Wolff
When the user registers
Then a customer with email
eberhard.wolff@gmail.com should exist
And no error should be reported
Capacity Tests
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Capacity Tests
> Automated
> Realistic scenario and data
> (Scaled-down) production-
like system
Explorative Tests
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Explorative Tests
> No strict test plan
> Focus on new features
> …unforeseen behavior
> Automation frees resources for manual testing
Release
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
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
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
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?
Microservice
http://microservices-buch.de/ http://microservices-book.com/
http://microservices-book.com/primer.html
FREE!!!!
Server Server
Microservice Definition
> Independent
deployment units
> E.g. process, VMs,
Docker containers
> Any technology
Micro
Service
Micro
Service
Components Collaborate
Micro
Service
Micro
Service
Link
Data Replication
REST
Messaging
Microservices support
Continuous Delivery!
Build Pipeline
ECommerce
System
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Microservices
ECommerce
System
3rd party
systems
Database
Microservices
3rd party
systems
Database
Order
Catalog
Billing
Search
Order
Billing
Customer
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
Microservice Pipeline
> Independent deployment
> Build pipeline per Microservice
> Small
> Easier to set up
> Simpler (3rd party systems)
> Faster Feedback: Less tests
Microservices enable
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
Deployment Monolith
Deployment Monolith
Stories
Coordinating Releases
Technical coordination
Add people until team
too large – what now?
Conway‘s Law
Architecture
copies
communication structures
of the organization
Microservices
> Team for each Microservice
> Team responsible for business features
> Ideal: Independent features
Microservices
Microservice
Stories
Microservice
Stories
Microservice
Stories
Order Billing Search
Release Release Release
Technical
coordination
Technical
coordination
Technical
coordination
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
Microservices enable
innovation by
self- organization
Self Organization
> Team can decide when to deploy into
production
> Team can decide on technologies
> Total freedom?
Microservices enable
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
> Microservices support Continuous Delivery
Microservices
> Microservices allow each team to create
new products
> …put them in production
> ...and see the effect on revenue
> …with little coordination
Microservices
> Microservices allow 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/
Thank You!
@ewolff

More Related Content

Software Architecture for Innovation