Hi all! We have a proposal for a new feature for TC: Server Capabilities.

Blueprint is here: https://github.com/apache/trafficcontrol/pull/3972

In a nutshell, the problem we're solving is that it's impossible to only
use certain Mids for certain Delivery Services. You can manually assign
whatever Edges you want, but all Edge get all Mids in their parent
Cachegroup.

With "Server Capabilities," Servers will have any number of "Capabilities,"
and Delivery Services will have "Required Capabilities," and when
parenting, if a Mid doesn't have a Required Capability, it will not be
inserted as a parent for that DS.

Example 1: You have Mids with only Ram, and you have Delivery Services
serving small images, and DSes serving large binaries. This feature lets
you assign the Capability "DISK" to your other servers that have disk, and
the Required Capability "DISK" to the large binary DSes, and then the
Ram-only Mids won't have those DSes sent to them (which would destroy the
cache) because they don't have the "DISK" Server Capability.

Example 2: You have some ATS servers with the Lua plugin installed, and
some without. You have some DSes that require a Lua script, which executes
on Mids as well as Edges. You can then assign a Server Capability and DS
Required Capability "LUA," to not route Lua DSes through servers without
the Lua plugin.

We have a very specific use case we need this for, and it fundamentally
lets you do parentage/routing in ATC that isn't possible today. But we're
hoping it's generic enough to solve a lot of similar problems in the future.

Some notes:
- The feature is 100% backwards-compatible. When you upgrade, no DSes have
"Required Capabilities," so routing continues how it always did, until some
Server Capabilities are created.
- The feature is entirely optional. If you don't need Server Capabilities
in your CDN, just don't create them, and everything works how it always did.
- The feature also applies to Edge assignments, but since that's all
manual, that's really just an extra/safety, it doesn't make any new things
possible.

Thoughts?

Reply via email to