Viking CMS Cloud-based System Architecture

Task Runners
External APIs
Memcache Cluster
MongoDB Cluster
Servers
Load Balancer
CDN
Producers
Users
Apps

Click Any Component For Information

Task Runners

Dedicated virtual servers are laser-focused on taking care of repeatitive tasks, and transforming any third party APIs, especially those that require authentication, for use in the CMS rendering engine, or outgoing

External APIs

Includes NOAA, USGS, and other structured JSON/XML APIs that you depend on.

Memcache Cluster (AWS ElastiCache)

Caching layer for feed requests, render outputs, and page-level fragments per affiliate.

The servers don't communicate directly with each other, and have to maintain a common state. They do this withing 5ms of each other by updating objects in memcache.

Each affiliate will often have 3 or more distributed memcached nodes, all on the same fiber connection within the same datacenter

MongoDB Atlas Cluster

Shared multi-tenant Mongo Atlas cluster, sharded by affiliate ID and optimized for read-heavy loads.

Auto-Scaling Group

Render pages, banners, featured routes, navigation, manage auth, and generate outgoing feeds for any of your third parties that include live CMS content.

This is the "core" of the product that also holds the /admin utilities used by your designers and content producers

Load Balancer

Distributes requests to servers and handles internal and authorized user bypasses through intelligent routing.

Server self-talking passes through this layer, so that a big page render that may require a dozen or more external/external feed fetches distributes it's own load out accross its peers

Content Delivery Networks

We use both AWS Cloudfront and Imgix, each with a worldwide network of nodes that temporarily store your content, to reduce light-speed travel time for all your content.

Assets are transformed and actively purged by server logic to keep node caches current and efficient.

We don't beleive in waiting for content to go stale. Invalidations are sent proactively when content is updated

Apps

Your third party app providers get the same high-speed data updates as everyone else, in whatever format they require.

In fact, some of our customers see 60% of their impressions through their app providers, and keeping that content up-to-date, including banner, forecast, and page content can consume 25-30% of our total CDN load.

Users

The final recipients of rendered content across desktop, mobile, syndication, embedded placements, digital billboard or wherever you want to put it!.

Producers

Your producers, using the /admin tool to create and manage content. Their interactions skip the CDN completely.

Architecture Stories