Adam boczek 2013 bitkom software summit agile architecture v1.3

28
AGILE ARCHITECTURE Adam Boczek @nativeagile @codecentric BITKOM Software Summit 2013 | Frankfurt am Main | Germany

Transcript of Adam boczek 2013 bitkom software summit agile architecture v1.3

Page 1: Adam boczek 2013 bitkom software summit agile architecture v1.3

AGILEARCHITECTURE

Adam Boczek

@nativeagile

@codecentric

BITKOM Software Summit 2013 | Frankfurt am Main | Germany

Page 2: Adam boczek 2013 bitkom software summit agile architecture v1.3

AGILE ARCHITECTUREOXYMORON?� CONTROLLED CHAOS� OPEN SECRET� DARK LIGHT� LIVING DEAD� . . .

Page 3: Adam boczek 2013 bitkom software summit agile architecture v1.3

Adam BoczekAgile Coach | Enterprise Architect

xing.com/profiles/Adam_Boczek

@nativeagile

[email protected]

http://codecentric.de

@codecentric

https://www.xing.com/net/pri1f221ex/agilearchitecture

Page 4: Adam boczek 2013 bitkom software summit agile architecture v1.3

AGILITY INCORPORATESTHE IDEAS OF FLEXIBILITY, BALANCE, ADAPTABILITY, AND COORDINATION UNDER ONE UMBRELLA.(WIKIPEDIA)

Page 5: Adam boczek 2013 bitkom software summit agile architecture v1.3

ARCHITECTURE REPRESENTSTHE FUNDAMENTAL ORGANIZATION OF A SYSTEM EMBODIED IN ITS COMPONENTS, THEIR RELATIONSHIPS TO EACH OTHER, AND TO THE ENVIRONMENT AND THE PRINCIPLES GUIDING ITS DESIGN AND EVOLUTION. (IEEE1471 2007)

Page 6: Adam boczek 2013 bitkom software summit agile architecture v1.3

ARCHITECTURE REPRESENTS THE SIGNIFICANT DESIGN DECISIONSTHAT SHAPE A SYSTEM, WHERE SIGNIFICANT IS MEASURED BY COST OF CHANGE. (BOOCH 2006)

Page 7: Adam boczek 2013 bitkom software summit agile architecture v1.3

FLEXIBLESTRUCTURE

AGILE ARCHITECTURE

Page 8: Adam boczek 2013 bitkom software summit agile architecture v1.3

FLEXIBLESTRUCTUREORBEHAVIOR?

AGILE ARCHITECTURE

Page 9: Adam boczek 2013 bitkom software summit agile architecture v1.3

FLEXIBLESTRUCTUREANDBEHAVIOR.

AGILE ARCHITECTURE

Page 10: Adam boczek 2013 bitkom software summit agile architecture v1.3

AGILE ARCHITECTURE IS:� BUSINESS-CENTRIC� SIMPLE-AS-POSSIBLE� EVENT-DATA-DRIVEN � SINGLE-RESPONSIBILITY-BASED� CLOUD-ORIENTED�MULTI-PARADIGM

FLEXIBLE STRUCTURE

Page 11: Adam boczek 2013 bitkom software summit agile architecture v1.3

CLEANARCHITECTURE AND DIP*

Enterprise Business Rules

Application Business Rules

Interface Adapters

Frameworks & DriversControllers

Ext. Interfaces

Processes

Entities

* Robert C. Martin (Uncle Bob), Dependency inversion principle

AGILE ARCHITECTURE ISBUSINESS-CENTRIC

Page 12: Adam boczek 2013 bitkom software summit agile architecture v1.3

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 objectsAggregates

Factories and

repositories

Services and

modulesDomain Events Context Mapping

Page 13: Adam boczek 2013 bitkom software summit agile architecture v1.3

AGILE ARCHITECTURE IS SIMPLE-AS-POSSIBLE

* http://simplearchitectures.blogspot.de/2011/10/sip-complexity-model.html

controlling complexity Through

Partitioning & ReductionSubclasses of a partition should be constructed

with the synergistic equivalence relation.Complexity

Number Of

the System States dice are homomorphic representatives of variables in

software systems and paths in business processes.

Page 14: Adam boczek 2013 bitkom software summit agile architecture v1.3

EVENT SOURCING & BIG DATACAPTURE ALL CHANGES TO AN APPLICATION STATE AS A SEQUENCE OF EVENTS*

* http://martinfowler.com/eaaDev/EventSourcing.html

Event Source

T1 | State 1

Event Source

T2 | State 2

Event Source

T3 | State 3

BIG Data

RepositoryEvent T1 | State 1

Event T2 | State 2

Event T3 | State 3

AGILE ARCHITECTURE IS EVENT-DATA-DRIVEN

