Application & Platform Request Routing
Request routing is one of the most underestimated architectural concerns in modern software systems. What begins as simple URL dispatch rapidly evolves into a complex web of responsibilities involving security, policy enforcement, health awareness, presentation, resilience, and integration across systems. This article explores:
The core requirements of request routing in modern applications and platforms The common solution patterns used in industry, and where their responsibilities begin and end The gaps created by layering these systems together How a unified routing‑plane approach (exemplified by RoutingEngine) naturally emerges when those gaps are addressed coherently
1. What “Request Routing” Really Means
At its simplest, request routing answers the question:
“Given this request, what should handle it?”
In modern systems, that question expands quickly:
Which capability does the request represent? Which implementation of that capability is appropriate right now? Is the target healthy? Is the requester authorised? Which representation should be returned? Should the request be transformed, retried, or rerouted? Is this an API response or a human‑facing interaction?
Routing, therefore, is no longer a single operation — it is a decision pipeline.
2. Core Routing Requirements for Apps and Platforms
Modern routing systems must satisfy requirements across five overlapping domains:
2.1 Intent and Capability Resolution
Routing must understand what a request means, not merely where it was sent. This includes:
Resource and capability identification Parameter and path interpretation Mapping intent to handlers or services Supporting multiple implementations of the same capability
2.2 Policy, Security, and Governance
Routing is a natural enforcement point for:
Authentication and identity Authorisation and tenancy Regulatory policy Operational governance Request shaping and rejection
These concerns must be applied before execution and often influence routing decisions themselves.
2.3 Health, Resilience, and Adaptation
In distributed systems, routing must respond dynamically to runtime conditions:
Instance and endpoint health Partial degradation Failover and fallback Retry policies Circuit‑breaking behaviour
Static routing rules are insufficient in environments where topology and availability change continuously.
2.4 Representation and Audience
The same underlying capability may be consumed by:
Machines (APIs) Humans (UIs) Devices Other platforms
Routing must therefore participate in:
Content negotiation Template and renderer selection UI composition Media‑type selection
APIs and UI are not separate systems — they are different representations of the same model.
2.5 Integration and Reach
Modern routing must cross system boundaries:
Microservices Legacy systems Vendor APIs Hardware devices Cloud and on‑prem environments
Routing increasingly functions as connective tissue, not just dispatch logic.
3. Common Industry Solutions and Their Scope
To meet these requirements, most platforms assemble a stack of specialised systems.
3.1 Application Routers
Examples:
Framework routers (MVC, REST frameworks) URL dispatchers
Strengths:
Route → handler mapping Parameter extraction Basic content handling
Limitations:
Limited policy awareness No health‑driven decisions Typically local to a single application
3.2 Edge Gateways
Examples:
API Gateways Reverse proxies
Strengths:
Authentication Rate limiting TLS termination Coarse routing
Limitations:
Little application context Minimal awareness of business capability Often blind to presentation semantics
3.3 Load Balancers
Strengths:
Throughput optimisation Availability Redundancy
Limitations:
Treat requests as interchangeable packets No understanding of intent, capability, or representation
3.4 Service Meshes
Strengths:
Service‑to‑service routing Telemetry Retries and circuit breaking
Limitations:
Sidecar complexity Limited understanding of application semantics Separate configuration model from application routing
4. The Cost of Layering These Systems
While each of these tools solves part of the problem, layering them introduces:
Fragmented routing logic Duplication of policy Multiple configuration languages Difficult reasoning about end‑to‑end behaviour Responsibility splits between infrastructure and application teams
In practice, large platforms quietly build internal routing planes to unify these concerns — systems that sit between infrastructure and execution.
5. Routing Planes: A Unifying Concept
A routing plane is not a single product category. It is a design outcome:
Routing decisions are made once Decisions are informed by context, policy, and health Execution nodes remain simple Representation is resolved late Integration is first‑class
This is the architectural space RoutingEngine occupies.
6. RoutingEngine in the Big Picture
RoutingEngine approaches request routing as a semantic routing plane, absorbing responsibilities typically spread across routers, gateways, meshes, and balancers. It does so by focusing on meaning rather than mechanism.
6.1 Capability‑Driven Routing
Requests are resolved by capability and intent, not just by path or host. Capabilities may be:
Local handlers Remote services Device interfaces Alternate implementations
Discovery becomes dynamic rather than static.
6.2 Policy‑Based Decision Making
Routing decisions incorporate:
Identity Policy Tenancy Media type Runtime health
This allows routing to answer “should this happen?” as well as “where should it go?”.
6.3 Health‑Aware and Adaptive Behaviour
RoutingEngine evaluates runtime health and diagnostics, enabling:
Automatic avoidance of unhealthy endpoints Intelligent retries and fallbacks Graceful degradation
This removes resilience logic from individual execution nodes.
6.4 Unified API and UI Routing
APIs and UI are treated as alternate representations of the same underlying model. RoutingEngine handles:
Content negotiation Template and renderer resolution Widget and page composition
Handlers return intent and data; representation is resolved later.
6.5 Integration Without Coupling
Through Neurones and adapters, RoutingEngine can route to:
External systems Physical devices (including serial and out‑of‑band connections) Legacy platforms
Execution targets remain “dumb”; coordination stays centralized.
7. Deployment Flexibility
RoutingEngine supports progressive adoption:
Standalone, as a lightweight application router Embedded within a Droplet as a self‑contained routing and execution unit Clustered as an internal routing plane Cooperating cleanly with:
Firewalls Edge gateways Service meshes Load balancers DNS
It does not require replacing good infrastructure practices — it complements and unifies them.
8. Observability and Control Loops
RoutingEngine integrates naturally with:
Telemetry emission Monitoring engines WatchDog‑style behavioural oversight Arbitrator‑driven governance
This completes a feedback loop where routing decisions are informed by real system behaviour, not static assumptions.
9. Conclusion
Request routing in modern platforms is not a single feature or product category. It is a cross‑cutting architectural concern encompassing intent, policy, health, representation, and integration. Most platforms address this by stacking specialised tools, then smoothing the seams with custom glue. RoutingEngine represents a different path:
Treat routing as a first‑class plane Centralise meaning and decision‑making Keep execution nodes simple Allow APIs and UI to emerge from the same model Let infrastructure do what it does best, without duplicating semantics
This is not a rejection of existing solutions — it is a natural consolidation of their shared intent.