Architecture

Layers, onions, hexagons and the folly of application-wide abstractions

3 June 2018

Not only are layered applications difficult to maintain, but the common abstractions they are built on tend to give rise to inflexible implementations that have serious scalability challenges.

How to decompose that monolith into microservices. Gently does it…

8 May 2018

You’re rarely given the opportunity to focus on transitioning an architecture to the exclusion of everything else. You may have to get used to the idea that decomposing a monolith is a direction of travel rather than a clear destination.

Microservice preconditions: what needs to be in place before you decompose that monolith...

9 March 2018

One of the main benefits of microservices is that they reduce the cost of change. The problem is that you need to make a significant up-front investment to realise this saving. Your first few microservices are more likely to be an expensive and potentially painful undertaking.

Relax. There’s no conflict between architecture and agile.

16 February 2018

Agile teams still need to make architecture decisions, but in supporting them architects should seek “just enough” architecture over “big design up front” and practical solutions over large-scale abstract thinking.

Can TOGAF and Agile really go together?

27 January 2018

On the face of it, TOGAF describes a very different world to the agile preference for working software over documentation. That doesn’t mean that TOGAF is incompatible with agile, so long as you’re prepared to adapt its numerous building blocks.

Entity services: when microservices are worse than monoliths

13 December 2017

Finely-grained, entity-based services seem to be advocated by some pretty authoritative sources. This is unfortunate as they are something of an anti-pattern that can undermine many of the benefits of decomposing an monolith into micoservices.

Events, sagas and workflows: managing long-running processes between services

4 November 2017

An event-driven architecture can give rise to complex chains of events that are difficult to manage. These problems can be mitigated through careful design rather than resorting to shared state databases or workflow engines.

What should a Scaled Agile “architectural runway” look like?

12 October 2017

The Scaled Agile Framework talks about an “architectural runway” as the main deliverable for agile architecture, yet it’s vague on the detail of what this looks like.

How can Domain Driven Design help with large scale agile development?

20 September 2017

Agile teams spend time modelling software whether they are prepared to admit it or not. Adopting a technique like Domain Driven Design can help to make this more efficient, particularly at scale.

Can consumer-driven contracts manage breaking change in microservice integrations?

4 June 2017

One of the more enduring problems with service integration is managing change in service interfaces. Consumer-driven contracts can help to detect breaking changes, but this visibility comes at a price.

API management and the return of the enterprise service bus

16 May 2017

No self-respecting integration platform is complete without an API management story these days. Is this just a RESTful return of the enterprise service bus?

Architectural governance can be used to foster innovation. No, really.

3 April 2017

Governance doesn’t have to be all about byzantine process and suffocating approval boards. It can be used to provide clear permission for teams to innovate.

Why agile software architects should write code

28 January 2017

No architect will ever admit to being out of touch with software development. However, unless you are writing code then it’s difficult to avoid becoming an ivory tower or PowerPoint architect that can only discuss systems in the abstract.

Event stores and event sourcing: some practical disadvantages and problems

7 January 2017

Event stores and event sourcing are a powerful idea, but they can be vulnerable to a number of technical and operational challenges when faced with real world complexity.

Designing an event store for scalable event sourcing

29 July 2016

Event sourcing can scale very nicely, though this does depend on a number of key design decisions for the underlying event store.