April 22nd, 2020

Do you really need Kubernetes?

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…?

March 11th, 2020

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

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.

February 19th, 2020

Don’t use test coverage as a target

Code coverage can be a useful technique for discovering untested parts of your code base, but it makes for a useless target.

February 8th, 2020

When is an event not an event?

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.

January 26th, 2020

Running “serverless” containers in AWS Fargate, Google Cloud Run and Azure

“Serverless” containers could help you to avoid the complexity of Kubernetes, but you may struggle to leverage them for anything beyond small, predictable workloads or batch jobs.

December 14th, 2019

When should you write your own message endpoint library?

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

November 17th, 2019

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

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.

October 28th, 2019

Using Azure Data Factory with the Application Insights REST API

Persisting aggregates of AppInsights data in a warehouse can be a useful means of distributing summary information or retaining monitoring data over the long term. You can automate the harvesting of these aggregates using Azure Data Factory.

October 6th, 2019

Splitting up shared databases

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.

September 9th, 2019

Why trunk-based development isn’t for everybody

There’s more to adopting trunk-based development than deciding to shun long-lived branches. You need a confident development team, a loosely coupled code base and efficient build automation to make it stick.

August 12th, 2019

Agile metrics. You get what you measure. In a bad way.

Agile process tends not to generate the kind of metrics that management teams feed on. Should this be a problem?

July 22nd, 2019

Does “code quality” matter? Using SonarQube with legacy code bases

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?

July 4th, 2019

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

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.

June 22nd, 2019

Monorepos. For when life isn’t already complicated enough.

Many of the apparent benefits of monorepos can be realised through improvements in engineering culture and architecture rather than adopting a specific approach to source code storage.

June 8th, 2019

The case against maturity models

Maturity models are a popular way of looking at development challenges. The problem is that they are an arbitrary and inflexible tool and they tend to encourage the wrong mindset.