Architecture

Architecture without documentation is incomplete

17 October 2020

Designing good architecture is only half the battle. You also need to be able to communicate your architecture to anybody who is likely to use it.

“Goldilocks” governance and agile architecture: balancing team autonomy and alignment

24 August 2020

There can be a tension between the lean, experimental nature of agile development and the more deliberate, planned demands of a large organisation. It does not have to be like this.

What we talk about when we talk about “legacy” systems

22 July 2020

“Legacy” is often used a pejorative term to describe any long-lived code base that a development team finds distasteful to work with. What do we really mean by “legacy” and how should we be dealing with it?

Naming things is easy. Abstraction is much harder.

13 June 2020

One of the more pervasive myths in software development is that naming things is hard.

Do you really need Kubernetes?

22 April 2020

If you are working with a lot of twelve-factor services then probably, yes. That said, you may get a creeping feeling that Kubernetes was designed to solve problems at a scale that most people never reach…?

If “Enterprise Architecture” is failing, what should architects be doing instead?

11 March 2020

The discipline of architecture is an important part of any efficient engineering organisation. It just needs to adapt its game from the process-orientated “Enterprise Architecture” of old to something more collaborative and relevant.

When is an event not an event?

8 February 2020

Message design in an event-driven architecture can be quite nuanced, especially if you want to achieve any of the benefits of loose coupling that they can be associated with.

When should you write your own message endpoint library?

14 December 2019

Enterprise messaging patterns are complex beasts that often warrant a common implementation across your endpoints. Should you ever be tempted to roll your own?

There's more to publishing external APIs than choosing an API management vendor

17 November 2019

Publishing a public API involves many considerations, from billing and metering through to documentation and on-boarding. These are likely to be addressed through a collection of solutions rather than a single all-singing, all-dancing API management platform.

Splitting up shared databases

6 October 2019

The problem of shared databases is not confined to monolithic systems. A big store of shared state is the guilty secret lurking in many a microservice architecture.

Does code quality matter? Using SonarQube with legacy code bases

22 July 2019

Attempts at SonarQube adoption often fail to gain traction with development teams. The concern is that it presents a view of code quality that is not relevant to the problems teams face on a day-to-day basis. Does it measure the wrong thing?

Azure Data Factory and the myth of the code-free data warehouse

4 July 2019

Azure Data Factory has been much improved with the addition of data flows, but it suffers from some familiar integration platform shortcomings. The claim of enabling a “code free” warehouse may be pushing things a bit.

Machine learning models in production: the maths is the easy part

15 May 2019

There is often too much focus on the research aspects of machine learning. When you’re putting models into production, the maths is only part of the system.

Why is loose coupling between services so important?

14 April 2019

You can’t eliminate coupling between collaborating services, but you can ensure that it doesn’t prevent you from enjoying the benefits of service-based development.

Should teams choose their own languages and tools?

24 February 2019

Standardisation does have a place, but it should be reserved for infrastructure and collaboration rather than languages and tools.