CDN: current state of the issue
CDNs have got complicated: there is even a
Taxonomy of Content
Delivery Networks.
There is also active research in Dynamic Server Selection (Dynamic Routing),
which is the central issue of CDN design, see
Content
Distribution Resources. The emerging trend seems to be reintroduction of
IP
Anycast,
see
Anycast
CDNs Revisited. Academic
CoralCDN is an
example of such system. It is based on Overlay Anycast Service InfraStructure
OASIS; see
Automating
server selection with OASIS or
Anycast
for Any Service. There was also an attempt to apply Anycast to large
content distribution, see
ChunkCast: An
Anycast Service for Large Content Distribution.
What looks to be missing, is a practical design of dynamic routing, which
takes into account replica's quality of service, such as server load and
especially content availability. Load-aware routing schemes seem to be based
on the assumption that "all CDN nodes are configured to serve the same
content". However, mirroring of large content is unrealistic because of
propagation delays and storage costs. A technology similar to
Cache
Digest could help to add content availability metrics to the routing
equation.
Our motivation
Our team works closely with online video. We run
Russian Movie Club in USA
RussArt.com, which serves pretty heavy stuff (3 Mbps wmv video).
Originally movies were served from
Amazon S3, which
worked OK in the US. However, with our customer base spanning 25+ countries,
edge delivery has become essential. With the addition of
Amazon CloudFront S3
gained some sort of edge delivery, however the cost of doing business
with Amazon was still too high for our terabytes.
As most multimedia startups, we were too small to afford a premium CDN like
Akamai,
Limelight, or
Level 3. On the other
hand, our terabytes were too many for affordable CDNs like
CacheFly or
Coral. There was an obvious gap,
which we filled with our People's CDN.