The origin server/CDN is responsible for efficiently serving media objects, DMApp Components and any other static resources to client devices. This will be accomplished with at least an origin server operating as the source of truth for all content. The origin server will host a client interface API for requesting content and a publishing interface API for managing content (uploading, delete etc). The publishing interface will be accessible to authorised users only. The client interface will have a suitable client access level (TBD). The origin server will have suitable resilience and ability to recover after a failure from a backup system or replication procedure.
The CDN can evolve to also include edge servers that cache content requested from the origin server at various geographic locations. The choice of delivery server (origin server or edge servers) will then be based on best performance e.g. the closest to the client requesting the content. The edge servers will host a caching interface API for managing caching policies for authorised users.
CLIENT INTERFACE VERBS
A Client Web Application will call this to request content from the CDN. The content may be delivered from either the origin or edge server depending on DNS geographic lookup.
PUBLISHING INTERFACE VERBS (ORIGIN SERVER ONLY)
An authorised user will call this API on the origin server for adding new content.
An authorised user will call this API on the origin server for deleting content.
An authorised user will call this API on the origin server for listing all content.
An authorised user will call this API on the origin server to request logs for published resources.
CACHING INTERFACE VERBS (EDGE SERVER ONLY)
An authorised user will call this API on the edge server only for setting caching limit for content.
The publishing interface to the Origin Server will be SFTP. This allows project partners to use a range of available clients (command line, or GUI such as FileZilla).
The client interface will be a subset of HTTP to support read-only access to content.