1. Technical Field
This application relates generally to management of content in a shared infrastructure.
2. Brief Description of the Related Art
Distributed computer systems are well-known in the prior art. One such distributed computer system is a “content delivery network” or “CDN” that is operated and managed by a service provider. The service provider typically provides the content delivery service on behalf of third parties (customers) who use the service provider's infrastructure. A distributed system of this type typically refers to a collection of autonomous computers linked by a network or networks, together with the software, systems, protocols and techniques designed to facilitate various services, such as content delivery, web application acceleration, or other support of outsourced origin site infrastructure. A CDN service provider typically provides service delivery through digital properties (such as a website), which are provisioned in a customer portal and then deployed to the network. A digital property typically is bound to one or more edge configurations that allow the service provider to account for traffic and bill its customer.
The customer portal is typically web-based and configured as an extranet configuration application by which users authorized by a CDN customer access and provision their services. One such service is the storage and delivery of digitized files, software, video, or other large objects. Customers who use the CDN shared infrastructure for this purpose typically require the ability to manage their content files. As used herein, file management typically refers to the ability to list, move, delete and upload files, as well as to create and remove directories in which the customer's content is stored. A CDN portal application (the “portal”) typically is implemented as a distributed, secure application comprising a web server-based front-end, one or more application servers, one or more database servers, a database, and other security, administrative and management components.
A shared computing infrastructure has associated therewith a storage system, and a portal application through which portal users access the shared computing infrastructure and provision one or more services, such as content storage and delivery. A representative shared computing infrastructure is a content delivery network (CDN). According to this disclosure, the infrastructure includes a File Manager application that provides a streamlined, easy-to-use, web-based interface to the CDN distributed storage file system (“Storage”) for CDN customers. The File Manager preferably interfaces to an existing Storage Content Management System (CMS) Application Programming Interface (API). Preferably, File Manager accesses the CMS API directly, advantageously removing the requirement of a proxy of all activity through the customer portal. This prevents unnecessary load on the portal infrastructure, freeing up other resources. In operation, the File Manager creates a configurable link between portal users and storage users so that a simplified workflow can be created and enforced. In particular, using this workflow preferably storage users are not required to re-login once a portal user-to-storage user relationship has been established.
In one embodiment, a method for file management in the shared computing infrastructure begins by associating, in a database, a portal user to one or more users of the storage system. Upon authentication of the portal user, authority to perform one or more storage management operations with respect to at least one storage group is then automatically delegated from the portal user to the one or more users of the storage system. A user of the storage system (who has received the delegated authority) is then provided a web-based user interface from within the portal application itself. In response to receipt of information from the web-based user interface, and without requiring an additional credential to be entered by a user of the storage system, at least one storage management operation is then performed from within the portal application.
The foregoing has outlined some of the more pertinent features of the invention. These features should be construed to be merely illustrative. Many other beneficial results can be attained by applying the disclosed invention in a different manner or by modifying the invention as will be described.
For a more complete understanding of the present invention and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
In a known system, such as shown in
As illustrated in
A CDN edge server is configured to provide one or more extended content delivery features, preferably on a domain-specific, customer-specific basis, preferably using configuration files that are distributed to the edge servers using a configuration system. A given configuration file preferably is XML-based and includes a set of content handling rules and directives that facilitate one or more advanced content handling features. The configuration file may be delivered to the CDN edge server via the data transport mechanism. U.S. Pat. No. 7,111,057 illustrates a useful infrastructure for delivering and managing edge server content control information, and this and other edge server control information can be provisioned by the CDN service provider itself, or (via an extranet or the like) the content provider customer who operates the origin server.
The CDN includes or has associated therewith a storage subsystem, such as described in U.S. Pat. No. 7,472,178, the disclosure of which is incorporated herein by reference. A representative storage site in this context is a collection of one of more storage “regions,” typically in one physical location. In this subsystem, preferably content (e.g., a customer's digital files) is replicated across storage sites. In one embodiment, a storage region comprises a collection of client servers that share a back-end switch, and a set of file servers (e.g., NFS servers) which, together with a network file system, provide raw storage to a set of content upload, download and replication services provided by the client servers. Preferably, the NFS servers export the network file system to the client servers. At least some of the client servers execute upload (e.g., FTP) processes, and at least some of the client servers execute download (e.g., HTTP) processes. Preferably, each of the client servers executes a replication engine, which provides overall content management for the storage site. Content upload is a service that allows a content provider to upload content to the storage site. Content replication is a service that ensures that content uploaded to a given storage site is replicated to a set of other storage sites (each a “replica” or “replica site”) to increase content availability and improve performance. Preferably, content is replicated across multiple storage sites according to per-customer configuration information. Content download is a service that allows content to be accessed by an entity, e.g., via an edge server, that makes a given request. Thus, in an illustrative embodiment, a storage site preferably comprises a network file system, and a set of NFS servers that export the network file system to a set of client servers. The file servers may be CDN-owned and operated or outsourced. One possible deployment uses outsourced storage, such as storage available from a storage service provider (SSP). A managed storage service of this type typically comprises two or more storage sites, each of which may comprise above-described implementation.
The above-described storage sub-system is merely exemplary, and it should not be taken to limit this disclosure.
The CDN also may operate a server cache hierarchy to provide intermediate caching of customer content; one such cache hierarchy subsystem is described in U.S. Pat. No. 7,376,716, the disclosure of which is incorporated herein by reference.
The CDN may provide secure content delivery among a client browser, edge server and customer origin server in the manner described in U.S. Publication No. 20040093419. Secure content delivery as described therein enforces SSL-based links between the client and the edge server process, on the one hand, and between the edge server process and an origin server process, on the other hand. This enables an SSL-protected web page and/or components thereof to be delivered via the edge server.
As an overlay, the CDN resources may be used to facilitate wide area network (WAN) acceleration services between enterprise data centers (which may be privately-managed) and third party software-as-a-service (SaaS) providers.
In a typical operation, a content provider identifies a content provider domain or sub-domain that it desires to have served by the CDN. The CDN service provider associates (e.g., via a canonical name, or CNAME) the content provider domain with an edge network (CDN) hostname, and the CDN provider then provides that edge network hostname to the content provider. When a DNS query to the content provider domain or sub-domain is received at the content provider's domain name servers, those servers respond by returning the edge network hostname. The edge network hostname points to the CDN, and that edge network hostname is then resolved through the CDN name service. To that end, the CDN name service returns one or more IP addresses. The requesting client browser then makes a content request (e.g., via HTTP or HTTPS) to an edge server associated with the IP address. The request includes a host header that includes the original content provider domain or sub-domain. Upon receipt of the request with the host header, the edge server checks its configuration file to determine whether the content domain or sub-domain requested is actually being handled by the CDN. If so, the edge server applies its content handling rules and directives for that domain or sub-domain as specified in the configuration. These content handling rules and directives may be located within an XML-based “metadata” configuration file.
As noted above, the CDN service provider provides a secure customer portal that is web-based and configured as an extranet configuration application. The portal is the usual way in which users authorized by a CDN customer access and provision their services. One such service is the storage and delivery of digitized files, software, video, or other large objects. Customers who use the CDN shared infrastructure for this purpose typically require the ability to manage their content files. As used herein, and as noted above, file management typically refers to the ability to list, move, delete and upload files, as well as to create and remove directories in which the customer's content is stored. A CDN portal application (the “portal”) typically executes on one or more machines, wherein a machine comprises hardware (CPU, disk, memory, network interfaces, other I/O), operating system software, applications and utilities. The portal typically is implemented as a distributed, secure application comprising a web server-based front-end, one or more application servers, one or more database servers, a database, and other security, administrative and management components.
An edge server process may need to contact an intermediate server to retrieve user information before going forward to an origin server. An intermediate processing agent (IPA) may be used for this purpose. An IPA request is an internal (within the CDN) request having a response that may be cacheable. Control over the IPA function may be implemented in edge server metadata.
With the above as background, the subject matter of this disclosure is now described.
As described herein, the File Manager application provides a streamlined, easy-to-use, web-based interface to the CDN distributed storage file system (described below as “Storage”) for CDN customers. The File Manager preferably interfaces to an existing Storage Content Management System (CMS) Application Programming Interface (API). Preferably, File Manager accesses the CMS API directly, advantageously removing the requirement of a proxy of all activity through the customer portal. This prevents unnecessary load on the portal infrastructure, freeing up other resources. As will be seen, the File Manager creates a configurable link between portal users and storage users so that a simplified workflow can be created and enforced. Customers are not required to re-login once a portal user-to-storage user relationship has been established.
By way of background, consider the following use case. CompanyX has an agreement with the CDN to deliver media assets over an HTTP-based progressive download service. An administrator of the agreement makes a configuration update in the customer portal to enable File Manager and specifies in a portal-user manager that the Portal User bob@companyx.com will access Storage (NS) over File Manager using the Storage user companyx_bob. Each day Bob is required to upload media files (that will be delivered to end users by the CDN) delivered to him on a DVD by his post-production department. To use File Manager, Bob logs in to the portal and navigates to the File Manager application. The File Manager application loads a user interface that lists the files and directories in a root of the CompanyX Storage. Bob navigates to a sub-directory that again lists the files and directories of the current folder. Bob then creates a new directory for the current media files and navigates into the current directory. Bob clicks a button to upload a file, selects a several GB file from his local machine and begins uploading. Without having to wait, Bob clicks the upload button again, selects another large file and begins uploading that file as well.
The File Manager application thus provides a web-based user interface from within the customer extranet portal to a customer's Storage group. The user interface (UI) functions exposed include list, move, delete, upload, create directory, remove directory. The File Manager application preferably uses Storage token-based authentication to evaluate actions based on the permissions of a Storage user. The File Manager application preferably does not require entry of additional credentials to access Storage.
The File Manager traffic preferably occurs over SSL or other secure transport. The File Manager application preferably does not transfer file through the portal infrastructure.
As seen in
As shown in
As shown in
The following provides additional details regarding the File Management component. In one embodiment, File Manager is a portal application created in Java. The portal framework itself may be used to deliver pages to authenticated users. Preferably, the portal application contains just a relatively small number of pages, while general interactions with the Storage CMS API through Ghost is implemented via client-side technologies, such as JavaScript and Flash, AJAX, and the like (as described in the
Because the File Manager application preferably runs from the portal, it is delivered over SSL. Preferably, all file operations (and therefore all communication of the portal session-cookie) also occur over SSL. In one embodiment, File Manager accesses the CMS API through AJAX on a given domain (e.g., control.akamai.com), so all CMS interactions also are encrypted over SSL.
Preferably, there are several authentication actors and methods involved during various stages of the overall process.
As seen in
As seen in
Provisioning File Manager typically involves some steps that preferably are done only once for each customer and some steps that may be required to be repeated for updates to a customer's configuration. The basic steps that are carried out one time include creating a record in the database to enable the File Manager application, creating at least one association between at least one portal user (puser) and one or more Storage users (nusers) (see
The above-identified scheme may be used in other operating environments in which end users upload content (even user-generated content) via a front-end web-based interface and where such content is desired to be stored in a back-end storage system. Thus, for example, another use case might be a commercial web site that exports a web-based front-end (e.g., a set of web pages) that comprise a conventional web-based front-end to a back-end storage system for the uploaded content. In such case, the File Manager as described provides a web-based user interface within the front-end application to a customer's (or third party) back-end storage system.
In a representative implementation, the subject functionality is implemented in software, as computer program instructions executed by a processor.
More generally, the techniques described herein are provided using a set of one or more computing-related entities (systems, machines, processes, programs, libraries, functions, or the like) that together facilitate or provide the described functionality described above. In a typical implementation, a representative machine on which the software executes comprises commodity hardware, an operating system, an application runtime environment, and a set of applications or processes and associated data, that provide the functionality of a given system or subsystem. As described, the functionality may be implemented in a standalone machine, or across a distributed set of machines. The functionality may be provided as a service, e.g., as a SaaS solution.
While the above describes a particular order of operations performed by certain embodiments of the invention, it should be understood that such order is exemplary, as alternative embodiments may perform the operations in a different order, combine certain operations, overlap certain operations, or the like. References in the specification to a given embodiment indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic.
While the disclosed subject matter has been described in the context of a method or process, the subject disclosure also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including an optical disk, a CD-ROM, and a magnetic-optical disk, a read-only memory (ROM), a random access memory (RAM), a magnetic or optical card, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. While given components of the system have been described separately, one of ordinary skill will appreciate that some of the functions may be combined or shared in given instructions, program sequences, code portions, and the like.
Preferably, the functionality is implemented in an application layer solution, although this is not a limitation, as portions of the identified functions may be built into an operating system or the like.
The functionality may be implemented with other application layer protocols besides HTTP, such as HTTPS, or any other protocol having similar operating characteristics.
There is no limitation on the type of computing entity that may implement the client-side or server-side of the connection. Any computing entity (system, machine, device, program, process, utility, or the like) may act as the client or the server.
This application is based on and claims priority to Ser. No. 61/554,871, filed Nov. 2, 2011.
Number | Date | Country | |
---|---|---|---|
61554871 | Nov 2011 | US |