Page 15: Adam boczek 2013 bitkom software summit agile architecture v1.3

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 business stuff

No business stuff

No Presentation stuff

Page 16: Adam boczek 2013 bitkom software summit agile architecture v1.3

CLEAN HYBRIDARCHITECTURE

Ext. Interfaces

Entities

Controllers

Use Cases

Entities

Controllers

Use Cases

Entities

Controllers

Use Cases

Active Record Command Query Responsibility Segregation

Domain DrivenDesign

AGILE ARCHITECTURE IS SINGLE-RESPONSIBILITY-BASED

Page 17: Adam boczek 2013 bitkom software summit agile architecture v1.3

SCALING OUTSTRATEGY*

AGILE ARCHITECTURE IS CLOUD-ORIENTED

* http://spacebug.com/scale-out-versus-scale-up-html/

RUNNING THE APPLICATION ON MANY HOSTS

SCALING UPSTRATEGY

Page 18: Adam boczek 2013 bitkom software summit agile architecture v1.3

JAVASCRIPTONE LANGUAGE FITS ALL*

JavaScript is a prototype-based scripting language with

dynamic typing and has

first-class functions.

It is a multi-paradigm language, supporting object-oriented,

imperative, and functional programming styles.

�Coding

�Testing

�Operating

* http://en.wikipedia.org/wiki/JavaScript

AGILE ARCHITECTURE IS MULTI-PARADIGM

Page 19: Adam boczek 2013 bitkom software summit agile architecture v1.3

JSONONE FORMAT FITS ALL*

AGILE ARCHITECTURE IS MULTI-PARADIGM

JSON or JavaScript Object Notation, is a text-based

open standard designed for

human-readable data interchange.

Derived from the JavaScript scripting language, JSON is a language for

representing simple data structures and associative arrays, called

objects.

�Calling

�Persisting

�Transforming

* http://en.wikipedia.org/wiki/JSON

Page 20: Adam boczek 2013 bitkom software summit agile architecture v1.3

MEAN STACK (JAVASCRIPT & JSON)

NodeJS is an event-driven

I/O server-side JavaScript

environment based on

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

Page 21: Adam boczek 2013 bitkom software summit agile architecture v1.3

* 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 business stuff

No business stuff

No Presentation stuff

MEAN STACK (JAVASCRIPT & JSON)IN ACTION

Page 22: Adam boczek 2013 bitkom software summit agile architecture v1.3

AGILE ARCHITECTURE SUPPORTS:� SELF-DIRECTING� SELF-OPTIMIZING� SELF-HEALING

FLEXIBLE BEHAVIOR

Page 23: Adam boczek 2013 bitkom software summit agile architecture v1.3

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

Hypermedia as the Engine of Application State

Representational state transfer

RPC API

Producer is directing*

var response = producer.foo();

// next_foo() is foo1() or foo2()// producer decides what is rightresponse.next_foo();

Consumer/

Client

Producer/

Backend

Rest HATEOAS

* Pseudo-source-code for demonstration purposes only

Page 24: Adam boczek 2013 bitkom software summit agile architecture v1.3

LOAD BALANCER & CACHE

AGILE ARCHITECTURE SUPPORTS SELF-OPTIMIZING

QUERY OPTIMIZER

Page 25: Adam boczek 2013 bitkom software summit agile architecture v1.3

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-HEALINGMATERIALS

SOFTWAREERROR DETECTIONANDSOFTWAREHEALING AGENTSMEANSELF-HEALINGSOFTWARE SYSTEMS

Page 26: Adam boczek 2013 bitkom software summit agile architecture v1.3

THE BEHAVIOR OF A SYSTEM THAT FOLLOWSAGILE ARCHITECTURE CAN BE CALLED

ARCHITECTURALINTELLIGENCE

ABILITY OF THE SYSTEMTO DIRECT, OPTIMIZE, AND HEAL

ITSELF

Page 27: Adam boczek 2013 bitkom software summit agile architecture v1.3

FLEXIBLESTRUCTUREANDBEHAVIOR.

AGILE ARCHITECTURE

� BUSINESS-CENTRIC

� SIMPLE-AS-POSSIBLE

� EVENT-DATA-DRIVEN

� SINGLE-RESPONSIBILITY-BASED

� CLOUD-ORIENTED

�MULTI-PARADIGM

� SELF-DIRECTING

� SELF-OPTIMIZING

� SELF-HEALING

Page 28: Adam boczek 2013 bitkom software summit agile architecture v1.3

https://www.xing.com/net/pri1f221ex/agilearchitecture

Adam BoczekAgile Coach | Enterprise Architect

xing.com/profiles/Adam_Boczek

@nativeagile

[email protected]

http://codecentric.de

@codecentric