A 3D digital illustration depicting a futuristic concept of the Asynchronous Request-Reply pattern. On the left, there's a streamlined, high-tech frontend interface, characterized by sleek, simple, and user-friendly design elements, symbolizing the user's request. This interface is glowing subtly, emphasizing its advanced technology. On the right, an intricate and complex backend system is illustrated, representing asynchronous processing. It features detailed, sophisticated machinery and network structures, with a more industrial and robust appearance. Connecting these two elements are glowing, dynamic data streams, creating a visual flow of communication and response between the frontend and backend. The overall composition highlights the extended communication path in a digital, futuristic environment, captured in a wide format with a 100:42 aspect ratio.

The Asynchronous Request-Reply pattern

Client-side applications often rely on APIs to provide data and functionality, which are either in your control, or provided by a 3rd party. We usually communicate with these APIs using HTTP(S) protocols and REST. Usually, these APIs are designed to respond quickly to requests. However, there can be a variety of things that affect the latency response from these APIs. These include network infrastructure, how many clients are attempting to call the API, the difference in location between the caller and API itself etc. ...

January 24, 2024 · 5 min · Will Velida
An elaborate 3D rendering showcasing the Queue-Based Load Leveling pattern in a futuristic setting. The image, in a 100:42 aspect ratio, features a colossal, radiant tube at its center, symbolizing the queue. This tube is vibrant with colorful, digitized requests. Scattered throughout the scene are various computers and digital envelopes, representing data processing and message handling. These computers appear integrated into the high-tech landscape, some floating around the queue, highlighting their role in data analysis and management. The envelopes, depicted as digital holograms, seamlessly merge into the data streams, illustrating the tasks being processed. On the right, a grand, fortress-like structure represents the service, with gates meticulously processing each request. The background is a dramatic skyline, illuminated by neon lights and holographic displays, enhancing the scene's grandeur. The overall atmosphere is intense and awe-inspiring, emphasizing the system's efficiency in managing high demand with added layers of technology and communication.

The Queue-Based Load Leveling Pattern

Applications in the cloud can be subjected to heavy peaks of traffic in intermittent phases. If our applications can’t handle these peaks, this can lead to performance, availability and reliability issues. For example, imagine we have an application that stores state temporarily in a cache. We could have a single task within our application that performs this for us, and we could have a good idea of how many times a single instance of our application would perform this task. ...

January 22, 2024 · 5 min · Will Velida
A dynamic 3D illustration of a Priority Queue system in computing. At the bottom, a vast array of futuristic computers forms a grid, with a central towering structure that represents the sending application. From this, digital envelopes adorned with glowing edges, indicative of their priority status, burst forth in an array. High-priority envelopes emit brighter light and are surrounded by visible energy fields, while lower-priority ones have a softer glow. They ascend towards an elaborate, radiant queue structure above, which sorts them before they continue towards their destinations. The background resembles a star-filled night sky, signifying the vastness and complexity of the data processing universe. The overall image conveys a sense of grandeur and high-stakes data management.

The Priority Queue Pattern

The Priority Queue pattern is a pattern that allows us to prioritize requests sent to services so that higher priority requests are received and processed faster than lower priority requests. This is useful for when we are building applications where we need to prioritize some clients over others, or if some requests need to be processed faster than usual for business/compliance reasons. In this article, I’ll talk about what the Priority Queue pattern is, what advantages priority queues can provide, what we need to consider when implementing the Priority Queue pattern and how can implement it priority queues in Azure (Spoiler alert, it’s a little hacky!). ...

January 17, 2024 · 4 min · Will Velida
A conceptual 3D rendering depicting the 'Competing Consumers' model in message processing. Multiple futuristic robotic arms, representing consumers, extend towards a central, glowing digital messaging channel. This channel is overflowing with luminous data messages, illustrating a high volume of information. The robotic arms are engaged in grabbing and processing these messages, symbolizing the concepts of optimizing throughput, enhancing scalability, and distributing workload. The scene is set against a sleek, high-tech backdrop, emphasizing advanced technology and digital processing.

The Competing Consumers Pattern

Applications running in the cloud should expect to handle a large number of requests. One method of dealing with large amounts of requests is to pass them through a message broker to a consumer service that handles these requests asynchronously. This helps ensure that requests are being processed without throttling or degrading the performance of our applications. The volume of these requests can vary over a period of time. Imagine that you’re a developer for an e-commerce website. The traffic you’ll receive during events like Black Friday or Boxing Day sales will be significantly than usual, with requests coming from multiple users that is difficult to predict. During peak hours, you may have to process hundred or thousands of requests per second, while other times demand may be significantly smaller. ...

January 15, 2024 · 5 min · Will Velida
An epic and dramatic 3D visualization of the Retry Storm antipattern in a vast digital landscape. The image showcases a colossal cybernetic storm with intense lightning strikes and powerful whirlwinds, dramatically engulfing a network of futuristic, interconnected systems. These systems are intricately designed with sophisticated geometric shapes and are overwhelmed by an extraordinary number of retry requests, far exceeding the number of stable connections, in a 100:42 ratio. The scene is set against a dark, ominous sky with vibrant electrical effects, emphasizing the catastrophic impact of the antipattern in a high-tech, cyberpunk aesthetic.

The Retry Pattern and Retry Storm Anti-pattern

When developing cloud applications, we’ll be interacting with remote services that can suffer from transient faults. Our applications need to be able to handle transient failures when trying to connect to remote services, and retry a failed operation to improve the stability of your applications. This is where the Retry pattern comes into play. N.B Transient faults are faults that include the momentary loss of network connectivity to components and services, the temporary unavailability of a service, and timeouts that occur when a service is busy. ...

January 15, 2024 · 7 min · Will Velida