Be prepared for downstream failures by implementing the Circuit Breaker pattern

When building distributed applications we need to make sure that when we talk to a remote services or our microservices talk to each other we can handle downstream call failures and either recover automatically or gracefully degrade our own service instead of failing outright. There are two types of downstream failures. Those that are transient in nature (such as network »

Make sure to implement transient fault handling when running in the cloud

Applications running in the cloud or just making use of various external services are likely to face temporary failures when trying to communicate with these services. These failures could be network connectivity issues or request timeouts when external services are overloaded. An important aspect of these failures is that they are self-healing and if we retry calling services after a »

Implementing External Configuration Store Pattern on Azure

Configuration management is an important part of running and evolving public facing services when down time is not tolerated and you need maximum flexibility in adjusting settings of running services. Implementing External Configuration Store Pattern opens up some great possibilities for you like independent deployment of your services and configuration, sharing configuration between multiple services and versioning of configuration sets. »

A better implementation of a priority queue

In my previous post I provided a sample implementation of the Priority Queue pattern that was multiplexing messages from several queues through a dispatcher to a limited number of worker threads. While the basic idea looks good there were a couple of issues that popped up while running a similar solution in the real environment: Some messages got put in »

Adding SLAB out-of-process service to Azure cloud services

One great feature that Semantic Logging Application Block (SLAB) provides is an ability to use out-of-process service to listen to your messages. The idea is to move the logging sinks to another process so that messages don’t get lost if your application process crashes or it is terminated unexpectedly. We use SLAB out-of-process service in our cloud services that »

Implementing a priority queue on Microsoft Azure

Queues allow you to decouple components so that they process data or perform tasks in asynchronous manner. This greatly improves scalability and responsiveness of your application. Priority queues allow publishers influence the sequence in which requests are processed. It allows them to shift from a regular FIFO pattern to the one that takes a request priority into account and lets »