IP Library › Granted Patent US 10,120,734
Granted Patent B1
US 10,120,734 · App. 15/250,187 · Granted Nov 6, 2018

Application programming interface and services engine with application-level multi-tenancy

Inventors: Vijaay Doraiswamy (Fremont, CA); Ramchandra Jayateerth Koty (Sunnyvale, CA); Purvish Purohit (Sunnyvale, CA); Mahendra Malviya (San Jose, CA); Mohit Mathur (Bedok, SG); Darel P. Lasrado (Punggol, SG); Manikandan Kaliyaperumal (Sunnyvale, CA); Premkumar Soman (Punggol, SG)
Assignee: Equinix, Inc.
G06F9/541G06F21/44
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,120,734
App. No.
15/250,187
Granted
Nov 6, 2018
Kind
B1
Abstract

In some examples, an application programming interface (API) and services engine is configured to determine, in response to receiving a service request from an application, an application identifier for the service request based at least on an authorization token included in the service request, wherein the application identifier identifies an application that issued the service request; select, based at least on the application identifier, an application data store uniquely associated with the application that issued the service request; and process the service request using data stored by the selected application data store.

Claims (72)

1. A method comprising:

determining, by an application programming interface (API) and services engine in response to receiving a service request from an application, an application identifier for the service request based at least on an authorization token included in the service request, wherein the application identifier identifies an application that issued the service request;

selecting, by the API and services engine based at least on an association, stored by the API and services engine, of the application identifier and the authorization token, an application data store uniquely associated with the application that issued the service request; and

processing, by the API and services engine, the service request using data stored by the selected application data store.

2. The method of claim 1 , further comprising:

receiving, by the API and services engine from the application via a login API, a login service request for a user, wherein the login service request includes at least one of an API consumer key and an API consumer secret; and

determining, by the API and services engine based at least on the one of the API consumer key and the API consumer secret, that the application issued the login service request.

3. The method of claim 2 , further comprising:

obtaining, by the API and services engine in response to authorizing the user responsive to the login service request, the authorization token; and

storing, by the API and services engine, the association of the authorization token and the application identifier for the application,

wherein determining the application identifier for the service request comprises determining, by the API and services engine based at least on the association and the authorization token, the application identifier for the service request.

4. The method of claim 1 , wherein the service request does not include the application identifier.

5. The method of claim 4 , further comprising:

sending, by an API gateway of the API and services engine to a service library of the API and services engine and via a library API, a modified service request that includes the application identifier and includes data from the service request.

6. The method of claim 5 , wherein the application identifier comprises an application data store name for the application data store.

7. The method of claim 1 , further comprising:

receiving, by a service library of the API and services engine from an API gateway of the API and services engine and via a library API, a modified service request that includes the application identifier, includes data from the service request, and specifies a service,

wherein selecting the application data store uniquely associated with the application that issued the service request comprises determining, by the service library based on configuration data that associates the application identifier to a service engine for the service, the service engine that manages the application data store uniquely associated with the application that issued the service request,

wherein processing the service request comprises processing, by the service engine, the modified service request using the application data store uniquely associated with the application that issued the service request.

8. The method of claim 1 ,

wherein the API and services engines comprises a plurality of server clusters, each server cluster of the plurality of server clusters comprising a service engine for a service specified by the service request and storing a different partition of the application data store uniquely associated with the application that issued the service request, the method further comprising:

receiving, by a service library of the API and services engine from an API gateway of the API and services engine and via a library API, a modified service request that includes the application identifier and includes data from the service request;

applying a hash function to the data from the service request to determine a server cluster of the plurality of clusters with which to process the modified service request; and

sending, by the service library to the server cluster, the data from the service request.

9. The method of claim 8 ,

wherein the service request comprises a first service request,

wherein the server cluster comprises a first server cluster, the method further comprising:

determining, by the API and services engine in response to receiving a second service request from the application, an application identifier for the second service request based at least on an authorization token included in the second service request, wherein the application identifier identifies the application that issued the second service request;

receiving, by the service library of the API and services engine from the API gateway of the API and services engine and via the library API, a second modified service request that includes the application identifier for the second service request and includes data from the second service request;

applying the hash function to the data from the second service request to determine a second server cluster of the plurality of clusters with which to process the second modified service request; and

sending, by the service library to the second server cluster, the data from the second service request.

