Hosting .Net Core containers in Service Fabric

12 September 2018

Service Fabric does support container-based applications, but it still feels more like an application server than a container orchestrator.

How I learned to love the “Agile Industrial Complex”

30 August 2018

There is a growing sense of unease around how larger organisations have implemented agile. In particular, there is a tendency towards centralised control that can be at odds with the agile preference for individuals over process.

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.

Using architectural “fitness functions” as a guide to system design

18 June 2018

Fitness functions can be a useful metaphor for guiding an emerging architecture, but you do have to invest in making sure they describe the right outcome.

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.

What makes a REST API mobile-friendly?

25 April 2018

REST API design is dependent on the clients that will be consuming the resources - APIs that are designed for server-based integrations tend to look quite different from those that are designed to support mobile applications.

GraphQL will not solve your API design problems

20 March 2018

If you find REST APIs difficult to design, develop and scale, then your experience with GraphQL is not going to be any easier.

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.

The problem with the .Net Standard compatibility shim…

12 January 2018

The compatibility shim was added to .Net Standard to make it easier to reference libraries compiled using the .Net Framework. That just leaves you with the problem of missing APIs…

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.