11. 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
12. 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
13. 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.
14. 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
15. 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
17. 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
18. 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
19. 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
20. 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
21. * 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
23. 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
25. 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
26. THE BEHAVIOR OF A SYSTEM THAT FOLLOWS
AGILE ARCHITECTURE CAN BE CALLED
ARCHITECTURAL
INTELLIGENCE
ABILITY OF THE SYSTEM
TO DIRECT, OPTIMIZE, AND HEAL
ITSELF