The Power of Application Routing
A few months from now, I will be presenting to a conference audience the topic of application routing. The term itself, application routing, is not really a “thing.” A quick web search does not yield anything succinct, nor does it really ring any proverbial bells. However, wrapped in context, the term should make perfect sense.
Within the last decade, cloud computing has evolved the way that we write and deploy software. Commonly, the components that we deploy into cloud environments are called applications. These applications may be web applications or services. So, the term application routing simply denotes the management of an incoming request and yielding a path to an application. Other synonymous terms are edge services and application gateways.
So, why is this important? And, why is something so simple in principle worth paying attention to?
It is true; application routing is indeed simple. Most of us developers don’t even think about it. For example, one can go spin up a free Windows Azure site now and just tell your users which URL to visit. Of course, the request does go through many infrastructure magic and virtual trickery but at the end of the day, from the developer perspective, the request was directed at the application hosting the website.
But, what is also true in our industry is the presence of stakeholders. Or more specifically, the expectations of those stakeholders. The new expectation is for a technical organization to be able to deliver software very quickly, from the inception of an idea to a production deployment, then, reap the benefits of the idea or recover from failure in a rapid and uninterrupted manner. This is the so-called fail-fast attribute of a system.
When presented with this challenge, application routing is inevitably one of the key solutions that will be used. Concepts such as blue-green deployments and canary testing all play a role in business’ ability to react to change. In some cases, A/B testing can also be achieved. With an application routing solution in place, you will be able to control what to do with a request as the primary handler of it. In most cases, your routing application will perform a reverse-proxy, but in others, send other HTTP responses such as a 301/2 redirect or its own 200-OK response. The power behind this lies in the fact that such a routing application is just another application that you write. And if you’re developing it, then you have control over it. In contrast, you can achieve some of the routing functionalities with delivery networks such as F5, but you would not have as much control over it as an enterprise developer.
In my recent experience, and to my surprise, routing is actually quite complex especially when combined with many valid use cases such as zero-downtime deployments, rollbacks, configurable canaries, A/B testing and multi-app aggregation. In my next article, I will dive much deeper into this subject.