Scope:
These days the Agile
label is passed around like the peace pipe. Therefore this article answers the question:
"Is Agile Architecture just another marketing exercise on the Agile band wagon? Or does it really exist? And if so, what is it?"
We want to be Agile.
Everyone is at it. However we would also like our Architecture to be
Agile too.
But what is meant by Agile Architecture?
It seems most people
miss-represent it as a flexible process towards Architecture
delivery. Or just modelling the process in a using established design techniques. In other words how people should do it, rather than what it
actually is.
This is why a lot of
people talk about how Architecture can live and work with the Agile
team, rather than what Architecture an Agile team should be
actually be delivering.
From the Agile community here are some examples of Process, Design and Modelling masquerading as Agile Architecture in the How rather than the What:
Process Examples:
SAFe Agile Architecture [1], Agile Architect website [2], Agile Architecture Process presentation [3], Agile and TOGAF [4].
Design/Modelling:
Disciplined Agile Framework (formally DAD) [5] and presentations on Agile Design [6], more Agile Architecture with Design Modelling [7].
Agile Modelling Method [7] |
All this does not
tell us what it is. We need a definition of what an Agile
Architecture should be, before we wonder how to do it.
Solution:
Luckily this has
been done for us. In July 2013 several industry
veterans (most notably from the company Typesafe) got together to
publish a document called the Reactive Manifesto [7].
“We believe that a coherent approach to systems architecture is needed, and we believe that all necessary aspects are already recognised individually: we want systems that are Responsive, Resilient, Elastic and Message Driven. We call these Reactive Systems.”
I shall leave the
reader to explore the Reactive Manifesto further, but rather than
visit all of the areas within it, it now becomes clear that this not
just a manifesto but an architectural approach. TypeSafe on their blog [8] themselves
state it as well:
“we believe it is the architecture for the future” and also ....
“to become the default way of writing applications in the future”
Agile Link:
Then the question
becomes is it an Agile Architectural approach?
Reviewing the Reactive Manifesto areas for agility we can directly relate them to the Agile Manifesto [9] like so:
Responsive:
“builds end user confidence, and encourages further interaction”
is aligned to the
Agile manifesto like so: “Customer collaboration”
Resilient:
“parts of the system can fail and recover without compromising the system as a whole”
is aligned to the
Agile manifesto like so: “Working software”
Elastic:
“can react to changes”
is aligned to the
Agile manifesto like so: “Responding to change”
Message Driven:
“communication allows recipients to only consume resources while active”
is aligned to the
Agile manifesto like so: "Individuals and
interactions"
As is the Agile way it has evolved to next version with this Blog entry on the next version 2.0 [10] of the Reactive Manifesto.
Thus it has evolved
through iteration just like my poster and this is why since version
3.1 of my Agile Development Poster [11] the Reactive label has been added as part of the
Strategy section.
It is clear to me
that the Reactive Manifesto is what Agile Architecture really is. Hence the title of this blog post.
As is the case with Agile now we know the What, how you
implement the Agile Architecture is up to you.
References:
[1] SAFe Agile Architecture: http://www.scaledagileframework.com/agile-architecture/
[2] Agile Architect: http://www.agilearchitect.org/agile/principles.htm
[3] Process Presentation: http://www.slideshare.net/raffaeu/software-architecture-in-an-agile-environment?qid=c0778b47-
[4] Agile and TOGAF: http://www.slideshare.net/dannygreefhorst/agile-togaf-and-enterprise-architecture-will-they-blend
[5] DA Modelling: http://www.agilemodeling.com/
[6] Agile Design: https://agiledogma.blogspot.co.uk/2014/04/agile-development-poster-there-are.html
[7] Reactive Manifesto: http://www.reactivemanifesto.org/
[8] TypeSafe Blog: https://www.typesafe.com/blog/why_do_we_need_a_reactive_manifesto%3F
[9] Agile Manifesto: http://www.agilemanifesto.org/
[10] Reactive Manifesto 2.0 Blog: https://www.typesafe.com/blog/reactive-manifesto-20
[11] Agile Development Poster: https://agiledogma.blogspot.co.uk/2014/04/agile-development-poster-there-are.html
[2] Agile Architect: http://www.agilearchitect.org/agile/principles.htm
[3] Process Presentation: http://www.slideshare.net/raffaeu/software-architecture-in-an-agile-environment?qid=c0778b47-
[4] Agile and TOGAF: http://www.slideshare.net/dannygreefhorst/agile-togaf-and-enterprise-architecture-will-they-blend
[5] DA Modelling: http://www.agilemodeling.com/
[6] Agile Design: https://agiledogma.blogspot.co.uk/2014/04/agile-development-poster-there-are.html
[7] Reactive Manifesto: http://www.reactivemanifesto.org/
[8] TypeSafe Blog: https://www.typesafe.com/blog/why_do_we_need_a_reactive_manifesto%3F
[9] Agile Manifesto: http://www.agilemanifesto.org/
[10] Reactive Manifesto 2.0 Blog: https://www.typesafe.com/blog/reactive-manifesto-20
[11] Agile Development Poster: https://agiledogma.blogspot.co.uk/2014/04/agile-development-poster-there-are.html