adam boczek 2013 bitkom software summit agile architecture v1.3

Post on 12-Jul-2015

835 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

AGILEARCHITECTURE

Adam Boczek

@nativeagile

@codecentric

BITKOM Software Summit 2013 | Frankfurt am Main | Germany

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

Adam BoczekAgile Coach | Enterprise Architect

xing.com/profiles/Adam_Boczek

@nativeagile

adam.boczek@codecentric.de

http://codecentric.de

@codecentric

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

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

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)

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

FLEXIBLESTRUCTURE

AGILE ARCHITECTURE

FLEXIBLESTRUCTUREORBEHAVIOR?

AGILE ARCHITECTURE

FLEXIBLESTRUCTUREANDBEHAVIOR.

AGILE ARCHITECTURE

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

FLEXIBLE STRUCTURE

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

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

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.

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

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

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

SCALING OUTSTRATEGY*

AGILE ARCHITECTURE IS CLOUD-ORIENTED

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

RUNNING THE APPLICATION ON MANY HOSTS

SCALING UPSTRATEGY

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

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

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

* 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

AGILE ARCHITECTURE SUPPORTS:� 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

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

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

SOFTWAREERROR DETECTIONANDSOFTWAREHEALING AGENTSMEANSELF-HEALINGSOFTWARE SYSTEMS

THE BEHAVIOR OF A SYSTEM THAT FOLLOWSAGILE ARCHITECTURE CAN BE CALLED

ARCHITECTURALINTELLIGENCE

ABILITY OF THE SYSTEMTO DIRECT, OPTIMIZE, AND HEAL

ITSELF

FLEXIBLESTRUCTUREANDBEHAVIOR.

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 BoczekAgile Coach | Enterprise Architect

xing.com/profiles/Adam_Boczek

@nativeagile

adam.boczek@codecentric.de

http://codecentric.de

@codecentric

top related