Efficient APIs with Privacy Preservation
By using an API caching and orchestration layer to separate and process public, personal, and customized information types independently, the API system addresses inefficiencies and improves performance.
Patent Information
- Application Number
- JP2022580417
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-04-07
- Filing Date
- 2021-06-29
- Publication Date
- 2025-05-08
- Estimated Expiration
- 2041-06-29
AI Technical Summary
Existing API systems face challenges in efficiently processing requests that mix public, personal, and customized information, leading to unnecessary caching restrictions, increased processing time, and bandwidth usage.
Implementing an API caching and orchestration layer that separates personal and customized information from public information, allowing for targeted caching and processing of each type independently.
This approach enables more efficient API processing by allowing caching of public and customized information while ensuring personal information is not cached, thereby reducing processing time and bandwidth usage.
Smart Images

Figure 0007673100000001 
Figure 0007673100000002 
Figure 0007673100000003
Abstract
Description
[Technical field]
[0001] TECHNICAL FIELD The embodiments disclosed herein relate to application programming interfaces (APIs), and more particularly, to providing efficient APIs with privacy protection. [Background technology]
[0002] Application Programming Interface (API) endpoints are often relatively simple and somewhat self-contained. For example, an API endpoint may be implemented as a web service or other means that responds to remote requests over HTTPS or similar requests that include a set of parameters that specify the desired processing by the API. [Brief description of the drawings]
[0003] The accompanying drawings, which are included to provide a further understanding of the disclosed subject matter, are incorporated in and constitute a part of this specification. The drawings also illustrate implementations of the disclosed subject matter and, together with the detailed description, explain the principles of implementations of the disclosed subject matter. No attempt is made to show structural details in more detail than may be necessary for a fundamental understanding of the disclosed subject matter and various ways in which it may be practiced. [Figure 1] 1 is a block diagram illustrating a system for use with efficient application programming interface (API) processing with privacy protection, according to some example implementations. [Diagram 2] FIG. 1 is a flow diagram illustrating a method for efficient API processing with privacy protection, according to some example implementations. [Figure 3A] FIG. 1 is a block diagram illustrating an electronic device according to some example implementations. [Figure 3B] FIG. 1 is a block diagram of a deployment environment in accordance with some example implementations. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0004] Various aspects or features of the present disclosure are described with reference to the drawings, in which like reference numerals are used to refer to like elements throughout. Numerous details are described herein to provide a thorough understanding of the present disclosure. However, it should be understood that certain aspects of the present disclosure may be implemented without these specific details or with other methods, components, materials, etc. In other instances, well-known structures and devices are shown in block diagram form to facilitate description of the present disclosure.
[0005] The simplicity of application programming interface (API) endpoints can present a challenge when public, personal, or customized information is mixed in an API request, since any response that includes a portion of customized information is automatically customized in its entirety. Thus, any non-customized request that includes personal information becomes personal. For example, a request may include a request for a portion of a product catalog and an indication of the user's previous purchases from that catalog. The catalog information itself is public, or at least not personal or customized, and common to many users. However, a particular user's purchasing history is private information. Mixing the two together makes the entire request and response private and may be subject to privacy controls, regulatory access controls, etc. In many cases, responses that include personal information cannot be cached at all, causing unnecessary duplication, processing time, bandwidth usage, etc. Continuing with the previous example, if many similar requests for product catalogs and user purchasing history are sent to a common API endpoint, the product catalog portions of the requests and responses may not be cached because each request includes personal information, causing many duplications of requests to the product catalog backend that could be avoided by caching the product catalog information. It is also anticipated that artificial intelligence (AI) and context-based responses will become more relevant in APIs over time, which would also benefit from separately handling and caching personal and non-personal information. To address the above and similar issues, embodiments disclosed herein provide techniques and systems for separately caching personal and customized information such that the customized information does not completely "taint" the response as customized and therefore nearly uncacheable.
[0006] To achieve this, instead of application programming interface (API) endpoints being serviced directly by microservices, an API caching and orchestration layer is used. This layer can "understand" the different pieces of personal and customized information, and for each piece, it generates or manages a separate call to one or more backend services. This allows each piece of data to be cached when possible, even though the final response may represent a mix of personal and customized information.
[0007] Implementations of the disclosed subject matter provide a method, computer-readable medium, and device for efficient API processing with privacy protection. In various implementations, the method may include receiving a user request for content from a client and parsing the user request for content to identify one or more requested portions. In some implementations, at least one request portion may represent a request for a portion of content having a type of public information, customized information, and personal information. The method may further include, for one or more request portions, sending the request portion to one of a plurality of microservices based on a type of the portion of content being requested, receiving a response portion including the portion of content being requested, determining a type of the portion of content, and caching the portion of content based on the type of the portion of content in response to determining that the type of the portion of content is not personal information. The method may further include combining the one or more response portions into a user response and sending the user response to the client.
[0008] In various implementations, the method may further include refraining from caching the portion of content in response to determining that the type of the portion of content is personal information.
[0009] In some implementations, analyzing the user request for content to identify one or more requested portions may include identifying the one or more requested portions based on a tag associated with each requested portion.
[0010] In some implementations, analyzing the user request for content to identify one or more requested portions may include identifying the one or more requested portions based on a convention associated with each requested portion.
[0011] In some implementations, caching the portion of content based on a type of the portion of content may include limited caching of the portion of content in response to determining that the type of the portion of content is customized information.
[0012] FIG. 1 illustrates an example system and process 100 for achieving separation of personal, customized, and / or public information. An initial request 106 is generated by an end user device 104 and sent to an expected API endpoint, orchestration / cache 110. In various implementations, the end user device 104 can be part of a client-side tier 102. The request 106 is received by an orchestration / cache endpoint 110 that includes an orchestrator service 112. In various implementations, the orchestration / cache 110 can be part of a content delivery network (CDN), and the orchestrator service 112 can be an edge worker, cache service, or other process operating within the CDN. For example, the orchestrator service 112 can be software and / or hardware operating as or as a part of a server within the CDN. The orchestrator service 112 identifies portions of the request 106 that require different types of information in a response and routes the identified portions as requests to the appropriate microservices within the microservices 120. 1, a single orchestration / cache 110 including a single orchestrator 112 is shown merely for simplicity. A single orchestration / cache 110 may include multiple orchestrators 112, which may be deployed in a distributed manner or otherwise operated. Similarly, multiple orchestration / cache 110 may be deployed in a distributed manner or otherwise operated, with each orchestration / cache 110 including a single orchestrator 112 or multiple orchestrators 112.
[0013] In various implementations, microservices 120 may include or otherwise represent one or more origin servers and / or services that may provide content in response to requests 106. For example, microservices 120 may include public information microservice 122, personal information microservice 124, and customized information microservice 126. Although FIG. 1 illustrates a single microservice 120 including a single instance of each of public information microservice 122, personal information microservice 124, and customized information microservice 126, this is merely for simplicity. As with orchestration / cache 110 and orchestrator 112, there may be multiple microservices 120 and / or multiple of any one or more of the various public information, personal information, and customized information microservices.
[0014] The orchestrator service 112 may identify different requests or portions of requests in several ways. For example, data segments may be tagged within the API as “personalized” to drive the engine with metadata. This tagging may be done by the developer or may be automated based on, for example, the content of the segment, the source of the segment, the actions performed on the segment such as customization actions, etc. As another example, conventions may indicate to the orchestrator 112 how to treat the data, such as when data obtained from a public database or other public source is presumed by the convention to not contain personal or customized information. As another example, conventions within a particular system may indicate that some data, such as common images, data that is repeated across multiple users or tenant accounts, is known to be neither personal nor customized information. As another example, classification may be observation-driven, such as when the orchestrator 112 observes repeated results to determine which aspects are relatively static and which aspects of the API return are relatively dynamic. The data can then be heuristically cached for progressively longer periods as more data is collected about how fast the data moves (e.g., static vs. dynamic, global vs. segmentation / user-specific).
[0015] In this manner, the API request 106 is split into multiple requests to microservices, such as the public information microservice 122, the personal information microservice 124, and the customized information microservice 126, to provide the desired information in multiple responses returned to the orchestrator 112. These responses may also be cached or otherwise manipulated individually before being assembled into a single response back to the requester (e.g., client 104). For example, pure public information, such as may be provided by the public information microservice 122, may be cached relatively aggressively using any conventional caching technique and then reused for other requests that require the same public data to provide a response. Conversely, pure private information, such as may be provided by the personal information microservice 124, may not be cached at all and may be used only as long as necessary to generate and send a final response to the requester. Customized information, such as may be provided by the customized information microservice 126, may be cached for a shorter time and / or limited to requests from a common requester, such as when multiple requests are received from a single user and that user uses the same or related customization data. This may be particularly useful when the customized information is not necessarily personal, e.g., specific to a user but not considered to contain personally identifiable information. The customized information may be cached until a threshold period has passed and no further requests are expected to be received from the same user. In other cases, the customized information may contain true personal information, in which case it may be treated in a similar manner as information received from the personal information microservice.
[0016] This structure may also be used in combination with or as part of CDN-type routing, including automatic CDN routing that may be based on metadata included in content requests processed by the CDN. The two systems may be used together as part of a multi-level cache. For example, a first level cache may be provided by a CDN system that provides traditional CDN-type caching of data to be delivered to end users. A second level cache may be provided by the orchestration system and microservices shown in FIG. 1. Finally, the origin server from which the microservices shown in FIG. 1 pull data may provide a third level cache. Such an arrangement may maintain a clear separation of public, private, and customized data, allowing for appropriate caching of each type, while still allowing for prediction techniques known from more typical multi-level cache systems.
[0017] The embodiments disclosed herein may enable more personalized or customized responses than are achievable with traditional API response systems. For example, a web or app page provided to a user may be highly customized based on data known about the requester and the request itself. For example, instead of serving a cached page or image to all visitors to a website that may be customized solely based on the presence of a third-party cookie or similar identifier, public information on the page may be coupled with personal and / or customized information that may be based on the requester or the request itself. For example, if a request for a user interface is received from a user outside the stadium where a baseball game is in progress or has just finished, the interface may be customized with an image associated with one of the teams playing in the game. As another example, the request may be routed to an appropriate backend e-commerce store based on items previously purchased by the requester, even if the request is not directed to a particular tenant that manages the identified store. The response may then be customized for the user according to information the tenant knows about the user, while maintaining the distinction between public, private, and customized data, as previously disclosed.
[0018] In this context, any user service, website, interface, etc. may be considered an API. For example, when a user accesses the website www.example.com, this may be considered an API request (a "GET" request to a URL that is an API endpoint). As previously disclosed, such a request may be directed to multiple microservices depending on the nature of the data required for the response. For example, if example.com is a news site, the response may include news articles and images and site images (public data), choices the user selects for the user's account at the site, such as categories of news to display, geographic areas of interest, specific authors to exclude, and / or targeting information (customized information), such as user-specific ads or similar information, and information specific to the user or the user's account (private information), such as email addresses, billing information, social media accounts, etc. In various embodiments, some data that is personalized information in one case may be private information in another case, and vice versa. For example, targeted ads based on non-specific information, such as articles being viewed, may be considered personalized information, and targeted ads based on the user's activity in social media accounts or specific demographic information provided by the user may be considered private information, even if the ads themselves are public or customized information.
[0019] 2 illustrates a method 200 for efficient API processing with privacy protection as disclosed herein. In various implementations, the steps of method 200 may be performed by a server, such as electronic device 300 of FIG. 3A or system 340 of FIG. 3B, and / or by software running on a server or a distributed computing platform. Although the steps of method 200 are presented in a particular order, this is merely for the sake of simplicity.
[0020] In step 202, a user request for content may be received from a client. For example, an orchestrator service, such as orchestrator 112 of FIG. 1, may receive the request for content. In various implementations, such user request for content may be received by or as part of a content delivery network (CDN). For example, the orchestrator service may be implemented as an edge worker and / or some other component of a CDN.
[0021] In step 204, the user request for content may be parsed to identify one or more requested portions. For example, the request for content may include a request for a portion of the content that includes private information, a request for a portion of the content that includes customized information, and a request for a portion of the content that includes public information. In another example, the request may include only a request for a public information portion and a request for a private information portion. In yet another example, the request may include multiple requests for portions of public information and multiple requests for portions of private information. That is, any given request may represent a request for content that includes any number of different portions of various types of information.
[0022] In various implementations, the types of content for which requests are received may include public information, customized information, and personal information. Public information may include, for example, information that is readily available or may otherwise be made readily available to anyone (i.e., the general public). Customized information may include, for example, information that is customized, targeted, or otherwise structured for a particular individual without personally identifying that individual. Personal information may include, for example, information that may personally identify an individual and / or that should be presented only to the individual or otherwise protected for access by the individual.
[0023] In some implementations, the type of the portion of content being requested may be determined based on tags or other markings associated with the request for the portion of content. For example, the metadata, tags, parameters, and / or other markings may be included in or otherwise associated with a Uniform Resource Locator (URL), Uniform Resource Identifier (URI), headers, and / or other elements of the user request. In some implementations, the type of the portion of content being requested may be determined based on conventions or other identifications known or otherwise learned about or from requests for portions of content. For example, the request method (e.g., GET, POST, PUT), the source of the content, the structure of the content, the amount of content (e.g., the number of times a particular piece of content has been requested), etc. may be utilized to determine the type of portion of content being requested. Such conventions or other identifications may be explicitly known (i.e., specific elements in the request or otherwise associated with the request) or may be implicitly learned (e.g., volume may be learned over time).
[0024] In step 206, one of the one or more identified request portions may be sent to a microservice based on the type of content portion being requested. For example, a request portion requesting public information may be sent to a microservice that provides public information, such as the public information microservice 122 in FIG. 1. As another example, a request portion requesting private information may be sent to a microservice that provides private information, such as the personal information microservice 124 in FIG. 1. Similarly, a request portion requesting customized information may be sent to a microservice that provides customized information, such as the customized information microservice 126 in FIG. 1.
[0025] A response portion including the requested portion of the content may be received at step 208. For example, a response including a portion of the public information may be received from the public information microservice.
[0026] At decision step 210, a determination may be made whether the received portion of the content is personal information. If the received portion of the content is personal information (i.e., decision step 210="Yes"), the method may proceed to decision step 214. If the received portion of the content is not personal information (i.e., decision step 210="No"), the method may proceed to step 212.
[0027] In step 212, the received portion of the content may be cached based on the type of the received portion. For example, if the received portion of the content is public information, the portion of the content may be cached aggressively (e.g., maintained in the cache for an extended period of time). As another example, if the received portion of the content is customized information, the portion of the content may be cached more selectively (e.g., maintained in the cache for a limited period of time). Of note, as a result of the combination of decision steps 210 and 212, personal information may not be cached, while public and customized information may be cached to varying degrees.
[0028] At decision step 214, a determination may be made whether the one requested piece of content is the last requested piece. If there is another piece of content to be requested (i.e., decision step 214="No"), the method may return to step 206 where the next requested piece may be sent to the microservice. If there is not another requested piece (i.e., decision step 214="Yes"), the method may proceed to step 216.
[0029] One or more pieces of the received content may be combined into a user response at step 216. For example, various pieces of public information, personal information, and / or customized information may be collected into a single response.
[0030] The user response may be sent to the client in step 218. For example, a collection of public information, personal information, and / or customized information may be sent to the client making the original request, such as client 104 of FIG.
[0031] In this manner, a single request for content may be subdivided into corresponding portions based on the type of content portion being requested. Each type of content portion may then be processed in a corresponding manner, thus enabling different degrees of caching and otherwise reducing the load on various origin services. This may improve the performance of a computing system as well as improve the user experience.
[0032] One or more portions of the above implementations may include software. Software is a general term that can mean anything from parts of the code and / or metadata of a single computer program to the entirety of multiple programs. A computer program (also called a program) includes code and optionally data. Code (sometimes called computer program code or program code) includes software instructions (also called instructions). Instructions can be executed by hardware to perform operations. Running software includes running code, which includes executing instructions. Running a program to perform a task involves executing some or all of the instructions in that program.
[0033] Electronic devices (also referred to as devices, computing devices, computers, etc.) include hardware and software. For example, an electronic device may include a set of one or more processors coupled to one or more machine-readable storage media (e.g., non-volatile memory such as magnetic disks, optical disks, read-only memory (ROM), flash memory, phase-change memory, solid-state drive (SSD)) for storing code and optionally data. For example, an electronic device may include non-volatile memory (with slower read / write times) and volatile memory (e.g., dynamic random access memory (DRAM), static random access memory (SRAM)). The non-volatile memory persists the code / data even when the electronic device is turned off or otherwise removed from power, and the electronic device copies that portion of the code to be executed by the set of processors of that electronic device from the non-volatile memory to the volatile memory of that electronic device during operation, since the volatile memory typically has faster read / write times. As another example, the electronic device may include non-volatile memory (e.g., phase change memory) with fast enough read / write times so that the code / data persists when power to the electronic device is removed and can be provided directly to a set of processors (e.g., loaded into a cache of a set of processors) rather than copying portions of the code to be executed into volatile memory. In other words, this non-volatile memory acts as both long-term storage and main memory, and thus the electronic device may have no or only a small amount of volatile memory for the main memory.
[0034] In addition to storing code and / or data on machine-readable storage media, a typical electronic device can transmit and / or receive code and / or data over one or more machine-readable transmission media (also called carriers) (e.g., electrical, optical, radio, acoustic, or other forms of propagated signals such as carrier waves and / or infrared signals). For example, a typical electronic device also includes a set of one or more physical network interface(s) for establishing network connections (for transmitting and / or receiving code and / or data using propagated signals) with other electronic devices. Thus, an electronic device can store and transmit (internally and / or over a network with other electronic devices) code and / or data on one or more machine-readable media (also called computer-readable media).
[0035] Software instructions (also called instructions), when executed by a set of processors, are capable of causing (also called operable to cause or configurable to cause) the set of processors to perform an action. The phrase "capable of causing" (and the synonyms above) includes various scenarios (or combinations thereof), such as instructions that are always executed versus instructions that may be executed. For example, instructions may be executed 1) only in certain circumstances in which a larger program is executed (e.g., a condition is satisfied in the larger program, an event occurs, such as a software or hardware interrupt, user input (e.g., keystroke, mouse click, voice command), a message is issued, etc.), or 2) when the instructions are called by another program or part thereof (whether executing in the same or a different process, thread, lightweight thread, etc.). These scenarios may or may not require that a larger program of which the instructions are a part be currently configured to use those instructions (e.g., a user may enable a feature, a feature or instruction may be unlocked or enabled, a larger program may be configured using the inherent functionality of the data and program, etc.). As illustrated by these exemplary scenarios, "able to cause" (and synonyms above) does not require "causing" to occur, but simply the ability to cause. The term "instructions" may be used to refer to instructions that, when executed, cause the performance of the operations described herein, although the term may or may not also refer to other instructions that a program may contain. Thus, instructions, code, programs, and software, when executed, can cause an operation to be performed, regardless of whether the operation is always performed or is sometimes performed (e.g., in the scenarios previously described).The phrase "the instructions when executed" refers to at least instructions that, when executed, cause the performance of the operations described herein, but may or may not also refer to the execution of other instructions.
[0036] Electronic devices are designed and / or used for various purposes, and different terms may reflect those purposes (e.g., user device, network device). Some user devices are designed to operate primarily as servers (sometimes referred to as server devices), while other user devices are designed to operate primarily as clients (sometimes referred to as client devices, client computing devices, client computers, or end user devices, examples of which include desktops, workstations, laptops, personal digital assistants, smartphones, wearable devices, augmented reality (AR) devices, virtual reality (VR) devices, mixed reality (MR) devices, etc.). Software executed to cause a user device (typically a server device) to operate as a server may be referred to as server software or server code, while software executed to cause a user device (typically a client device) to operate as a client may be referred to as client software or client code. A server provides one or more services (sometimes referred to as serves) to one or more clients.
[0037] The term "user" refers to an entity (e.g., an individual) that uses an electronic device. The software and / or services may use credentials to distinguish between different accounts associated with the same and / or different users. A user can have one or more roles, such as administrator, programmer / developer, and end user roles. As an administrator, a user typically uses electronic devices to manage them for other users, and thus an administrator often works directly and / or indirectly with server devices and client devices.
[0038] 3A is a block diagram illustrating an electronic device 300 according to some example implementations. FIG. 3A includes hardware 320 including a set of one or more processors 322, a set of one or more network interfaces 324 (wireless and / or wired), and a machine-readable medium 326 having stored thereon software 328 (including instructions executable by the set of one or more processors 322). The machine-readable medium 326 may include non-transitory and / or transitory machine-readable media. Each of the aforementioned clients and integrated order manager may be implemented in one or more electronic devices 300.
[0039] During operation, an instance of the software 328 (exemplified as instance 306 and referred to as a software instance, or, more specifically, in the case of an application, referred to as an application instance) executes. In an electronic device using computational virtualization, a set of one or more processors 322 typically executes software to instantiate a virtualization layer 308 and one or more software containers 304A-304R (e.g., in operating system-level virtualization, the virtualization layer 308 may represent a container engine that runs on top of (or is integrated into) the operating system, allowing the creation of multiple software containers 304A-304R (representing separate user space instances and also referred to as virtualization engines, virtual private servers, or jails), each of which may be used to run a set of one or more applications. In full virtualization, the virtualization layer 308 represents a hypervisor (which may also be referred to as a virtual machine monitor (VMM)) or a hypervisor that runs on top of a host operating system, and each of the software containers 304A-304R represents a tightly isolated form of software container called a virtual machine that is executed by the hypervisor and may contain a guest operating system. In paravirtualization, the operating system and / or applications running in the virtual machine may be aware of the presence of virtualization for optimization purposes). Again, in electronic devices in which compute virtualization is used, during operation, an instance of the software 328 runs within a software container 304A on a virtualization layer 308. In electronic devices in which compute virtualization is not used, an instance 306 on top of a host operating system runs on a "bare metal" electronic device 300. The instantiations of the instance 306, and, if implemented, the virtualization layer 308 and software containers 304A-304R, are collectively referred to as software instance(s) 302.
[0040] Alternative implementations of the electronic device may have numerous variations from those described above. For example, customized hardware and / or accelerators may be used in the electronic device.
[0041] 3B is a block diagram of a deployment environment according to some example implementations. The system 340 includes hardware (e.g., a set of one or more server devices) and software for providing the service(s) 342, including an integrated order manager. In some implementations, the system 340 is located in one or more datacenters. These datacenter(s) may be 1) first-party datacenter(s), which are datacenter(s) owned and / or operated by the same entity as the entity providing and / or operating some or all of the software providing the service(s) 342, and / or 2) third-party datacenter(s), which are datacenter(s) owned and / or operated by one or more entities different from the entity providing the service(s) 342 (e.g., the different entity may host some or all of the software provided and / or operated by the entity providing the service(s) 342). For example, the third-party datacenter may be owned and / or operated by an entity providing a public cloud service.
[0042] The system 340 is coupled to user devices 380A-380S through a network 382. The service(s) 342 may be on-demand services made available to one or more of the users 384A-384S working for one or more entities other than the entity that owns and / or operates the on-demand service (these users may also be referred to as external users), such that these entities need not be involved in building and / or maintaining the system, but may utilize the service(s) 342 when needed (e.g., when needed by the users 384A-384S). The service(s) 342 may communicate with each other and / or with one or more of the user devices 380A-380S via one or more APIs (e.g., via REST APIs). In some implementations, the user devices 380A-380S are operated by the users 384A-384S and may be operated as client devices and / or server devices, respectively. In some implementations, one or more of the user devices 380A-380S are distinct from the electronic device 300 or include one or more features of the electronic device 300.
[0043] In some implementations, the system 340 is a multi-tenant system (also known as a multi-tenant architecture). The term multi-tenant system refers to a system in which various elements of the system's hardware and / or software may be shared by one or more tenants. A multi-tenant system may be operated by a first entity (sometimes referred to as a multi-tenant system provider, operator, or vendor, or simply provider, operator, or vendor) that provides one or more services to tenants (in this case, the tenants are customers of the operator, sometimes referred to as operator customers). A tenant includes a group of users that share a common access with certain privileges. Tenants may be different entities (e.g., different companies, different divisions / divisions of a company, and / or other types of entities), some or all of which may be vendors that sell or otherwise provide products and / or services to customers (sometimes referred to as tenant customers). A multi-tenant system allows each tenant to enter tenant-specific data for user management, tenant-specific features, configuration, customization, non-functional properties, associated applications, and the like. A tenant may have one or more roles for the system and / or services. For example, in the context of a customer relationship management (CRM) system or service, a tenant may be a vendor that uses the CRM system or service to manage information the tenant has about one or more customers of the vendor. As another example, in the context of Data as a Service (DAAS), one set of tenants may be vendors that provide data, and another set of tenants may be different or all customers of the vendor's data. As another example, in the context of Platform as a Service (PAAS), one set of tenants may be third-party application developers that provide applications / services, and another set of tenants may be different or all customers of the third-party application developers.
[0044] Multitenancy may be implemented in different ways: in some implementations, a multi-tenant architecture may include a single software instance (e.g., a single database instance) shared by multiple tenants, other implementations may include a single software instance (e.g., a database instance) per tenant, and still other implementations may include a mixed model, e.g., a single software instance (e.g., an application instance) per tenant and another software instance (e.g., a database instance) shared by multiple tenants.
[0045] In one implementation, the system 340 is a multi-tenant cloud computing architecture that supports multiple services, such as one or more of the following types of services: customer relationship management (CRM), configure, price, quote (CPQ), business process modeling (BPM), customer support, marketing, productivity, database-as-a-service (DBaaS), data-as-a-service (DaaS), platform-as-a-service (PaaS), infrastructure-as-a-service (IaaS) (e.g., virtual machines, servers, and / or storage), analytics, community, Internet of Things (IoT), industry-specific, artificial intelligence (AI), application store ("app store"), data modeling, security, and identity and access management (IAM). For example, system 340 may include application platform 344 that enables the PAAS to create, manage, and run one or more applications developed by a provider of application platform 344, a user accessing system 340 via one or more of user devices 380A-380S, or a third-party application developer accessing system 340 via one or more of user devices 380A-380S.
[0046] In some implementations, one or more of the services 342 may use one or more multi-tenant databases 346 and system data storage 350 for system data 352 accessible to the system 340. In certain implementations, the system 340 includes a set of one or more servers configured to run on server electronic devices and process requests for any authorized user associated with any tenant (there is no server affinity of a user and / or tenant to a particular server). User devices 380A-380S communicate with the server(s) of the system 340 to request and update tenant-level and system-level data hosted by the system 340, and in response, the system 340 (e.g., one or more servers in the system 340) may automatically generate one or more Structured Query Language (SQL) statements (e.g., one or more SQL queries) designed to access desired information from the multi-tenant database(s) 346 and / or system data storage 350.
[0047] In some implementations, the service(s) 342 are implemented using virtual applications that are dynamically created at run time in response to queries from user devices 380A-380S according to metadata including: 1) metadata describing configurations common to multiple tenants (e.g., forms, reports, workflows, user access privileges, business logic), and / or 2) metadata that is tenant-specific and describes tenant-specific configurations (e.g., tables, reports, dashboards, interfaces, etc.) and is stored in a multi-tenant database. To that end, the program code 360 may be a runtime engine that materializes application data from metadata, i.e., there is a clear separation between the compiled runtime engine (also known as the system kernel), tenant data, and metadata, allowing the system kernel and tenant-specific applications and schemas to be updated independently, with little or no impact of one on the other. Additionally, in one implementation, the application platform 344 includes an application configuration mechanism that supports application developer creation and management of applications, which may be saved as metadata via a save routine. Calls to such applications, including frameworks for modeling heterogeneous feature sets, can be coded using PL / SOQL (Procedural Language / Structured Object Query Language), which provides a programming language style interface. Calls to the applications can be detected by one or more system processes, which manage the retrieval of application metadata for the calling tenant and the execution of the metadata as an application within a software container (e.g., a virtual machine).
[0048] Network 382 may be any one or any combination of a LAN (local area network), a WAN (wide area network), a telephone network, a wireless network, a point-to-point network, a star network, a token ring network, a hub network, or other suitable configurations. The network may conform to one or more network protocols including the Institute of Electrical and Electronics Engineers (IEEE) protocols, (3rd Generation Partnership Project (3GPP) protocols, Fourth Generation Wireless Protocols (4G) (e.g., Long Term Evolution (LTE) standards, LTE Advanced, LTE Advanced Pro), Fifth Generation Wireless Protocols (5G), and / or similar wired and / or wireless protocols, and may include one or more intermediate devices for routing data between system 340 and user devices 380A-380S.
[0049] Each user device 380A-380S (desktop personal computers, workstations, laptops, personal digital assistants (PDAs), smartphones, smart watches, wearable devices, augmented reality (AR) devices, virtual reality (VR) devices, etc.) typically includes one or more user interface devices, such as a keyboard, mouse, trackball, touch pad, touch screen, pen, video or touch-free user interface, for interacting with a graphical user interface (GUI) provided on a display (e.g., a monitor screen, a liquid crystal display (LCD), an ahead-up display, an ahead-mounted display, etc.) along with pages, forms, applications, and other information provided by system 340. For example, the user interface devices may be used to access data and applications hosted by system 340, perform searches on stored data, and otherwise enable one or more of users 384A-384S to interact with various GUI pages that may be presented to one or more of users 384A-384S. User devices 380A-380S may communicate with the system 340 using TCP / IP (Transmission Control Protocol and Internet Protocol) and, at a higher network level, using other networking protocols such as application program interfaces (APIs) based on protocols such as Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), Andrew File System (AFS), Wireless Application Protocol (WAP), Network File System (NFS), Simple Object Access Protocol (SOAP), Representational State Transfer (REST), etc.In examples where HTTP is used, one or more user devices 380A-380S may include an HTTP client, commonly referred to as a "browser," for sending and receiving HTTP messages to and from a server(s) of system 340 so that users 384A-384S of user devices 380A-380S can access, process, and view information, pages, and applications available to the user devices from system 340 via network 382.
[0050] In the above description, numerous specific details are set forth, such as resource partitioning / sharing / duplication implementations, types and interrelationships of system components, and logic partitioning / integration selections, to provide a more complete understanding. However, the present invention may be practiced without such specific details. In other instances, control structures, logic implementations, opcodes, means for specifying operands, and complete software instruction sequences have not been shown in detail, as the included description will enable one skilled in the art to implement what is being described without undue experimentation.
[0051] References herein to "one implementation," "implementation," "exemplary implementation," and the like indicate that the implementation being described may include a particular feature, structure, or characteristic, and that all implementations do not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same implementation. Furthermore, when a particular feature, structure, and / or characteristic is described in connection with an implementation, one of ordinary skill in the art will know that such feature, structure, and / or characteristic also applies in connection with other implementations, whether or not explicitly described.
[0052] For example, a diagram(s) showing a flow diagram may refer to a diagram(s) showing a block diagram, and vice versa. Whether or not explicitly described, alternative implementations described with reference to a diagram(s) showing a block diagram also apply to implementations described with reference to a diagram(s) showing a flow diagram, and vice versa. At the same time, the scope of this description includes implementations for performing a flow diagram other than those described with reference to a block diagram, and vice versa.
[0053] Blocks with bracketed text and dashed borders (e.g., large dashes, small dashes, dashed dots, and dots) may be used herein to indicate optional operations and / or structures that add additional features to some implementations. However, such notations should not be interpreted to mean that these are the only options or optional operations and / or that blocks with solid borders are not optional in some implementations.
[0054] The detailed description and claims may use the term "coupled," along with its derivatives. "Coupled" is used to indicate that two or more elements, which may or may not be in direct physical or electrical contact with each other, co-operate or interact with each other.
[0055] Although the flow diagrams in the figures depict a particular order of operations performed by particular implementations, such order is exemplary and not limiting (e.g., alternative implementations may perform operations in a different order, combine certain operations, perform certain operations in parallel, overlap the performance of certain operations such that they occur partially in parallel, etc.).
[0056] While the above description includes some exemplary implementations, the invention is not limited to the described implementations, but can be practiced with modification and alteration within the spirit and scope of the appended claims. Accordingly, the description is illustrative rather than limiting.
Claims
1. 1. A computer-implemented method for efficient application programming interface (API) processing with privacy protection, comprising: receiving a user request for content from a client; Parsing a user request for the content to identify one or more requested portions, at least one requested portion comprising: Public information, Customized information, and personal information expressing a request for a portion of content having a type selected from the group consisting of: For the one or more request portions: sending a request portion to one of a plurality of microservices based on the type of the portion of the content being requested; receiving a response portion including the portion of the content that is requested; determining the type of the portion of the content; in response to determining that the type of the portion of content is not personal information, caching the portion of content based on the type of the portion of content; combining the one or more response portions into a user response; sending the user response to the client; 23. A computer-implemented method comprising:
2. refraining from caching the portion of content in response to determining that the type of the portion of content is personal information. The computer-implemented method of claim 1 , further comprising:
3. 20. The method of claim 19, further comprising: identifying the one or more requested portions based on a tag associated with each requested portion. The computer-implemented method of claim 1 , comprising:
4. 20. The method of claim 19, further comprising: identifying the one or more request portions based on a convention associated with each request portion. The computer-implemented method of claim 1 , comprising:
5. Caching the portion of content based on the type of the portion of content includes: in response to determining that the type of the portion of content is customized information, limitedly caching the portion of content. The computer-implemented method of claim 1 , comprising:
6. A non-transitory machine-readable storage medium providing instructions that, when executed by a processor, cause the processor to: receiving a user request for content from a client; analyzing a user request for the content to identify one or more requested portions, where at least one requested portion comprises: Public information, Customized information, and personal information represents a request for a portion of content having a type selected from the group consisting of: For the one or more request portions: Sending a request portion to one of a plurality of microservices based on the type of the portion of the content being requested; receiving a response portion including the portion of the content that is requested; determining the type of the portion of the content; in response to determining that the type of the portion of content is not personal information, caching the portion of content based on the type of the portion of content; combining the one or more response portions into a user response; sending the user response to the client; A non-transitory machine-readable storage medium that causes operations including
7. The operation includes: refraining from caching the portion of content in response to determining that the type of the portion of content is personal information; The non-transitory machine-readable storage medium of claim 6 , further comprising:
8. Analyzing a user request for the content to identify one or more requested portions includes: identifying the one or more requested portions based on a tag associated with each requested portion; 7. The non-transitory machine-readable storage medium of claim 6, comprising:
9. Analyzing a user request for the content to identify one or more requested portions includes: identifying the one or more request portions based on a convention associated with each request portion; 7. The non-transitory machine-readable storage medium of claim 6, comprising:
10. Caching the portion of content based on the type of the portion of content includes: limited caching of the portion of content in response to determining that the type of the portion of content is customized information.
7. The non-transitory machine-readable storage medium of claim 6, comprising:
11. An apparatus comprising: A processor; A non-transitory machine-readable storage medium providing instructions; the instructions, when executed by a processor, cause the processor to: receiving a user request for content from a client; analyzing a user request for the content to identify one or more requested portions, where at least one requested portion comprises: Public information, Customized information, and personal information represents a request for a portion of content having a type selected from the group consisting of: For the one or more request portions: Sending a request portion to one of a plurality of microservices based on the type of the portion of the content being requested; receiving a response portion including the portion of the content that is requested; determining the type of the portion of the content; in response to determining that the type of the portion of content is not personal information, caching the portion of content based on the type of the portion of content; combining the one or more response portions into a user response; sending the user response to the client; An apparatus for causing an operation including
12. The operation includes: refraining from caching the portion of content in response to determining that the type of the portion of content is personal information; The apparatus of claim 11 further comprising:
13. Analyzing a user request for the content to identify one or more requested portions includes: identifying the one or more requested portions based on a tag associated with each requested portion; The apparatus of claim 11 , comprising:
14. Analyzing a user request for the content to identify one or more requested portions includes: identifying the one or more request portions based on a convention associated with each request portion; The apparatus of claim 11 , comprising:
15. Caching the portion of content based on the type of the portion of content includes: limited caching of the portion of content in response to determining that the type of the portion of content is customized information. The apparatus of claim 11 , comprising:
Citation Information
Patent Citations
Scalable single-point orchestration system for application programming interface
JP2018185797A
Dynamic directory and content communication
US20150302098A1
Dynamic Content Caching System
US20160182672A1