A non-transitory processor-readable medium stores code representing instructions to be executed by a processor. The code causes the processor to receive, from a client device, a request for a service associated with a set of compute devices. The processor is caused to define a normalized request, based on a metadata associated with service requirements. The processor is caused to define a translated request for a compute device from the set of compute devices based on the normalized request. The processor is caused to send the translated request to the compute device in accordance with an endpoint interface associated with a format of the translated request. The processor is caused to receive data associated with the service from the compute device, in response to the translated request. The processor is caused to send, to the client device, a response having a format associated with the client device based on the data.
|
1. A non-transitory processor-readable medium storing code representing instructions to be executed by a processor, the code comprising code to cause the processor to:
receive, from a client device having a data library, a request for a service associated with a plurality of compute devices, each compute device having an endpoint interface for the service;
define a normalized request, in response to the request, based on a metadata associated with one or more service requirements for the service;
define a translated request for a compute device from the plurality of compute devices based on the normalized request, the translated request (1) having a format associated with the endpoint interface for the compute device, (2) based on preference data associated with the client device;
send the translated request to the compute device in accordance with the endpoint interface associated with the format of the translated request;
receive data associated with the service from the compute device via the endpoint interface, in response to the translated request;
calculate a quality-of-service (qos) value for the data based on at least one of the request, the data library, the metadata, or a user account associated with the client device;
define a response based on the qos value such that (1) the response includes the data when the qos value is not less than a pre-defined threshold, and (2) the response includes a message indicating the data as unsatisfactory when the qos value is lower than the pre-defined threshold; and
send, to the client device, the response having a format associated with the client device based on the data.
16. A non-transitory processor-readable medium storing code representing instructions to be executed by a processor, the code comprising code to cause the processor to:
receive, from a client device having a data library, a request for a service from a plurality of services and associated with a plurality of compute devices, each compute device from the plurality of compute devices having an endpoint interface for the service;
receive, from a customization device, a request-customization code associated with the request based on one or more service requirements for the service and the request;
define a normalized request, in response to the request, based on the request-customization code;
select, a translator from a set of translators, based on at least one of a timing of the request or an availability of the service, each translator from the set of translators being uniquely associated with a service from the plurality of services;
define a translated request for a compute device from the plurality of compute devices based on (1) the normalized request, (2) preference data associated with the client device, and (3) the selected translator from the set of translators, the translated request having a format associated with the endpoint interface for that compute device;
send the translated request to the compute device in accordance with the endpoint interface associated with the format of the translated request;
receive data associated with the service from the compute device via the endpoint interface, in response to the translated request;
calculate a quality-of-service (qos) value for the data based on at least one of the request, the data library, metadata associated with one or more service requirements for the service, or a user account associated with the client device;
define a response having a format associated with the request-customization code based on the data; and
send, to the client device, the response having the format associated with the request-customization code based on the data.
10. An apparatus, comprising:
a normalization module implemented in at least one of a memory or a processing device, the normalization module configured to receive a request for a service from a plurality of services from a client device having a plurality of data libraries, the service from the plurality of services being associated with a compute device having an endpoint interface for the service, the normalization module being configured to receive at least one metadata associated with one or more service requirements for the service, the normalization module configured to define a normalized request in response to the request, based on the metadata;
a virtualization module including a set of translators, each translator from the set of translators being uniquely associated with a service from the plurality of services, the virtualization module configured to define a translated request for the compute device based on the normalized request and a translator from the set of translators, the translated request having a format associated with the endpoint interface for the compute device, the virtualization module configured to send the translated request to the compute device in accordance with the endpoint interface associated with the format of the translated request;
a control module configured to switch automatically between translators from the set of translators, (1) using the metadata based on at least one of a timing of the request or an availability of the service, and (2) based on preference data of a user of the client device; and
a data module configured to receive data associated with the service from the compute device via the endpoint interface, the data module configured to calculate a quality of service value for the data based on at least one of the request, a data library from a plurality of data libraries of the client device, the metadata, or a user account associated with the client device, the data module configured to define a translated response having a format associated with the client device based on the data and a data library from the plurality of data libraries of the client device, the data module configured to send the translated response to the client device.
2. The non-transitory processor-readable medium of
3. The non-transitory processor-readable medium of
4. The non-transitory processor-readable medium of
define the response based on the data and a second data library associated with the client device without reconfiguring or changing the first data library.
5. The non-transitory processor-readable medium of
6. The non-transitory processor-readable medium of
define a user priority for each user account from a plurality of user accounts associated with a plurality of client devices based on the qos value for each client device from the plurality of client devices, the code to send the translated request being based on the user priority for the user account associated with the client device.
7. The non-transitory processor-readable medium of
receive, at a second time after the first time, a request for a run-time service associated with the compute device and the data;
define a second normalized request, in response to the request for the run-time service, based on metadata associated with one or more service requirements for the run-time service;
define a second translated request for the compute device based on the second normalized request, the second translated request having a format associated with the endpoint interface for the compute device;
send the second translated request to the compute device in accordance with the endpoint interface associated with the format of the second translated request;
receive run-time data associated with the run-time service from the compute device via the endpoint interface, in response to the second translated request; and
send a second response based on the run-time data.
8. The non-transitory processor-readable medium of
9. The non-transitory processor-readable medium of
11. The apparatus of
control module is configured to switch between translators from the set of translators without reconfiguring or changing the plurality of data libraries.
12. The apparatus of
further comprising a web-based administrative interface configured to receive configuration data associated with a new translator, the set of translators defined to include the new translator.
13. The apparatus of
further comprising:
a web-based administrative interface configured to receive configuration data associated with a new translator, the set of translators defined to include the new translator; and
a code generator responsive to the configuration data to generate the new translator.
14. The apparatus of
15. The apparatus of
17. The non-transitory processor-readable medium of
18. The non-transitory processor-readable medium of
19. The non-transitory processor-readable medium of
20. The non-transitory processor-readable medium of
define a user priority for each user account from a plurality of user accounts associated with a plurality of client devices, based on the qos value for each client device from the plurality of client devices, the code to send the normalized request being based on at least one of (1) the user priority for the user account associated with that client device, and (2) a metadata associated with the request.
|
This application claims priority to U.S. Provisional Patent Application No. 61/673,490, filed on Jul. 19, 2012, entitled “Federated Data Access from Various Mobile and Web Client Platforms using a Virtualized Web Service”, which is incorporated herein by reference in its entirety.
Some embodiments described herein relate generally to methods and apparatus for resource management by providing abstraction layers to services that expose a unified application programming interface (API) and can be configured dynamically.
The use and popularity of mobile devices continues to increase. In mobile communication environments, value of access to information has increased as users have become more dependent on accessing information on the go from both mobile devices and other network-connected devices. Mobile and network development is complicated by the mixing of public data and private data with the plethora of popular public media content services and proprietary security-sensitive data. Another challenge is making the data available to an application and avoiding proprietary and fragmented Application Programming Interfaces (APIs) that complicate the application code running on the devices. Another side effect of depending directly on a proprietary API is keeping up with breaking API version changes. In addition to the proprietary API challenge, considerations exist because many of the API providers charge per API call and freely change their pricing structure.
Therefore, a need exists for an approach to provide resource management by abstraction of multiple competing services to allow users to switch between various services without the need to change related applications or for new versions of the services to be released.
In some embodiments, a non-transitory processor-readable medium stores code representing instructions to be executed by a processor, the code comprising code to cause the processor to receive, from a client device having a data library, a request for a service associated with a set of compute devices. Each compute device has an endpoint interface for the service. The processor is also caused to define a normalized request, in response to the request, based on a metadata associated with one or more service requirements for the service. The processor is further caused to define a translated request for a compute device from the set of compute devices based on the normalized request. The translated request has a format associated with the endpoint interface for that compute device. The processor is also caused to send the translated request to the compute device in accordance with the endpoint interface associated with the format of the translated request. The processor is also caused to receive data associated with the service from the compute device via the endpoint interface, in response to the translated request. The processor is also caused to send, to the client device, a response having a format associated with the client device based on the data.
Methods and apparatus are described herein, for example, to provide resource management via abstraction of services to allow users to switch between various services without the need to change related applications or for new versions of the service to be released. In some embodiments, a non-transitory processor-readable medium stores code representing instructions to be executed by a processor, the code comprising code to cause the processor to receive, from a client device having a data library, a request for a service associated with a set of compute devices. Each compute device has an endpoint interface for the service. The processor is also caused to define a normalized request, in response to the request, based on a metadata associated with one or more service requirements for the service. The processor is further caused to define a translated request for a compute device from the set of compute devices based on the normalized request. The translated request has a format associated with the endpoint interface for that compute device. The processor is also caused to send the translated request to the compute device in accordance with the endpoint interface associated with the format of the translated request. The processor is also caused to receive data associated with the service from the compute device via the endpoint interface, in response to the translated request. The processor is also caused to send, to the client device, a response having a format associated with the client device based on the data.
In some embodiments, a normalization module is configured to receive a request for a service from a client device having a set of data libraries. The service is associated with a compute device having an endpoint interface for the service. The normalization module is configured to receive at least one metadata associated with one or more service requirements for the service. The normalization module is configured to define a normalized request in response to the request, based on the metadata. A virtualization module is configured to define a translated request for the compute device based on the normalized request. The translated request has a format associated with the endpoint interface for the compute device. The virtualization module is configured to send the translated request to the compute device in accordance with the endpoint interface associated with the format of the translated request. A data integration module is configured to receive data associated with the service from the compute device via the endpoint interface. The data integration module configured to define a response having a format associated with the client device based on the data. The data integration module configured to send the response to the client device.
In some embodiments, a non-transitory processor-readable medium stores code representing instructions to be executed by a processor, the code comprising code to cause the processor to receive, from a client device having a data library, a request for a service associated with a set of compute devices. Each compute device has an endpoint interface for the service. The processor is also caused to receive, from a customization device, a request-customization code associated with the request based on one or more service requirements for the service and the request. The processor is also caused to define a normalized request, in response to the request, based on the request-customization code. The processor is also caused to define a translated request for a compute device from the set of compute devices based on the normalized request. The translated request has a format associated with the endpoint interface for that compute device. The processor is also caused to send the translated request to the compute device in accordance with the endpoint interface associated with the format of the translated request. The processor is also caused to receive data associated with the service from the compute device via the endpoint interface, in response to the translated request. The processor is also caused to define a response having a format associated with the request-customization code based on the data. The processor is also caused to send, to the client device, the response having a format associated with the request-customization code based on the data.
As used herein, the singular forms “a,” “an” and “the” include plural referents unless the context clearly dictates otherwise. Thus, for example, the term “a “resource” is intended to mean a single resource or a combination of resources (e.g., data sets, data bases, files, data warehouses, etc. provided by different service provider compute devices 109 of
As used herein, a platform can include, for example, a hardware architecture and a software framework (including application frameworks), where the combination allows software to be executed. A platform can include multiple components or modules. As used herein, a module can be, for example, any assembly and/or set of operatively-coupled electrical components, and can include, for example, a memory, a processor, electrical traces, optical connectors, software (executing or to be executed in hardware) and/or the like.
Communication network 105 can be any communication network, such as the Internet, configurable to allow the client device 101a-101n, the resource management platform 103, and the service provider compute device 109 to communicate with communication network 105 and/or to each other and to access the resource 111. Communication network 105 can be any network or combination of networks capable of transmitting information (e.g., data and/or signals) and can include, for example, a telephone network, an Ethernet network, a fiber-optic network, a wireless network, and/or a cellular network.
In some instances, communication network 105 can include multiple networks operatively coupled to one another by, for example, network bridges, routers, switches and/or gateways. For example, the client device 101a-101n and/or the resource 111 can be operatively coupled to a cellular network; the service provider compute device 109 and/or the resource management platform 103 can be operatively coupled to a fiber-optic network. The cellular network and fiber-optic network can each be operatively coupled to one another via one or more network bridges, routers, switches, and/or gateways such that the cellular network, the Ethernet network and the fiber-optic network are operatively coupled to form a communication network. Alternatively, the cellular network and fiber-optic network can each be operatively coupled to one another via one or more additional networks. For example, the cellular network and the fiber-optic network can each be operatively coupled to the Internet such that the cellular network, the fiber-optic network and the Internet are operatively coupled to form a communication network.
As illustrated in
A network connection can be a wireless network connection such as, for example, a wireless fidelity (“Wi-Fi”) or Wireless Local Area Network (“WLAN”) connection, a Wireless Wide Area Network (“WWAN”) connection, and/or a cellular connection. A network connection can be a wired connection such as, for example, an Ethernet connection, a Digital Subscription Line (“DSL”) connection, a broadband coaxial connection, and/or a fiber-optic connection.
As mentioned above, in some instances, a computer system 100 can include more than one client device 101a-101n, more than one resource management platform 103, more than one service provider compute device 109, and more than one resource 111. A client device 101a-101n, a resource management platform 103, a service provider compute device 109 and/or a resource 111, can be operatively coupled to the communication network 105 by heterogeneous network connections. For example, a first client device 101a-101n can be operatively coupled to the communication network 105 by a WWAN network connection, another client device 101a-101n can be operatively coupled to the communication network 105 by a DSL network connection, and a resource management platform 103 can be operatively coupled to the communication network 105 by a fiber-optic network connection. The service provider compute device 109 can be, for example, a web server configured to provide various applications to electronic devices, such as client device 101a-101n.
The client device 101a-101n can be any of a variety of electronic devices that can be operatively coupled to communication network 105. A client device 101a-101n can be a personal computer, a tablet computer, a personal digital assistant (PDA), a cellular telephone, a portable/mobile internet device and/or some other electronic communication device. The client device 101a-101n can include a web browser configured to access a service (e.g., a webpage or website) hosted on or accessible via the service provider compute device 109 over communication network 105. The client device 101a-101n can be configured to support, for example, HTML using JavaScript. For example, the client device 101a-101n can include a web browser, such as, Internet Explorer®, Firefox®, Safari®, Dolphin®, Opera® and Chrome®, etc. An Internet page or website can be accessed by a user of a web browser at a client device 101a-101n by providing the web browser with a reference such as a uniform resource locator (URL), for example, of a webpage.
A resource 111 can be an application, data associated with the application, etc. stored in a memory location and a service provider compute device 109 can be a web server storing, configuring and providing resource(s) 111 to client devices 101a-101n. For example, the resource(s) 111 can be texts, photos, videos, music, etc. In some instances, a user of a client device 101a-101n can access a resource 111 provided by a service provider compute device 109, via a URL designated for the service provider compute device 109. The client device 101a-101n can access a resource 111 provided by the service provider compute device 109 via the URL. In some instances, a client device 101a-101n can include specialized software for accessing a service provided by a service provider compute device 109 using a web server other than a browser, such as, for example, a specialized network-enabled application or program. In some instances, portions of a resource 111 accessible via a resource management platform 103 can be located in a local or remote memory space/data store accessible to the resource management platform 103. Such data store can be at least one of a database, a data warehouse, or a file. A client device 101a-101n can also include a display, monitor or user interface (UI) 107, a keyboard, various ports (e.g., a Universal Serial Bus (USB) port), and other user interface components, such as, for example, digital pens, mice, touch screen controls, audio components, and/or video components (each not shown). A client device 101a-101n can be operatively coupled to communication network 105 via the UI 107 and network connection 113.
In some instances, the resource management platform 103 provides synchronizing, managing, tracking, transforming and filtering of resource(s) 111 to be provided to a user of a client device 101a-101n by service provider compute devices 109. The resource(s) 111 can be provided by a service provider compute device 109 to multiple client devices 101a-101n by way of a unified interface over a web service protocol backed by sources such as a database, web cache, online content provider, etc.
In some instances, a client device 101a-101n can includes a set of client data libraries (not shown in
In some instances, the resource management platform 103 can define virtual services as a collection of endpoint interfaces or Application Programming Interfaces (APIs) based on services provided by one or more service provider compute device(s) 109. Each service provider compute device 109 can be associated with an API for a service provided by the service provider compute device 109. In some instances, APIs can be provided through a service mediation device (not shown in
In some instances, the resource management platform 103 can provide access to a service provider compute device 109 as a “backend as a service” platform. This enables a user of client device 101a-101n to setup and operate access to services provided by service provider compute devices 109 for mobile, tablet and/or web applications. The user can use the client data libraries to get access to one or more resource(s) 111 including, for example, at least one of a REST-based application service, a file storage service, a push notification service, a geo-location service, a mobile analytic service, a user management service, a data-level privacy service, a security access control service, etc.
In some instances, the computer system 100 can be implemented in a cloud-based architecture. For example, the resource management platform 103, the service provider compute device 109 and/or the resource(s) 111 can be associated with a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines services, etc.) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. Moreover, service models that can be leveraged in whole or in part include, for example, Software as a Service (SaaS), where applications associated the service provider compute device 109 run on cloud infrastructure; Platform as a Service (PaaS), where the client device 101a-101n can deploy applications that may be defined by the service provider compute device 109 onto the cloud infrastructure; Infrastructure as a Service (IaaS), where the client device 101a-101n can provision its own processing, storage, networks and other computing resources and can deploy and run operating systems and applications.
The computer system 100 can include co-located hardware and software resource(s) 111, or resources that are physically, logically, virtually and/or geographically distinct. Furthermore, the communication network 105 can be packet-based, non-packet based, secure, non-secure, or combinations thereof.
In various instances, the resource management platform 200 and its components may be located anywhere within a computer system 100 such as that shown in
In some instances, the virtualization module 203 can define a translated request from the normalized request. The virtualization module 203 can have one or more translator(s) 205 to translate the normalized request provided by the normalization module 201 for a service provider compute device 109 such that the translated request has a format suitable for an API of the service provider compute device 109.
In some instances, each translator 205 can be uniquely associated with a service provided by a service provider compute device 109. In such instances, the control module 207 can activate a translator 205 based on the requested service. For example, a translator T1 can be associated with a service S1 and a translator T2 different from translator T1 can be associated with a service S2 different from service S1. In this example, if the client device 101a-101n requests a service S1, the control module 207 activates translator T1. Similarly, translator T2 is activated if the requested service is service S2. The translated request can be sent by the resource management platform 200 to a service provider compute device 109 via an output signal 219. In some instances, the control module 207 can switch between translators from the set of translators 205 without a need for reconfiguration or changing of the client data libraries associated with the client device 101a-101n. For example, a user of a client device 101a-101n will not have to update the client data libraries or download new client data libraries to be able to access new services provided by service provider compute devices 109.
In some instances, the control module 207 can switch automatically between translators from the set of translators 205, using metadata associated with the data in client data libraries. Metadata refers to data about data. For example, a request received from a client device 101a-101n can be associated with metadata such as, for example, request date, request time, location of the client device 101a-101n at the time of request, etc. The metadata can also include service requirements with regards to a service provider compute device 109 such as, for example, a network host, a port, Hypertext Transfer Protocol (HTTP) properties, socket based properties, etc., as well as authentication metadata used for transmission of request to the service provider compute device 109.
In some instances, the control module 207 can select a translator, for example, based on a time of the request, an availability of the requested service, based on preference data of a user of the client device 101a-101n, etc. For example, a client device 101a-101n can have an associated priority of service during certain hours during the day. In such cases, the control module 207 can switch between translators 205 to direct the request to a service provider compute device 109 that is available during those hours.
In some instances, the resource management platform 200 can provide an administrative interface configured to receive configuration data associated with a new translator 205. The virtualization module 203 can use the configuration data to define the new translator. For example, the new translator can be associated with a new service provider compute device 109. The resource management platform 200 can include a component such as, for example, a code generator (not shown) to define the new translator.
In some instances, the resource management platform 200 receives a response to the translated request from the service provider compute device 109 via an input signal 217. In such instances, the quality of service module 209 can evaluate a quality-of-service (QoS) value for the response based on a client data library associated with the client device 101a-101n that initiated the request, based on metadata associated with the client device 101a-101n, based on a user account associated with the client device 101a-101n, etc.
In some instances, the control module 207 can define whether the response is being sent to the client device 101a-101n based on the calculated value of the QoS. For example, if the value of QoS is lower than a predefined threshold, the control module 207 can prevent the response from being sent to the client device 101a-101n. The control module 207 can send a message to the client device 101a-101n indicating that the response is not satisfactory. The control module 207 can send a signal to the virtualization module 203 to translate the normalized query using a different translator 205 associated with a different service provider compute device 109, for example, based on an instruction from a user of the client device 101a-101n.
In some instances, if the QoS value is higher than the predefined threshold, the data integration module 211 can transform the response to a transformed response, using a transformer 213, to a format associated with the client device 101a-101n. The resource management platform 200 can send the transformed response to the client device 101a-101n via an output signal 219.
In some instances, a user priority is defined for each user account from multiple user accounts associated with a client device 101a-101n. The user priority can be defined based on the QoS value for each client device 101a-101n. In such instances, the virtualization module 203 can send the translated request to a service provider compute device 109 based on the user priority for the user account associated with the client device 101a-101n. For example, service requests from users with higher priorities can be sent to the service provider compute device 109 before service requests from users with lower priorities.
In some instances, the resource management platform 200 can provide access to the client device 101a-101n, to service provider compute devices 109 providing various services such as, for example, a REST-based application service, a file storage service, a push notification service, a geo-location service, a mobile analytic service, a user management service, a data-level privacy service, a security access control service, etc.
In some instances, each client device 101a-101n can be associated with at least one client data library that enables the client device 101a-101n to define a request for the service. For example, the at least one client data library can be used for defining an Input/Output (I/O) request to the resource management platform 200. The resource management platform 200 can examine availability of the service provider compute devices 109, for example, based on a dynamically-configurable set of metrics to select a service provider compute device 109 to which to forward the request. The set of metrics can be from different categories such as, for example, cost, client device sensor data, service provider compute device availability, service provider compute device performance, etc.
In some instances, the resource management platform 200 can monitor and manage request routes (e.g., the service provider compute devices to which a request can be sent) based on resource availability, load of each service provider compute device 109, responsiveness of each service provider compute device 109, rate limits of each service provider compute device 109, etc. The resource management platform 200 can manage resources and route requests, for example, based on cloud scaling and partitioning algorithm to scale different parts based on pre-defined rules, peak traffic triggers, time-based analysis, dynamic cluster re-configuration, storing and routing of data associated with requests and responses to specific data stores (e.g., data stores 215) based on pre-defined rules, etc.
In some instances, each service provider compute device 109 can have an endpoint interface that provides an API for the service. For example, the resource management platform 200 can enable integration among service provider compute devices 109. Service provider compute device 109 can include public APIs for public services such as, for example, Google® Places, Yahoo!® Local, etc. Additionally/alternatively, a service provider compute device 109 can provide private services hosted on a customer's own services. The resource management platform 200 simplifies accessing these services using a standard API for each class/type of service. Each service provider API can be exposed through a service provider endpoint interface (not shown) such that the APIs can be accessible, for example, through a Representational State Transfer (REST)-based application data store and/or the client data libraries of the client device 101a-101n.
At 303, a normalized request is defined, in response to the request, for example, by a normalization module (e.g., 201 shown in
At 305, a translated request is defined, based on the normalized request, for a service provider compute device from the one or more service provider compute devices (e.g., 109 shown in
At 307, the translated request can be sent to the service provider compute device (e.g., 109 shown in
At 309, data associated with the service is received from the service provider compute device (109) via the endpoint interface and an input signal (217) at the resource management platform (200), in response to the translated request. In some instances, the data integration module (e.g., 211 shown in
At 311, a response provided by a data integration module (211) based on the data received from the service provider compute device (109), is sent from the resource management platform (200) to the client device (101a-101n). The response has a format associated or compatible with the client device (101a-101n) based on the data. In some instances, the data integration module 211 provides the response based on a client data library of the client device 101a-101n associated with the service. Note that, the client device can have multiple client data libraries associated with various services. In such instances, the data integration module 211 can define the response based on the received data and the client data library of the client device that is associated with the service without reconfiguring or changing other client data libraries of the client device 101a-101n.
In some instances, the client device 101a-101n can be associated with a network external from the network with which the service provider compute device 109 is associated. In such instances, the resource management platform 103 can translate the request based on configurations and characteristics associated with the service provider compute device 109 network before sending the translated request to the service provider compute device 109. The resource management platform 103 can also transform the data associated with the service received from the service provider compute device 109 based on configurations and characteristics associated with the client device 101a-101n network before sending the response to the client device 101a-101n.
In some instances, the client data 407 can include various data associated with a client device 101a-101n such as, for example, geo-location data indicating location of the client device 101a-101n, battery life of the client device 101a-101n, a Unique Device Identifier (UDID) of the client device 101a-101n, a priority indicator associated with the client device 101a-101n, etc.
In some instances, the metadata 409 can include, for example, an endpoint availability indicator showing availability of an endpoint interface associated with the service provider compute device 109. The metadata 409 can also include response time for the service provider compute device 109, desired response time for a client device 101a-101n, etc.
For example, the quality of service module 403 can collect data associated with the service such as endpoint availability, response time, etc. from the service provider compute device 109 (not shown in
In some instances, the quality of service module 403 can send the QoS value to the data integration module 401. The data integration module 401 can integrate the data received from the service provider compute device (109) in response to a request, into a response to the request from the client device 101a-101n based on the QoS value, as previously discussed with regards to
In some instances, the resource management platform 200 can provide pre-integrated public services to the client devices 101a-101n. The pre-integrated public services can, for example, include public services such as, for example, Google® Places, Yahoo!® Local, Twitter®, Facebook®, etc. In such instances the resource management platform 200 can enable the client device 101a-101n to request the pre-integrated public service associated with APIs 509 via API 505.
In some instances, the resource management platform 200 can provide Representational State Transfer (REST)-based services to the client devices 101a-101n. In such instances the resource management platform 200 can provide a link and REST rules 513 to the client device 101a-101n. The key and REST rules 513 enable the client device 101a-101n to access REST APIs 517 for various REST services from the resource management platform 200.
In some instances, the resource management platform 200 can provide private services to the client devices 101a-101n. The private services can be, for example, services provided by a service provider compute device 109 of
A service provider compute device 609 can be operatively coupled to one or more client devices 601a-601n, one or more resource(s) 611, one or more customization devices 621, and/or other service provider compute devices 609 via a communication network 605 (similar to the communication network 105 of
As illustrated in
As mentioned above, in some instances, a computer system 600 can include more than one client device 601a-601n, more than one resource management platform 603, more than one service provider compute device 609, and more than one resource 611. A client device 601a-601n, a resource management platform 603, a service provider compute device 609, a resource 611, and/or a customization device 621 can be operatively coupled to the communication network 605 by heterogeneous network connections. For example, a first client device 601a-601n can be operatively coupled to the communication network 605 by a WWAN network connection, another client device 601a-601n can be operatively coupled to the communication network 605 by a DSL network connection, and a resource management platform 603 can be operatively coupled to the communication network 605 by a fiber-optic network connection. The service provider compute device 609 can be, for example, a web server configured to provide various applications to electronic devices, such as client device 601a-601n.
The customization device 621 can be any of a variety of electronic devices that can be operatively coupled to communication network 605. A customization device 621 can be, for example, a personal computer, a tablet computer, a personal digital assistant (PDA), a cellular telephone, a portable/mobile internet device and/or some other electronic communication device. The customization device 621 can include a web browser configured to access a service (e.g., a webpage or website) hosted on or accessible via the service provider compute device 609 over communication network 605. The customization device 621 can be configured to support, for example, HTML using JavaScript. For example, the customization device 621 can include a web browser, such as, Internet Explorer®, Firefox®, Safari®, Dolphin®, Opera® and Chrome®, etc. An Internet page or website can be accessed by a user of a web browser at a customization device 621 by providing the web browser with a reference such as a uniform resource locator (URL), for example, of a webpage.
In some instances, a user of a customization device 621 can access a resource 611 provided by a service provider compute device 609, via a URL designated for the service provider compute device 609. The customization device 621 can access an application provided by the service provider compute device 609 via the URL. A resource 611 can be an application, data associated with the application, etc. stored in a memory location and a service provider compute device 609 can be a web server storing, configuring and providing resource(s) 611 to client devices 601a-601n. For example, the resource(s) 611 can be texts, photos, videos, music, etc. In some instances, a customization device 621 can include specialized software for accessing a service provided by a service provider compute device 609 using a web server other than a browser, such as, for example, a specialized network-enabled application or program. In some instances, portions of a resource 611 accessible via a resource management platform 603 can be located in a local or remote memory space/data store accessible to the resource management platform 603. Such data store can be at least one of a database, a data warehouse, or a file. A customization device 621 can also include a display, monitor or user interface (not shown), a keyboard, various ports (e.g., a USB port), and other user interface components, such as, for example, digital pens, mice, touch screen controls, audio components, and/or video components (each not shown).
In some instances, a customization device 621 can includes a set of client data libraries (not shown in
In some instances, the customization device 621 can be a service mediation device to access and customize a response to a request before the response is sent to the client device 601a-601n. The customization device 621 can customize the response based on a format associated with the client device 601a-601n.
In various instances, the resource management platform 603 can provide resource management services similar to the services provided by the resource management platform 103. Additionally, the resource management platform 603 enables a customization device 621 to access and customize a request from a client device 601a-601n before providing the requested service to the client device 601a-601n.
In various instances, the resource management platform 700 and its components may be located anywhere within a computer system 600 such as that shown in
In various instances, the resource management platform 700 can provide resource management services similar to the services provided by the resource management platform 200. Additionally, resource management platform 700 enables a customization device 621 to access and customize a request from a client device 601a-601n before sending the request to the normalization module 701. The customization device 621 can also customize a response to a request before the response is sent to the client device 601a-601n.
In some instances, the customization device 621 can receive a request from the client device 601a-601n, update the request based on one or more pre-defined customization rules (not shown) and send the customized request to the resource management platform 700. In some other instances, the customization device 621 can send the customization rules to the resource management platform 700. In such instances, the customization rules can be stored in the data store(s) 715. Upon receiving a request from a client device 601a-601n at the resource management platform 700, the customization module 717 can apply the customization rules provided by the customization device 621 to the request before the request is normalized by the normalization module 701.
In some instances, the customization module 717 receives, from a customization device 621, a request-customization code associated with a request from a client device 601a-601n. The customization code can be based on one or more service requirements for the service and/or the request.
In some other instances, the customization module 717 can receive a request for a service from a client device 601a-601n of
The process of providing a response to the request was previously discussed with regards to
In some instances, the control module 707 can define whether the response is being sent to the client device 601a-601n based on the calculated value of the QoS. For example, if the value of QoS is lower than a predefined threshold the control module 707 can prevent the response from being sent to the client device 601a-601n. The control module 707 can send a message to the client device 601a-601n indicating that the response is not satisfactory. The control module 707 can send a signal to the virtualization module 703 to translate the normalized query using a different translator 705 associated with a different service provider compute device 609, for example, based on an instruction from a user of the client device 601a-601n.
In some instances, the customization device 621 can customize the response before the response is sent to the client device 601a-601n. In such instances, the customization module 717 can update the response based on a format associated with the request-customization code received from the customization device 621.
At 803, a request-customization code associated with the request is received at a customization module (e.g., 717 shown in
At 805, a normalized request is defined, in response to the request, for example, by the normalization module (e.g., 701 shown in
At 809, the translated request can be sent to the service provider compute device (e.g., 609 shown in
At 811, data associated with the service is received from the service provider compute device (609) via the endpoint interface and an input signal (719) at the resource management platform (700), in response to the translated request.
In some instances, the data integration module (e.g., 711 shown in
The response provided by the data integration module 711 can be sent to the client device (601a-601n) by the resource management platform (700). The response can have a format associated with the client device (601a-601n) based on the data and/or based on the request customization-code provided by the customization module (621). In some instances, the data integration module (211) can provide the response based on a client data library of the client device (601a-601n) associated with the service.
It is intended that the methods and apparatus described herein can be performed by software (executed on hardware), hardware, or a combination thereof. Hardware modules may include, for example, a general-purpose processor, a field programmable gate array (FPGA), and/or an application specific integrated circuit (ASIC). Software modules (executed on hardware) can be expressed in a variety of software languages (e.g., computer code), including C, C++, Java™, Ruby, Visual Basic™, and other object-oriented, procedural, or other programming language and development tools. Examples of computer code include, but are not limited to, micro-code or micro-instructions, machine instructions, such as produced by a compiler, code used to produce a web service, and files containing higher-level instructions that are executed by a computer using an interpreter. Additional examples of computer code include, but are not limited to, control signals, encrypted code, and compressed code.
Some embodiments described herein relate to a computer storage product with a non-transitory computer-readable medium (also can be referred to as a non-transitory processor-readable medium) having instructions or computer code thereon for performing various computer-implemented operations. The computer-readable medium (or processor-readable medium) is non-transitory in the sense that it does not include transitory propagating signals per se (e.g., a propagating electromagnetic wave carrying information on a transmission medium such as space or a cable). The media and computer code (also can be referred to as code) may be those designed and constructed for the specific purpose or purposes. Examples of non-transitory computer-readable media include, but are not limited to, magnetic storage media such as hard disks, floppy disks, and magnetic tape; optical storage media such as Compact Disc/Digital Video Discs (CD/DVDs), Compact Disc-Read Only Memories (CD-ROMs), and holographic devices; magneto-optical storage media such as optical disks; carrier wave signal processing modules; and hardware devices that are specially configured to store and execute program code, such as Application-Specific Integrated Circuits (ASICs), Programmable Logic Devices (PLDs), Read-Only Memory (ROM) and Random-Access Memory (RAM) devices.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Where methods and steps described above indicate certain events occurring in certain order, the ordering of certain steps may be modified. Additionally, certain of the steps may be performed concurrently in a parallel process when possible, as well as performed sequentially as described above. Although various embodiments have been described as having particular features and/or combinations of components, other embodiments are possible having any combination or sub-combination of any features and/or components from any of the embodiments described herein.
Bickle, Morgan R., Wilson, Brian A., Stoyanov, Ivan D., Sridhar, Sravish
Patent | Priority | Assignee | Title |
10348866, | Feb 19 2016 | WUHAN MBAAS COMPUTING CO LTD | Apparatus, system and method to provide IoT cloud backend service |
10616036, | Jun 07 2017 | Accenture Global Solutions Limited | Integration platform for multi-network integration of service platforms |
9274763, | Apr 23 2013 | Clearblade, Inc. | System and method for creating a development and operational platform for mobile applications |
9934003, | Apr 23 2013 | Clearblade, Inc. | System and method for creating a development and operational platform for mobile applications |
Patent | Priority | Assignee | Title |
8346932, | Jul 31 2007 | SUTUS, INC | System for providing integrated voice and data services |
8739282, | Mar 14 2013 | Meta Platforms, Inc | Mobile development platform in a cloud based architecture |
20060112398, | |||
20070118560, | |||
20080005086, | |||
20090182565, | |||
20120233595, | |||
20130019018, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 12 2013 | SRIDHAR, SRAVISH | KINVEY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030608 | /0822 | |
Jun 12 2013 | BICKLE, MORGAN R | KINVEY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030608 | /0822 | |
Jun 12 2013 | WILSON, BRIAN A | KINVEY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030608 | /0822 | |
Jun 12 2013 | STOYANOV, IVAN D | KINVEY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030608 | /0822 | |
Jun 13 2013 | Kinvey, Inc. | (assignment on the face of the patent) | / | |||
Nov 30 2017 | Progress Software Corporation | JPMORGAN CHASE BANK, N A , AS ADMINISTRATIVE AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 044889 | /0325 | |
Nov 30 2017 | KINVEY, INC | KINVEY, LLC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 062447 | /0236 | |
Apr 30 2019 | Progress Software Corporation | JPMORGAN CHASE BANK, N A , ADMINISTRATIVE AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 049031 | /0684 | |
Jul 17 2020 | KINVEY, LLC | Progress Software Corporation | MERGER SEE DOCUMENT FOR DETAILS | 062436 | /0967 | |
Mar 07 2024 | Progress Software Corporation | JPMORGAN CHASE BANK, N A , AS ADMINISTRATIVE AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 066762 | /0833 |
Date | Maintenance Fee Events |
Dec 03 2018 | M2551: Payment of Maintenance Fee, 4th Yr, Small Entity. |
Dec 02 2022 | M2552: Payment of Maintenance Fee, 8th Yr, Small Entity. |
Date | Maintenance Schedule |
Jun 02 2018 | 4 years fee payment window open |
Dec 02 2018 | 6 months grace period start (w surcharge) |
Jun 02 2019 | patent expiry (for year 4) |
Jun 02 2021 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 02 2022 | 8 years fee payment window open |
Dec 02 2022 | 6 months grace period start (w surcharge) |
Jun 02 2023 | patent expiry (for year 8) |
Jun 02 2025 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 02 2026 | 12 years fee payment window open |
Dec 02 2026 | 6 months grace period start (w surcharge) |
Jun 02 2027 | patent expiry (for year 12) |
Jun 02 2029 | 2 years to revive unintentionally abandoned end. (for year 12) |