AGILE
ARCHITECTURE
Adam Boczek
@nativeagile
@codecentric
BITKOMSoftwareSummit2013 | FrankfurtamMain |Germany
AGILE ARCHITECTURE
OXYMORON?
CONTROLLED CHAOS
OPEN SECRET
DARK LIGHT
LIVING DEAD
. . .
Adam Boczek
Agile Coach | Enterprise Architect
xing.com/profiles/Adam_Boczek
@nativeagile
adam.boczek@codecentric.de
http://codecentric.de
@codecentric
https://www.xing.com/net/pri1f221ex/agilearchitecture
AGILITYINCORPORATES
THEIDEASOFFLEXIBILITY,BALANCE,ADAPTABILITY,
ANDCOORDINATIONUNDERONEUMBRELLA.
(WIKIPEDIA)
ARCHITECTUREREPRESENTS
THEFUNDAMENTALORGANIZATIONOFASYSTEM
EMBODIEDINITSCOMPONENTS,THEIRRELATIONSHIPSTOEACH
OTHER,ANDTOTHEENVIRONMENTANDTHEPRINCIPLESGUIDINGITS
DESIGNANDEVOLUTION.
(IEEE14712007)
ARCHITECTUREREPRESENTS
THESIGNIFICANTDESIGNDECISIONS
THATSHAPEA SYSTEM,WHERESIGNIFICANTISMEASUREDBYCOST
OFCHANGE.
(BOOCH2006)
FLEXIBLE
STRUCTURE
AGILE
ARCHITECTURE
FLEXIBLE
STRUCTURE
OR
BEHAVIOR?
AGILE
ARCHITECTURE
FLEXIBLE
STRUCTURE
AND
BEHAVIOR.
AGILE
ARCHITECTURE
AGILE ARCHITECTUREIS:
BUSINESS-CENTRIC
SIMPLE-AS-POSSIBLE
EVENT-DATA-DRIVEN
SINGLE-RESPONSIBILITY-BASED
CLOUD-ORIENTED
MULTI-PARADIGM
FLEXIBLE
STRUCTURE
CLEAN
ARCHITECTURE
AND DIP*
Enterprise BusinessRules
Application Business Rules
Interface Adapters
Frameworks & Drivers
Controllers
Ext. Interfaces
Processes
Entities
* Robert C. Martin (UncleBob),Dependency inversion principle
AGILE ARCHITECTURE IS
BUSINESS-CENTRIC
DOMAIN DRIVEN DESIGN*
AGILE ARCHITECTURE IS
BUSINESS-CENTRIC
Problem
Space
(Business)
Solution
Space
(IT)
* http://domainlanguage.com/ddd/
Agile Architecture
Ubiquitous
Language
Core and sub
domains
Bounded
contexts
Entities and
value objects
Aggregates
Factories and
repositories
Services and
modules
Domain Events Context Mapping
AGILE ARCHITECTURE IS
SIMPLE-AS-POSSIBLE
* http://simplearchitectures.blogspot.de/2011/10/sip-complexity-model.html
controlling complexity Through
Partitioning & Reduction
Subclasses of a partition should be constructed
with the synergistic equivalence relation.Complexity
NumberOf
theSystemStates dice are homomorphic representatives of variables in
software systems and paths inbusiness processes.
EVENT SOURCING
& BIG DATA
CAPTURE ALLCHANGESTOANAPPLICATION STATEAS A
SEQUENCE OFEVENTS*
* http://martinfowler.com/eaaDev/EventSourcing.html
Event Source
T1 | State 1
Event Source
T2 | State 2
Event Source
T3 | State 3
BIGData
Repository
Event T1 | State 1
Event T2 | State 2
Event T3 | State 3
AGILE ARCHITECTURE IS
EVENT-DATA-DRIVEN
PURE
LAYERING
AGILE ARCHITECTURE IS
SINGLE-RESPONSIBILITY-BASED
* MV* = MVP,MVC or MVVM
DOES ALL THE CLIENT JOB, MV*Presentation Layer
Business Layer
Persistence Layer
DOES ALL THE BUSINESS JOB
DOES ALL THE DB JOB
No businessstuff
No businessstuff
No Presentation stuff
CLEAN HYBRID
ARCHITECTURE
Ext. Interfaces
Entities
Controllers
Use Cases
Entities
Controllers
Use Cases
Entities
Controllers
Use Cases
Active Record CommandQuery
Responsibility
Segregation
DomainDriven
Design
AGILE ARCHITECTURE IS
SINGLE-RESPONSIBILITY-BASED
SCALING OUT
STRATEGY*
AGILE ARCHITECTURE IS
CLOUD-ORIENTED
* http://spacebug.com/scale-out-versus-scale-up-html/
RUNNING THE APPLICATION
ON MANY HOSTS
SCALING UP
STRATEGY
JAVASCRIPTONE LANGUAGEFITS ALL*
JavaScript is a prototype-based scripting language with
dynamic typing
and has
first-class functions.
It is a multi-paradigm language, supportingobject-oriented,
imperative, and functional programming styles.
Coding
Testing
Operating
* http://en.wikipedia.org/wiki/JavaScript
AGILE ARCHITECTURE IS
MULTI-PARADIGM
JSONONE FORMAT FITS ALL*
AGILE ARCHITECTURE IS
MULTI-PARADIGM
JSON or JavaScript Object Notation, is a text-based
open standarddesigned for
human-readable data interchange.
Derived from the JavaScript scriptinglanguage, JSON is a language for
representing simple data structures and associative arrays, called
objects.
Calling
Persisting
Transforming
* http://en.wikipedia.org/wiki/JSON
MEAN STACK (JAVASCRIPT & JSON)
NodeJSis an event-driven
I/O server-side JavaScript
environment basedon
Google’s V8 engine.
ExpressJS is a node.js web
application framework.
MongoDB is A superb No-SQL
database.
AngularJS is
framework to
create one-page
dynamic apps.
AGILE ARCHITECTURE IS
MULTI-PARADIGM
* MV* = MVP,MVC or MVVM
DOES ALL THE CLIENT JOB, MV*
ANGULARJS
Presentation Layer
Business Layer
Persistence Layer
DOES ALL THE BUSINESS JOB
NODEJS, EXPRESSJS
DOES ALL THE DB JOB
MONGODB
No businessstuff
No businessstuff
No Presentation stuff
MEAN STACK (JAVASCRIPT & JSON)
IN ACTION
AGILE ARCHITECTURESUPPORTS:
SELF-DIRECTING
SELF-OPTIMIZING
SELF-HEALING
FLEXIBLE
BEHAVIOR
HATEOAS/REST AGILE ARCHITECTURE
SUPPORTS
SELF-DIRECTING
Consumer IS Directing*
Producer/
Backend
var response = producer.foo();
if (response.status == X) {
producer.foo1();
} else {
producer.foo2();
};
Consumer/
Client
Hypermediaas the Engineof ApplicationState
Representationalstate transfer
RPC API
Producer is directing*
var response = producer.foo();
// next_foo() is foo1() or foo2()
// producer decides what is right
response.next_foo();
Consumer/
Client
Producer/
Backend
Rest HATEOAS
* Pseudo-source-code for demonstration purposesonly
LOAD BALANCER & CACHE
AGILE ARCHITECTURE
SUPPORTS
SELF-OPTIMIZING
QUERY OPTIMIZER
AGILE ARCHITECTURE
SUPPORTS
SELF-HEALING
The microcapsules release a healing agent when the
material is damaged*
* http://www.bbc.co.uk/news/science-environment-19781862
SELF-HEALING
MATERIALS
SOFTWARE
ERROR DETECTION
AND
SOFTWARE
HEALING AGENTS
MEAN
SELF-HEALING
SOFTWARE
SYSTEMS
THE BEHAVIOR OF A SYSTEM THAT FOLLOWS
AGILE ARCHITECTURE CAN BE CALLED
ARCHITECTURAL
INTELLIGENCE
ABILITY OF THE SYSTEM
TO DIRECT, OPTIMIZE, AND HEAL
ITSELF
FLEXIBLE
STRUCTURE
AND
BEHAVIOR.
AGILE
ARCHITECTURE
BUSINESS-CENTRIC
SIMPLE-AS-POSSIBLE
EVENT-DATA-DRIVEN
SINGLE-RESPONSIBILITY-BASED
CLOUD-ORIENTED
MULTI-PARADIGM
SELF-DIRECTING
SELF-OPTIMIZING
SELF-HEALING
https://www.xing.com/net/pri1f221ex/agilearchitecture
Adam Boczek
Agile Coach | Enterprise Architect
xing.com/profiles/Adam_Boczek
@nativeagile
adam.boczek@codecentric.de
http://codecentric.de
@codecentric

Adam boczek 2013 bitkom software summit agile architecture v1.3