Distributed Applications

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?

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.

Should microservices share technologies and platform capabilities?

28 June 2016

Should agile teams be encouraged to share capabilities or be given total autonomy over their technology choices? For larger organisations this can become a trade-off between economies of scale and speed of delivery.

Managing services that don't have clear code ownership

5 May 2016

How do you organise code ownership for services that do not align conveniently with team or organisational boundaries?

Data design for event-driven architecture: autonomy, encapsulation and ordering

1 February 2016

When you’re implementing an event-driven architecture, the design of your events is absolutely critical to realize the benefits of loose coupling.

Pragmatic REST: APIs without hypermedia and HATEOAS

12 December 2015

If you’re not using HATEAOS then you’re not using REST. That’s true enough, but in many cases adopting HATEOAS doesn’t deliver much value beyond architectural purity.

Comparing nServiceBus and MassTransit: Do we still need .Net integration frameworks?

26 November 2015

Both nServiceBus and Mass Transit plugged an important gap in Microsoft’s integration landscape, but do they have a role in a future that is likely to be dominated by diverse technologies and autonomous agile teams?

Can cross-cutting concerns really exist between services?

25 July 2015

You might be able to identify cross-cutting concerns in a monolith, but in a service-orientated world they should melt away into specific implementations.

Refactoring monoliths to microservices: the pragmatic reality

5 May 2015

Large scale rewrites of systems are loaded with risk. You can address this by preparing the ground in advance and adopting an incremental approach, but a willingness to be pragmatic is essential.

Microservices, REST and the distributed big ball of mud

20 April 2015

The “big ball of mud” describes a system architecture that is sprawling, sloppy and haphazard. That’s precisely how you’d describe some emerging microservice architectures.

How big is a microservice?

9 March 2015

We know that micro services are small and focused by design – just how small is this in practice?

Why REST is not a silver bullet for service integration

4 January 2015

REST is sometimes described as the next evolutionary step in service integration. The problem is that REST provides too much of a dumb pipe to support genuinely decoupled, fault-tolerant service integration.

Don’t assume message ordering in Azure Service Bus

16 December 2014

Azure Service Bus can provide first-in-first-out messaging in theory, but this is not the same as guaranteeing the order in which your messages are processed.