Microservices

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.

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.

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.

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.

Managing and throttling serverless scaling with Azure Functions

3 October 2017

The serverless promise of unlimited scale-out can be a curse when your downstream processes and data stores have strict limits on throughput. With Azure Functions your options for mitigating this are limited, though the new durable functions may provide an answer…

Are OpenAPI and Swagger trying to turn REST into SOAP?

14 August 2017

Open API and Swagger enable the same kind of automated discovery and integration that WSDL and SOAP were invented to support. In doing so they undermine the design of REST APIs and don’t even provide adequate documentation.

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.

Comparing serverless C# and .Net development using Azure Functions and AWS Lambda

26 May 2017

Recently released toolsets for AWS Lambda and Azure Functions are finally making serverless application development available to C# developers.

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?

Using Docker to build and deploy .Net Core console applications

12 April 2017

Using Docker with .Net Core is initially straightforward, but to get beyond basic image building you will need to handle more than the simple scenarios demonstrated in quick-start guides.

Handling Protocol Buffers backwards compatibility between versions 2 and 3 using C#

13 November 2016

You will inevitably be pushed towards upgrading your protocol buffer messages to Proto3, particularly if you want a client that supports .Net Standard that .Net Core. This can be done, but there are a couple of speed bumps along the way.

What's so bad about monoliths anyway…?!

3 October 2016

Don’t get me wrong - I am an advocate of decomposing functionality into autonomous services. My reservation is that you need to have a lot of prerequisites in place before you can start leveraging microservices.