Sunday, 13 December 2015

Agile Architecture == Reactive Manifesto


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?"
Problem:
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”
Reactive Manifesto

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