My trade. Apparently. What is architecture anyway? I describe it as the wider context of solutions, data, protocols, technologies and standards and how they interact. Teams can do all this on their own, of course, but they tend to not have the necessary context, skills or experience to lead decisions in larger operations.

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.

Architecture patterns to support incremental change

24 May 2019

People tend to see architectural change as a big transactional effort, so if any mistakes are made they tend to be huge mistakes. It is better to focus on delivering smaller changes that can demonstrate incremental value.

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.

Finding service boundaries: more than just the bounded context

6 January 2019

When you are identifying service boundaries, it’s not enough to consider the domain model alone. There are other, more pragmatic concerns to bear in mind.

Writing ArchUnit style tests for .Net and C# to enforce architecture rules

27 November 2018

ArchUnit is a java library that provides a fluent API for creating self-testing architectures via unit tests. A similar library can be written for .Net Standard that acts on compiled assemblies rather than raw code.

Messaging anti-patterns in event-driven architecture

12 October 2018

Event-driven integration can improve the scalability, resilience and scalability of distributed applications… but this does depend on the design of your event messages…

Building Twelve Factor Apps with .Net Core

12 August 2018

Twelve factor apps provide a methodology for building apps that are optimised for modern cloud environments. It’s only been achievable in the Microsoft world since the advent of .Net Core.

Autonomous bubbles and event streams: Pragmatic approaches to working with legacy systems

29 July 2018

It’s easy to get caught up in unrealistic notions that you can re-write a legacy system or gradually decompose it. There are other, more pragmatic approaches that can help to modernise architectures and enable new development.

Kafka on Azure Event Hub – does it miss too many of the good bits?

10 July 2018

Microsoft have added a Kafka façade to Azure Event Hubs, presumably in the hope of luring Kafka users onto its platform. This makes sense as the platforms have a lot in common, though there are some missing Kafka features that may prove critical.