Deploying a Windows Service remotely with Powershell

12 June 2015

As with any deployment automation, there’s a fair amount of duct tape and chicken wire involved in deploying a Windows Service remotely.

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.

The REST flame wars – common disagreements over REST API design

22 November 2014

Debates on the finer points of REST can bring out the worst in people as they seek to define what is and is not “RESTful”. In most cases the debate is unlikely to make the difference between success and failure for an API.

Why you shouldn’t create asynchronous wrappers with Task.Run()

3 November 2014

Many developers confuse asynchronous operations with parallel execution. The essential difference is that an asynchronous operation is concerned with which resources you consume while parallel execution is more concerned with how many.

The problem with GUIDs…

3 October 2014

GUIDs do solve an important problem. It’s just rarely the problem that developers are trying to address…

Messaging shouldn’t be used for queries

21 August 2014

When developers first start using messaging they can be tempted to use it as a brand new hammer for every nail. Messaging brings a lot to the party, but it isn’t necessarily a suitable transport for fast, synchronous query processing.

Using a tolerant reader for web service integrations in .Net

22 July 2014

Using version tolerant readers can help you to cope with changes to service contracts though this does come at the expense of a weaker contract. The approach is more appropriate for fluid services that are prone to frequent change.

The problem with tiered or layered architecture

9 July 2014

An architecture based on tiers or layers is too inflexible to deal with the more flexible demands of modern systems, particularly when you working with high-volume systems that require distributed processing.

Optimising bulk inserts with Entity Framework

26 June 2014

There are some techniques for improving the performance of bulk inserts in the entity framework, but the most optimal approach will always be to use a different library altogether.

Are microservices just “SOA done properly”?

12 June 2014

There’s nothing really new about many of the ideas that underpin microservices. Are they just an agile re-branding of SOA?

Eventual consistency and the trade-offs required by distributed development

4 May 2014

Developers who have been brought up on the certainties of ACID transactions often have a problem trusting eventual consistency. Once you start exploring the requirements in more depth this really so much of a handicap.