agile architecture v2.0 bitkom software summit 2013

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

Upload: adam-boczek

Post on 13-May-2015

1.390 views

Category:

Technology


0 download

DESCRIPTION

This presentation is a second version of my talk about Agile Architecture. Comparing to the first version (also available at slideshare) it contains significant more information about elements that comprise Agile Architecture, focusing on its structure and behavior. We at codecentric, as a technically focused agile organization, get in our projects quite often confronted with the assessment of a customer’s software architecture, or more precisely with the assessment of the existing solution architecture. In many cases it is ok for us to stay in this technical scope and not to touch other, much wider architectural concepts like e.g. enterprise architecture. However, due to the fact, that more and more organizations want to transform to a more agile organization, the alignment between IT and Business, and thus between IT-architecture and Business-architecture becomes much more relevant for us in our projects than in the past and causes many questions to arise. Can we talk in this context about agile architecture? And if so, is it a model of a system or maybe just a process of creating it? Or maybe both? How long can I delay my architectural decisions? Can I refactor my agile architecture? And so on… In this talk I won’t give you perfect answers to all these questions, however I’m pretty sure I will open your eyes and let you create your own point of view. In Unternehmen wird von der IT immer mehr gefordert, einen Wertbeitrag zu leisten. Dahinter steckt der verständliche Wunsch, flexibler, schneller und messbarer zum geschäftlichen Erfolg beizutragen. Wie gut sind wir, Architekten und Entwickler, gerüstet, diesem Wunsch Folge zu tragen? Wie gut können unsere Systeme diese neuen, sehr oft revolutionären oder sogar disruptiven Anforderungen unterstützen? Unsere Entwicklungsprozesse sind bereits agil. Unsere Entwicklerwerkzeuge sind anspruchsvoll, qualitativ hochwertig und ausgereift. Wie ist aber unsere IT-Architektur? Spiegelt diese die Geschäftsarchitektur eines Unternehmens tatsächlich wieder oder sind die beiden Welten komplett voneinander getrennt? Wie kann eine geschäftskonforme IT-Architektur entwickelt werden? Wie kann eine bestehende IT-Architektur ggf. angepasst werden? Können wir über eine flexible oder sogar eine “Agile Architektur” reden? Und wenn ja, in welchem Kontext? Ist eine agile Architektur nur ein agiler Design-Prozess? Kann eine existierende Architektur “refactored” werden? Kann die Agilität in ein System „eingebaut“ werden? Kann sich ein System auf architektonischer Ebene agil verhalten? In diesem Talk möchten wir über die o.g. Fragestellungen diskutieren. Basierend auf den von dem Vortragenden in den letzten Monaten durchgeführten Projekten werden mögliche Konzepte, Strategien und Lösungen für eine „Agile Architektur Transition“ in einem Unternehmen dargestellt.

TRANSCRIPT

Page 1: Agile Architecture v2.0 BITKOM Software Summit 2013

AGILEARCHITECTURE

Adam Boczek

@nativeagile

@codecentric

BITKOM Software Summit 2013 | Frankfurt am Main | Germany

Page 2: Agile Architecture v2.0 BITKOM Software Summit 2013

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

Page 3: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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

Page 5: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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

Page 7: Agile Architecture v2.0 BITKOM Software Summit 2013

FLEXIBLESTRUCTURE

AGILE ARCHITECTURE

Page 8: Agile Architecture v2.0 BITKOM Software Summit 2013

FLEXIBLESTRUCTUREORBEHAVIOR?

AGILE ARCHITECTURE

Page 9: Agile Architecture v2.0 BITKOM Software Summit 2013

FLEXIBLESTRUCTUREANDBEHAVIOR.

AGILE ARCHITECTURE

Page 10: Agile Architecture v2.0 BITKOM Software Summit 2013

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

FLEXIBLE STRUCTURE

Page 11: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

* 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: Agile Architecture v2.0 BITKOM Software Summit 2013

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

FLEXIBLE BEHAVIOR

Page 23: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

LOAD BALANCER & CACHE

AGILE ARCHITECTURE SUPPORTS SELF-OPTIMIZING

QUERY OPTIMIZER

Page 25: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

THE BEHAVIOR OF A SYSTEM THAT FOLLOWSAGILE ARCHITECTURE CAN BE CALLED

ARCHITECTURALINTELLIGENCE

ABILITY OF THE SYSTEMTO DIRECT, OPTIMIZE, AND HEAL

ITSELF

Page 27: Agile Architecture v2.0 BITKOM Software Summit 2013

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: Agile Architecture v2.0 BITKOM Software Summit 2013

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

Adam BoczekAgile Coach | Enterprise Architect

xing.com/profiles/Adam_Boczek

@nativeagile

[email protected]

http://codecentric.de

@codecentric