The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Various aspects of the technology described herein are generally directed towards discovering remote (e.g., Internet) services, wherein in general, a service executes off-premise while interacting with one or more on-premise workloads in some way (unlike downloading a component for a program, for example). Examples of contemporary services include a hosted email service such as for email forwarding and spam filtering, a service for remote monitoring of an on-premise workload, a backup service and so forth, with the number and types of available services increasing rapidly.
Once discovered, a service can be selected and integrated for use with one or more workloads such as an on-premise software application program by configuring the workload to work with the service, and configuring the service to work with the workload, as necessary. Once configured and operational, the selected service is referred to herein as a hosted service. Note that the hosted service may be selected by administrator user input, for example, but may be selected in some other way, such as by an automated process, by an event, by time and so forth. Also, the service need not necessarily be an Internet service, but may, for example, be part of an enterprise network's intranet.
In one example implementation, at least some workloads are exemplified herein as being part of an on-premise suite of network-related software programs typically used in an information technology (IT) infrastructure. Examples of programs that may be present within such a suite include an administration console, an email server program, an antivirus and/or spam filtering program, a file server program, and so forth. Other on-premise workloads may be external to the suite. Notwithstanding, it can be readily appreciated that instead of a suite, a standalone program or other entity (e.g., a dedicated device) may include the discovery and configuration mechanism (e.g.,
As such, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing and networking in general.
One of the computing devices (e.g., 1024) is shown as maintaining an on-premise service discovery and configuration mechanism 108, which as described above need not be entirely “on-premise” in a literal sense. Further, it is understood that even in a configuration in which the service discovery and configuration mechanism 108 is literally “on-premise” within a network, the service discovery and configuration mechanism 108 may be distributed among more than one network device. Thus, for example, the service discovery and configuration mechanism 108 may comprise a program that runs at least in part on the edge server 104; further although not shown as such in the example of
In one example implementation, via various example components within a remote service listing and configuration database and service 220 (
In general, and as represented in
As represented in
The client may be configured to discover the service listing server in any number of ways, including manual and/or automatic means. For example, configuration may be through user input via a user interface, by a referral from another service listing server, and/or by a query to an external or internal directory service (e.g. DNS, UDDI, Active Directory, and so forth).
Note that the returned list of available services may be in the form of a full set of services relative to some workload or workloads, such as the entire set of services known to be trusted for a suite of products to which the service discovery and configuration mechanism 108 is associated. Alternatively, the list may comprise a filtered subset, such as only those available for a particular workload product.
Thus, a client may ask the service listing service to give all available services or provide the service listing service with a list of specific services. The initial response back to the client may be just the availability of specific services, all services, the necessary configuration information for services in the response, referral to one or more other service listing servers, or a combination of these. The configuration information returned may include only the information required to make the service functional, but also may include auxiliary information such as a pricing model for the service, service levels, license/certification information, or a combination of functional and auxiliary information.
By way of example, consider an administrator that runs a suite of products but wants to integrate a backup service into the suite. Through components of the mechanism 108 (described below with reference to
From the list, the administrator (or other process such as a ranking mechanism) makes a selection. While feasible to select more than one service at a time, for purposes of the description herein, selection of a single service at a time is described. Note that while the list may be returned as just a simple list of services (possibly with related information describing each service), the list may be returned along with information that specifies what configuration information (which may differ from service to service) is needed for each service to operate. In the first alternative in which only the list is provided, additional communication may be used to have the client request the needed configuration information for a selected service, and then return that configuration information to the service listing server 220. For purposes of this example description, in general, the client requests a list of services, receives the list, selects a service and returns information that identifies the selected service and provides the needed configuration information to the service listing server 220, regardless of how many actual communications take place.
Based on the selection, which is sent back to the server listing server's communication component 226, configuration implication translation logic 234 of the server listing server 220 takes any settings provided by the service discovery and configuration mechanism 108. From these settings, the configuration implication translation logic 234, using data in a service data store 235 determines whether the selected service is not compatible with the client based on its configuration settings, or if compatible, whether any settings within the selected service that need to be changed or added. For example, if the client identifies itself as a suite of application programs, the configuration implication translation logic 234 may translate or add settings for individual programs A, B, C and D of that suite. Thus, there may be settings translated for the explicit settings provided by the mechanism 108 (that is, the client) that allow the selected service to couple to the client without impacting the client, for example, and there may be implied settings that the translation logic 234 may add to facilitate coupling the'service to the client.
A service configuration service/API 236 takes the direct client configuration information and any translated/derived client configuration information, and returns any needed changes to the service discovery and configuration mechanism 108. From this, the client may reconfigure any of its workloads and/or resources to match these settings. For example, a client may have to change its mail exchange (MX) record to work with an email-related service, or its IP address, and so forth. Note that a client can be set up to reject-a particular change, in which event the administrator may select another service and try again.
Following the client's configuration of its workloads and resources, the selected service and service discovery and configuration mechanism 108 are configured to communicate with each other, (at least to the extent necessary to further exchange needed information, such as proprietary information not desirable to exchange via the service listing server 220). At this time, assuming the communication to the service succeeds and other possible connection requirements are met (such as providing credentials, providing a certificate and/or other requirements), the service discovery and configuration mechanism 108 can be considered as hosting the hosted service 238. For example, the service listing server 220 may provision and configure an instance of the selected service with the necessary resources configured for the client's settings, and facilitate coupling of the client to this instance. Note that hosting may include coupling to multiple services in parallel, coupling to multiple services in series, or a combination of parallel and series coupling.
In the example implementation of
A communication component 352 communicates the request for services to the service listing server 220. When the list is returned and a service is selected, the needed configuration data is known to the mechanism 108. Based on this needed configuration data, a configuration gathering component 354 may collect information from the suite-internal applications 3421-342J and external applications 3441-344K, as well as from various resources 3431-343L. Configuration information also may be collected from one or more devices in the local network; the local network may be distributed across multiple locations. Note that in general, the configuration gathering component 354 ordinarily collects configuration information from only those resources which are relevant to a service. Further note that in
As described above, the gathered settings are sent to the service listing server 220, where they are evaluated and translated as necessary, and returned. Configuration implication translation logic 356 takes the possibly-modified settings from the service listing server 220 and via its own logic and a data store 358, derives any settings within the suite 340, suite-internal applications 3421-342J, external applications 3441-344K and resources 3431-343L that need to be changed.
A configuration service 360 applies any needed changes to the suite, the suite-internal applications 3421-342J, external applications 3441-344K and resources 3431-343L. Note that in
At this time, the suite is configured for hosting the service, and communication between the suite and the hosted service 238 may occur. Additional services may be discovered and hosted in a similar manner. Note that the configuration settings may be backed up at the client, so that if the service becomes unavailable and the client needs to reconfigure itself for another service, for example, the client may later restore the settings when the original service again becomes available and rapidly host the original service again.
As also represented in
The example process described in
At step 404, a list of services is obtained by communicating between the suite software (e.g., via an internal mechanism such as the mechanism 108 or via an external mechanism as in
Once a selection is made and the needed configuration data known, the suite software collects the various configuration data associated with the service, and sends it to the service listing server 220. The transmission may be secure, e.g., via SSL and/or to an address of a trusted service listing server built into the software suite.
Step 410 service then represents the service listing server 220 performing a compatibility check of the client data (of the suite in this example), essentially detecting if the suite's collected configuration is compatible with the selected service's offerings. If the local configuration is not compatible, then the user is notified of this (or some other action taken) as represented at step 412.
If the local configuration is deemed compatible at step 410, then at step 414 the service listing server 220 provisions and configures an instance of the selected service with the necessary resources configured for the suite-specific and installation-specific settings passed up to the service listing server 220. Note that as described above, additional logic may be required to translate the software suite configuration to implied service settings.
At step 416, the service listing server 220 sends down to the suite software the configuration data needed to interface with the selected service. At step 418, the software suite takes the data, applying logic as necessary to translate the required settings into the various workloads (applications and/or resources) and also may make changes to the suite software itself, e.g. to the administration console and/or user wizard.
As represented by step 418, payment for the service or other information such as valid license data for the use of the service may be sent through the same channel, e.g., up to the service listing site and forwarded to the provider.
At this time, the software suite is configured for use with the now-hosted service, and vice-versa as necessary, whereby the user sees the service active in the software suite. For example, the user will see the service integrated into the appropriate places in the workloads and centralized software. Further, any other resources (e.g., disk space, dedicated network bandwidth, dedicated CPU cycles, and so forth) are automatically provisioned as appropriate for use with the service.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
With reference to
The computer 710 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 710 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the computer 710. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer-readable media.
The system memory 730 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 731 and random access memory (RAM) 732. A basic input/output system 733 (BIOS), containing the basic routines that help to transfer information between elements within computer 710, such as during start-up, is typically stored in ROM 731. RAM 732 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 720. By way of example, and not limitation,
The computer 710 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, described above and illustrated in
The computer 710 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 780. The remote computer 780 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 710, although only a memory storage device 781 has been illustrated in
When used in a LAN networking environment, the computer 710 is connected to the LAN 771 through a network interface or adapter 770. When used in a WAN networking environment, the computer 710 typically includes a modem 772 or other means for establishing communications over the WAN 773, such as the Internet. The modem 772, which may be internal or external, may be connected to the system bus 721 via the user input interface 760 or other appropriate mechanism. A wireless networking component 774 such as comprising an interface and antenna may be coupled through a suitable device such as an access point or peer computer to a WAN or LAN. In a networked environment, program modules depicted relative to the computer 710, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
An auxiliary subsystem 799 (e.g., for auxiliary display of content) may be connected via the user interface 760 to allow data such as program content, system status and event notifications to be provided to the user, even if the main portions of the computer system are in a low power state. The auxiliary subsystem 799 may be connected to the modem 772 and/or network interface 770 to allow communication between these systems while the main processing unit 720 is in a low power state.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.