10. The method of claim 1 ,

wherein the API and services engine comprises a plurality of application data stores, and

wherein the API and services engine comprises configuration data that uniquely associates each of the application data stores to a different application served by API and services engine.

11. The method of claim 1 ,

wherein API and services engine comprises a plurality of service libraries, including the service library, for respective services, and

wherein the services comprise two or more of search, cache, rules, security, and data storage.

12. The method of claim 1 , further comprising:

receiving, by an API gateway of the API and services engine, the service request, wherein the service request does not include the application identifier; and

mapping, by the API gateway based on an authorization token-application map, the authorization token to the application name;

mapping, by the API gateway based on an application-tenant identifier map, the application name to the application identifier to obtain the association of the application identifier and the authorization token; and

sending, by the API gateway to a service library of the API and services engine and via a library API, a modified service request that includes the application identifier and includes data from the service request.

13. The method of claim 1 ,

wherein the application comprises a first application,

wherein the service request comprises a first service request,

wherein the application data store comprises a first application data store,

wherein the application identifier comprises a first application identifier, the method further comprising:

determining, by the API and services engine in response to receiving a second service request from a second application, a second application identifier for the second service request based at least on an authorization token included in the second service request, wherein the second application identifier identifies the second application that issued the second service request;

selecting, by the API and services engine based at least on an association, stored by the API and services engine, of the second application identifier and the authorization token included in the second service request, a second application data store uniquely associated with the second application that issued the second service request; and

processing, by the API and services engine, the second service request using data stored by the selected second application data store.

14. An application programming interface (API) and services engine, comprising:

one or more programmable processors operably coupled to at least one memory, the at least one memory configured with instructions for causing the one or more programmable processors to:

determine, in response to receiving a service request from an application, an application identifier for the service request based at least on an authorization token included in the service request, wherein the application identifier identifies an application that issued the service request;

select, based at least on an association, stored by the API and services engine, of the application identifier and the authorization token, an application data store uniquely associated with the application that issued the service request; and

process the service request using data stored by the selected application data store.

15. The API and services engine of claim 14 , wherein the at least one memory is configured with instructions for causing the one or more programmable processors to:

receive, from the application via a login API, a login service request for a user, wherein the login service request includes at least one of an API consumer key and an API consumer secret; and

determine, based at least on the one of the API consumer key and the API consumer secret, that the application issued the login service request.

16. The API and services engine of claim 15 , wherein the at least one memory is configured with instructions for causing the one or more programmable processors to:

obtain, in response to authorizing the user responsive to the login service request, the authorization token; and

store the association of the authorization token and the application identifier for the application,

wherein determining the application identifier for the service request comprises determining, by the API and services engine based at least on the association, the application identifier for the service request.

17. The API and services engine of claim 14 , wherein the service request does not include the application identifier.

18. The API and services engine of claim 14 , further comprising:

a service library of the API and services engine; and

an API gateway of the API and services engine, the API gateway configured for execution by the one or more programmable processors to send, to a service library of the API and services engine and via a library API, a modified service request that includes the application identifier and includes data from the service request,

wherein the service library is configured for execution by the one or more programmable processors to process the modified service request using data stored by the selected application data store.

19. The API and services engine of claim 18 , wherein the application identifier comprises an application data store name for the application data store.

20. A non-transitory computer-readable medium comprising instructions for causing one or more programmable processors for an application programming interface and services engines to perform operations comprising:

determining, in response to receiving a service request from an application, an application identifier for the service request based at least on an authorization token included in the service request, wherein the application identifier identifies an application that issued the service request;

selecting, based at least on an association, stored by the API and services engine, of the application identifier and the authorization token, an application data store uniquely associated with the application that issued the service request; and

processing the service request using data stored by the selected application data store.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2016
From: DORAISWAMY, VIJAAY; KOTY, RAMCHANDRA JAYATEERTH; PUROHIT, PURVISH; MALVIYA, MAHENDRA; MATHUR, MOHIT; LASRADO, DAREL P.; KALIYAPERUMAL, MANIKANDAN; SOMAN, PREMKUMAR
To: EQUINIX, INC.
Reel/Frame 040443/0810 →
Cited By (9)
US 12,321,732 US 12,417,105 US 12,443,939 US 12,456,126 US 12,463,811 US 12,500,881 US 12,537,685 US 12,574,279 US 12,621,286