Semi-automatic deployment of in-service communication infrastructure

By optimizing component topology through semi-automated component analysis and machine learning models, the problem of deploying new services in enterprise software infrastructure is solved, and efficient and resource-saving in-service communication infrastructure deployment is achieved.

CN118974697BActive Publication Date: 2026-02-13ORACLE INT CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202280094324.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2022-05-12
Filing Date
2022-08-17
Publication Date
2026-02-13
Estimated Expiration
2042-08-17

AI Technical Summary

Technical Problem

In large enterprise-wide software infrastructures, deploying new services presents challenges in data sharing and exchange, which are time-consuming, resource-intensive, and inefficient with existing methods.

Method used

A semi-automated approach is adopted to generate in-service communication infrastructure. By utilizing component analyzers, rule generators, topology generators, and system builders, combined with machine learning models, the component topology and data flow are optimized, and the in-service communication infrastructure is deployed automatically.

Benefits of technology

It improves the efficiency and accuracy of deploying new services, reduces resource consumption, optimizes data flow and component connections, and meets specific functional and objective requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN118974697B_ABST
    Figure CN118974697B_ABST
Patent Text Reader

Abstract

Techniques for generating a component topology based on a set of components provided by a user are disclosed. The system identifies one or more characteristics for each particular component in the first set of components. The characteristics can include at least one of a rule associated with the particular component, a prerequisite associated with the particular component, a data input type corresponding to the particular component, and a data output type corresponding to the particular component. Based on the characteristics, the system determines that an additional component not included in the first set of components is necessary to connect the first set of components. The system selects the additional component and determines a component topology that includes the first set of components and the additional component. The system also determines data flows between the components in the component topology.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Reference Incorporation; Disclaimers

[0002] The following applications are hereby incorporated by reference: Application No. 17 / 742,626, filed May 12, 2022; Application No. 63 / 325,106, filed March 29, 2022. Applicant hereby rescinds any disclaimer of claim scope made in the parent application or parent application’s prosecution history, and advises the USPTO that any disclaimers made in the parent application or parent application’s prosecution history should not be considered as disclaimer of claim scope in the instant application. TECHNICAL FIELD

[0003] The present disclosure relates to deploying intra-service communication infrastructure in a cloud environment. BACKGROUND

[0004] Deploying new services in a large, enterprise-wide software infrastructure is tricky, error-prone, and time-consuming. The difficulty of deploying new services is greater when data sharing and data exchange is required, as creating these connections is both developmentally and time-intensive.

[0005] The methods described in this section are methods that can be employed, but need not be the only methods that can be employed. Therefore, unless otherwise indicated, it should not be assumed that any method described in this section can be the only method that can be employed. BRIEF DESCRIPTION OF DRAWINGS

[0006] The embodiments are illustrated by way of example in the figures of the accompanying drawings in which:

[0007] Figure 1 illustrates a block diagram of an example system in accordance with one or more embodiments;

[0008] Figure 2 illustrates an example system for generating a topology in accordance with one or more embodiments;

[0009] Figure 3 illustrates a system generating an example topology in accordance with one or more embodiments;

[0010] Figure 4 illustrates an example set of operations for generating a topology and data flow in accordance with one or more embodiments; and

[0011] Figure 5 shows a block diagram illustrating a computer system in accordance with one or more embodiments. DETAILED DESCRIPTION

[0012] In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding. One or more embodiments can be practiced without these specific details. Features described in one embodiment can be combined with features described in a different embodiment. In some examples, well-known structures and devices are shown in block diagram form in order to avoid unnecessary distraction from the understanding of the present invention.

[0013] 1. OVERALL SUMMARY

[0014] 2. SYSTEM ARCHITECTURE

[0015] 3. MACHINE LEARNING MODEL

[0016] 4. EXAMPLE EMBODIMENTS

[0017] 5. COMPUTER NETWORK AND CLOUD NETWORK

[0018] 6. HARDWARE OVERVIEW

[0019] 7. MISCELLANEOUS; EXTENSIONS

[0020] 1. OVERALL SUMMARY

[0021] One or more embodiments generate a component topology that includes user-selected components and system-selected components. The system selects components necessary for the user-selected components. The system can select components to include in the component topology based on any characteristics of the user-selected components. Characteristics associated with the user-selected components can include, but are not limited to, rules, prerequisites, data input types, and data output types. In an example, a user-selected component can require a particular type of data input that is not output by any other user-selected component. The system can select components that output that particular type of data and system-selected components to a set of components to be used to create the topology. In response to determining that the user-selected components are not sufficient to perform a function to be performed by the component topology and that additional components allow the function to be performed, the system can select the additional components that are not included in the user-selected components.

[0022] The system can select an implementation environment for the user-selected components and the system-selected components in the component topology. As an example, the system can select one of the following for each component: an on-premise environment, an off-premise environment, and a cloud environment. The implementation environment can be selected based on, for example, efficiency, performance, security, and accessibility criteria.

[0023] One or more embodiments update a current component topology during runtime without suspending or terminating components in the current topology. As an example, the system can add components to the current component topology and establish connections with components in the current component topology. The current components can be configured to periodically or continuously obtain data corresponding to any of the components. The data can be used to implement communication channels with the additional components.

[0024] One or more embodiments describe updating a component topology based on machine learning algorithms and models configured to optimize a determined component topology based on implementations of the determined component topology with production data operations. The machine learning algorithms and models can receive feedback on the performance of the implemented topology and update the set of components and / or data flows therebetween to improve the performance of the updated topology.

[0025] In embodiments, responsive to the optimized component topology not including a removed component, the system removes the component from the set of components provided by the user in response to the output, desired functionality, purpose, or goal from the topology. In further embodiments, the output, desired functionality, purpose, or goal from the topology can be specified by the user. In optional embodiments, the output, desired functionality, purpose, or goal from the topology can be derived at least from the set of components provided by the user.

[0026] One or more embodiments described in this specification and / or listed in the claims can not be included in this general overview section.

[0027] 2. System Architecture

[0028] One or more embodiments described below include infrastructure services that semi-automatically deploy in-cloud communication infrastructure based on user input describing a partial set of components to implement. The user input can be used to determine which resources and / or components are needed in the topology and how the resources and / or components are connected within the topology.

[0029] For ease of discussion, examples are described herein with reference to components produced by one or more specific vendors. For example, some examples include one or more components provided by Oracle International Corporation. The various embodiments are not limited to the specific components produced by the specific vendors used in these examples.

[0030] Figure 1 A block diagram of an example system 100 is illustrated in accordance with one or more embodiments. As Figure 1As illustrated, the system 100 includes an infrastructure service 114 that includes the component analyzer 106, the rule generator 108, the topology generator 110, and the system builder 112. In one or more embodiments, the infrastructure service 114 can be implemented in hardware, software, or a combination thereof. In an embodiment, the infrastructure service 114 and / or one or more components thereof can be provided as a software as a service (SaaS). The infrastructure service 114 can generate and / or develop one or more architectures and / or services for multiple users and / or tenants. Some example architectures and / or services include, but are not limited to, communication services, networking, data processing, data pipeline scaling, data storage, content and media platform management, knowledge management, system and workflow automation, user application configuration, Internet of Things (IoT) management, user device management, information security and resilience.

[0031] In one or more embodiments, the infrastructure service 114 is configured to receive the user input 102 via one or more interface components 104. Any type of interface component 104 can be used to receive the user input 102, such as a website, a virtual private network (VPN), the Internet, a remote application, etc.

[0032] In one or more embodiments, the user input 102 can include a collection of resources and / or components that are intended to be included in a topology and / or architecture. In the remainder of the specification, the user input 102 will be described as including a collection of components, but can include any combination of components, elements, modules, functions, resources, and / or processes, as will be appreciated by those skilled in the art. The topology or architecture will be designed for at least one particular purpose and / or to perform some function. In one embodiment, the user input 102 can include the particular purpose or purposes and / or the desired function. In one or more embodiments, the user input 102 can include one or more system dependencies and / or connections between at least two components specified in the user input 102.

[0033] These system dependencies and / or connections can be used by the infrastructure service 114 to connect the various components in the determined topology together, as well as to determine which of the possible topologies is able to connect the specified components as described in the user input 102, while also determining whether the topology will be able to provide the particular purpose or purposes and / or the desired function.

[0034] In one or more embodiments, the component analyzer 106 is configured to analyze the user input 102 to determine at least a set of key or initial components that are specified in the user input 102 to be included in the system-determined topology. Additional components can be required to perform the particular one or more purposes and / or desired functions, and / or to connect the set of components to one another according to one or more rules (as specified by the rule generator 108). In one embodiment, some of the components specified in the user input 102 can be identified by the component analyzer 106 as being redundant, unnecessary, harmful, and / or unavailable. In one embodiment, the component analyzer 106 is configured to not include any of these identified components in the set of key components. However, where possible, the component analyzer 106 will ensure that any topology generated by the topology generator 110 will include each component specified in the user input 102.

[0035] The component analyzer 106 can be implemented in hardware, software, or a combination thereof. After the component analyzer 106 generates the set of key components, it passes this information to the rule generator 108 and the topology generator 110.

[0036] In one or more embodiments, the rule generator 108 is configured to receive the set of key components determined by the component analyzer 106 and generate one or more rules (when applicable) to ensure that any generated topology is functional, minimizes redundancy, optimizes data flow, adheres to common practices and protocols, isolates tenant information, adheres to security and privacy restrictions, connects components according to any interconnections determined in the user input 102 (when available), and will perform the particular one or more purposes and / or desired functions (when specified). The rule generator 108 can be implemented in hardware, software, or a combination thereof. After one or more rules are generated, or in parallel to the operation of the topology generator 110, the rule generator 108 provides the set of rules to the topology generator 110 for use in generating one or more component topologies 116.

[0037] In one or more embodiments, the topology generator 110 is configured to generate at least one component topology 116 that includes all of the key components, connects the components according to any specified interconnections (when available), and performs the specified one or more purposes and / or desired functions (when specified). Multiple possible topologies can be generated for a given set of conditions. In one or more embodiments, an iterative process can be utilized to narrow the range of possible topologies to arrive at a preferred topology that optimizes connectivity, component and resource usage, minimizes latency and delay, and operates most efficiently. Further, in one or more embodiments, the topology generator 110 can utilize at least one machine learning model to generate the component topology 116 in a "best fitting" manner to conform to the set of rules provided by the rule generator 108.

[0038] The topology generator 110 can be implemented in hardware, software, or a combination thereof. After the topology generator 110 creates the component topology 116, it passes this information to the system builder 112.

[0039] In one or more embodiments, the system builder 112 is configured to build the working architecture based on the component topology 116 that includes and optimizes the data flow 118 between the components. The system builder 112 considers and analyzes the positioning and hierarchy of the various components in the component topology 116, as well as all of the required interconnections and dependencies of the various components within the component topology 116, to build the working architecture to achieve the specified one or more purposes and / or desired functions. In one or more embodiments, the system builder 112 can utilize at least one machine learning model to generate the working architecture and / or the data flow 118 between the components. Further, an iterative process can be utilized to refine the generated component topology 116 and the data flow 118 between the components that make up the working architecture over time, thereby further optimizing the product and improving the user experience while maintaining minimal user input throughout the process.

[0040] In one or more embodiments, the topology generator 110 and / or the system builder 112 can utilize at least one machine learning model to generate the component topology 116 and / or the data flow 118 between the components in various ways. In embodiments, one or more machine learning models can be provided by a tenant, user, or the like via the interface component 104 or some other input technique. In one or more embodiments, the topology generator 110 and / or the system builder 112 can develop their own machine learning models based on one or more feedback loops, user input, historical performance, scoring, training, or a combination thereof.

[0041] Figure 2FIGURE illustrates an example system 200 for generating a topology, in accordance with one or more embodiments. Figure 2 The various functions illustrated in the figures can be described as being performed by a "system," but any combination of hardware and software can be utilized to perform the various functions illustrated in the figures. The various functions described in Figure 1 In more general terms, in Figure 2 More detailed details of the various functions of system 200 are illustrated in

[0042] Referring again to Figure 2 , a user 202 (such as an administrator, information technology (IT) specialist, IT manager, etc.) inputs at least a set of components 206 to be included in a topology to be determined by the system. In one or more embodiments, the set of components can be partial or incomplete. User 202 utilizes an interface 204 (such as a GUI, website, VPN, microphone, pointing device, etc.) to enter the set of components 206. User 202 can attempt to include every component that will be needed to accomplish a particular task, goal, calculation, function, or purpose. However, in some approaches, the set of components 206 can be incomplete and / or missing necessary components and / or can include unnecessary, redundant, and / or harmful components. The inclusion and exclusion of components in the set of components 206 can be weighed against the desired functionality of the set of components in order to determine whether every needed component is in the set of components 206 and no additional components.

[0043] In one or more embodiments, the set of components 206 can also include metadata associated with each selected component, or the metadata can be entered separately by user 202. Each user-selected component can be associated with respective metadata describing one or more characteristics of the individual component (such as a name, a function, elements necessary to use with the component, etc.). In an example, the metadata can describe one or more inputs / one or more outputs. In a further example, the metadata can indicate any of a format, a protocol, a bandwidth, a speed, a throughput, etc. for at least one input / output and / or the overall component.

[0044] In an example, the metadata can include one or more rules that dictate conditions necessary or required to implement the respective component. For example, to use component w, system 200 must implement security component x, encryption component y, data compression component z, etc. Thus, the rules are not always generated by system 200 or an element of system 200 (e.g., a rule generator), and can be supplemented or completely provided by other source(s) such as metadata associated with the components. In an approach, one or more rules (or any other characteristic used to determine a topology) can be received, and system 200 will determine based on the received one or more rules what additional components are needed based on these characteristics (and possibly also the desired functionality of the set of components, when known).

[0045] In one or more embodiments, the infrastructure service 208 receives the set of components 206 and generates a topology 210 based on the set of components 206. Each component 212 in the determined topology 210 (e.g., component 212a, component 212b,..., component 212n) is located within the determined topology 210 relative to each other and appropriately interconnected in order to achieve a desired purpose or function. In one or more embodiments, the desired purpose or function can be provided by the user 202 or derived from the set of components 206. In one or more embodiments, the infrastructure service 208 can derive, calculate, or otherwise determine the desired purpose or function based on historical preferences, possible configuration analysis, machine learning model analysis, etc.

[0046] The builder 214 analyzes the topology 210 according to one or more rules 216 (e.g., rule 216a, rule 216b,..., rule 216n) to generate at least one topology to place the set of components 206, one or more additional components, remove redundant or unnecessary components from the set of components 206, create appropriate interconnections therebetween, determine whether one or more functions 238 are needed to process results and / or intermediate values, and determine whether one or more applications 236 are needed to provide the desired purpose or function. The infrastructure service 208 generates the rules 216 to ensure that a working architecture is produced for the tenant to implement locally 234 and / or remotely (e.g., in the cloud 240). The rules 216 can be generated based on any of the following: the set of components 206, the desired purpose or function, and any interconnections and / or dependencies specified between the various components 212.

[0047] The infrastructure service 208 determines which components are to be placed locally 234 and which components are to be placed remotely (e.g., in the cloud 240). Of course, the placement, interconnections, and inclusion of some or all of the components 224, 226, one or more object stores 228, one or more streams 230, and one or more invokers 232 locally 234 and the functions 238 and one or more applications 236 executing in the cloud 240 can be adjusted and / or modified based on the desired purpose or function for the topology and the changing requirements and data streams 218 into the data pipeline 222 of the user 202. Figure 2 The topology shown in FIG. 2 is merely an example and is not intended to limit the placement of any possible elements for the determined topology.

[0048] In one example topology, a set of components 224 (e.g., component 224a, component 224b,..., component 224n) are connected to the data pipeline 222 for data ingestion. The data pipeline 222 receives data (e.g., data 218a, data 218b,..., data 218n) from one or more sources, which can be collected and / or aggregated (e.g., collection 220) before being delivered to the data pipeline 222. In some embodiments, the data 218 can be filtered according to one or more rules 216 before entering the data pipeline 222 or after entering the data pipeline 222.

[0049] In the example topology shown, the component 224a provides data to a stream 230 accessed by a caller 232. The stream 230 and the caller 232 are example types of components that can be included in a topology in addition to many other component types. In this example, each of the component 224a, the stream 230, and the caller 232 are capable of receiving and sending data to each other (bidirectional communication). However, in other examples, the communication of one or more of these elements can be unidirectional. Further, the caller 232 is in bidirectional communication with a function 238a in the cloud 240, but this communication can also be unidirectional in some cases.

[0050] In this example topology, at least one database and / or object store 228 receives data from the data pipeline 222 and / or can receive data from one or more of the other components 224, components 226 locally 234, and / or a series of components 224 (e.g., component 224a, component 224b,..., component 224n) process data from the data pipeline 222 and provide the processed data to components 226 (e.g., component 226a,..., component 226n) and / or the stream 230 and the caller 232. The components 226 also process data locally 234 before providing the data to various functions 238 (e.g., function 238a, function 238b,..., function 238n) in the cloud 240.

[0051] For example, the component 224b provides data to the component 226a and receives feedback or instructions directly from the function 238b in the cloud 240. However, this feedback can be provided to the component 226a in an example, or passed from the component 226a to the component 224b in another example. In turn, the function 238b processes the data according to its specific logic or programming and provides one or more results to the application 236. The infrastructure services 208 have determined that the various functions 238 and one or more applications 236 provide an optimized topology to provide the desired purpose or functionality and, as a result, have dictated their placement and inclusion relationship as shown in the example topology.

[0052] In local 234, each of the various components 224, components 226, one or more object stores 228, one or more streams 230, and one or more invokers 232 can be arranged, positioned, connected, and / or isolated to achieve a desired purpose or function of the topology.

[0053] In cloud 240, the various functions 238 (e.g., function 238a, function 238b,..., function 238n) can have any purpose, function, design, algorithm, calculation, input, output, and / or parameter in order to perform their designated task or tasks. These functions 238 can provide one or more results back to any of the components 224, components 226, or object stores 228 in local 234 and / or to one or more applications 236 or one or more object stores in cloud 240. A series of functions 238 can be utilized in some examples to generate a complex result from one or more data inputs. Additionally, additional functions 236 can be utilized to provide multi-level processing and complex determinations for the example topology.

[0054] When the set of components 206, the designated interconnections, dependencies, and / or desired purpose or function of the topology changes over time, at least one topology generated by infrastructure services 208 can also change to reflect the differences in the input conditions of builder 214 and rules 216. In some approaches, these changes can occur on-the-fly in cloud 240 and local 234 to accommodate changing environments.

[0055] In one example, data streams can be used as an asynchronous message bus that operates independently and at its own pace to decouple components of a large system. Data streams 230 are components that can be used as an alternative to traditional file-scraping methods to help make critical operational data available for indexing, analysis, and visualization more quickly. In another example, data streams 230 can capture activity from websites or mobile applications, such as page views, searches, or other user actions. This information can be used for real-time monitoring and analysis, as well as for offline processing and reporting in a data warehouse system. In another example, data streams 230 can be used as a unified entry point for cloud components to report their lifecycle events for auditing, accounting, and related activities.

[0056] A specific illustration of data stream 230 and its corresponding elements is a series of data transactions generated by clickstream data and aggregated together in collection 220. Examples of elements in the data stream can include web page requests, updates to a shopping cart associated with a user account, changes to a user profile, purchases, returns, and the like. Other examples of elements in data stream 230 include changes to streaming sensor data such as data transmissions associated with changes in steps taken, altitude changes, location tracking coordinates, temperature, humidity, manufacturing process conditions, and the like. Further, data stream 230 can include similar events tracked at successive time units (e.g., every 10 milliseconds (ms), 100 ms, 1 second, 1 minute, etc.).

[0057] Another example of elements in a data stream (of a processing pipeline or workflow) includes operations, analyses, or processing to be performed on a collection of data items. Embodiments of a processing pipeline include a collection of algorithms arranged in sequence that operate on corresponding elements in a collection of data items. Yet another example of data stream 230 can include events, each event being a vector representation of a data item. For example, an event (as an algorithm in a first data stream) can operate on corresponding data item events in a second data stream, resulting in a third data stream of vector events, where each vector event is a representation of a corresponding non-vector data item event in the first data stream.

[0058] Further, some data streams can be accessed and operated on by other data streams and / or computing applications to transform events within a first data stream from one object type or data type to another object type or data type. That is, multiple operations, analyses, and / or transformations can be performed on data streams in succession to produce a desired resulting data stream. In some examples, this succession of processing is referred to as a “processing pipeline.” In some examples, the resulting data stream can include vector representations of data items or transformed versions of data items (e.g., transformed into alternative data types or data representation structures). In other examples, the resulting data stream can include transformed data resulting from operations on another data stream by one or more applications and / or algorithms (e.g., machine learning, document-to-vector, etc.).

[0059] Data streams can be generated according to associations, examples of which include generating events (e.g., data transactions / updates) from a common source, a common computing application, a common web page, a common transaction / data type, and / or a common entity (e.g., business or organization). Associated transactions can be collectively aggregated together to form data stream 230. In further examples, data streams of associated events can then be processed by one or more machine learning applications, resulting in analyses, resulting data streams, and / or predictions that interpret data (e.g., via queries or real-time data trend monitoring).

[0060] Caller 232 is a component that can implement client-side communication protocol activity that serves as a communication channel between applications, such as enterprise applications, distributed applications, cloud applications, and the like. In one example, caller 232 can be used for client-side hypertext transfer protocol (HTTP) protocol activity to perform simple HTTP requests and invoke representational state transfer (REST) and / or simple object access protocol (SOAP) web services.

[0061] In another example, caller 232 can be used to hide the details of the calling into the application endpoint implementation. In this example, the container hands off the implementation of caller 232 to the JAX-WS runtime, and the JAX-WS runtime invokes (java.lang.reflect.Method, java.lang.Object...) to call the web service. Ultimately, caller 232 makes the actual call to the web service on the endpoint instance. The container also injects the provided WebServiceContext and handles invoking the javax.annotation.PostConstruct method (if present) on the endpoint implementation.

[0062] In one or more embodiments, infrastructure services 208 can utilize at least one machine learning model to generate topology 210 and / or data flows between components in various methods. In embodiments, one or more machine learning models can be provided by a tenant, user, or the like via interface 204 or some other input technique. In one or more embodiments, builder 214 and / or infrastructure services 208 can develop their own machine learning models based on one or more feedback loops, user input, historical performance, scoring, training, or a combination thereof.

[0063] Additional embodiments and / or examples related to computer networks are described in the following section titled “Computer Networks and Cloud Networks.”

[0064] In one or more embodiments, one or more components of system 100 and / or system 200 can be implemented on one or more digital devices. The term "digital device" generally refers to any hardware device that includes a processor. A digital device can refer to a physical device that executes an application or a virtual machine. Examples of digital devices include a computer, a tablet, a notebook, a netbook, a server, a web server, a network policy server, a proxy server, a general purpose server, a special purpose hardware device, a hardware router, a hardware switch, a hardware firewall, a hardware firewall, a hardware network address translator (NAT), a hardware load balancer, a mainframe, a television, a content receiver, a set-top box, a printer, a mobile handset, a smart phone, a personal digital assistant (PDA), a wireless receiver and / or transmitter, a base station, a communication management device, a router, a switch, a controller, an access point, and / or a client device.

[0065] In one or more embodiments, system 100 and / or system 200 can include a data repository (not shown). A data repository is any type of storage unit and / or device (e.g., a file system, database, collection of tables, and / or any other storage mechanism) for storing data. A data repository can include multiple different storage units and / or devices. The multiple different storage units and / or devices can or can not be of the same type or located at the same physical site. The data repository can be implemented or executed on the same and / or on separate computing systems as one or more of the components illustrated. The data repository can be communicatively coupled to one or more other components via a direct connection or a network. Information can be implemented across any component (other than the data repository) of the platform. Figure 1 and Figure 2 The data repository can be implemented or executed on the same and / or on separate computing systems as one or more of the components illustrated. The data repository can be communicatively coupled to one or more other components via a direct connection or a network. Information can be implemented across any component (other than the data repository) of the platform. Figure 1 and Figure 2 The data repository can be implemented or executed on the same and / or on separate computing systems as one or more of the components illustrated. The data repository can be communicatively coupled to one or more other components via a direct connection or a network. Information can be implemented across any component (other than the data repository) of the platform.

[0066] In one or more embodiments, system 100 and / or system 200 can include a user interface (e.g., interface component 104, interface 204). A user interface refers to hardware and / or software configured to facilitate communication between a user and one or more components of system 100 and / or system 200. An interface renders user interface elements and receives input via user interface elements. Examples of interfaces include graphical user interfaces (GUIs), command line interfaces (CLIs), haptic interfaces, and voice command interfaces. Examples of user interface elements include checkboxes, radio buttons, drop-down lists, list boxes, buttons, switches, text fields, date and time selectors, command lines, sliders, pages, and forms. Different components of an interface can be specified in different languages. For example, the behavior of user interface elements can be specified in a dynamic programming language, such as JavaScript. The content of user interface elements can be specified in a markup language, such as HyperText Markup Language (HTML) or XML User Interface Language (XUL). The layout of user interface elements can be specified in a style sheet language, such as Cascading Style Sheets (CSS). Optionally, an interface can be specified in one or more other languages, such as Java, Python, C, or C++.

[0067] 3. Machine learning model

[0068] In one or more embodiments, a machine learning algorithm can be included in system 100 and / or system 200 for determining at least one topology, interconnections, rules, dependencies, and any other relevant features, aspects, and / or characteristics of the architecture generated by the infrastructure services. A machine learning algorithm is an algorithm that is capable of being iteratively learned using a set of training data to learn a target model that best maps a set of input variables to one or more output variables. The training data includes a data set and an associated label. The data set is associated with the input variables of the target model. The associated label is associated with the one or more output variables of the target model. For example, the label associated with a data set in the training data can indicate whether the data set belongs to one of a set of possible data set categories. The training data can be updated based on, for example, feedback on the accuracy of the current model. The updated training data can be fed back into the machine learning algorithm, which can in turn update the target model.

[0069] The machine learning algorithm can generate the target model such that the target model best fits the data sets of the training data to the labels of the training data. Specifically, the machine learning algorithm can generate the target model such that the number of matches between the results determined by the target model when the target model is applied to the data sets of the training data and the labels of the training data is maximized. Different target models can be generated based on different machine learning algorithms and / or different sets of training data.

[0070] The machine learning algorithm can include supervised components and unsupervised components. Various types of algorithms can be used, such as linear regression, logistic regression, linear discriminant analysis, classification mixture regression trees, Naive Bayes, K-Nearest Neighbors, Learning Vector Quantization, Support Vector Machines, bagging and random forests, boosting, backpropagation, and / or clustering.

[0071] In an embodiment, the system 100 can include a training pipeline (not shown in Figure 1 that is configured to train a machine learning model. The training can occur after the component topology 116 and / or data flows 118 between components are generated by the infrastructure service 114. In another embodiment, the system 200 can include a training pipeline (not shown in Figure 2 that is configured to train a machine learning model. The training can occur after the topology 210 and / or data flows between components are generated by the infrastructure service 208. In further approaches, the training can occur prior to using the machine learning model on production data. Alternatively or additionally, the training can occur continuously in a feedback loop that refines the machine learning model based on results obtained using production data.

[0072] In the training pipeline, the scheduler can be configured to trigger the orchestrator to obtain information about the machine learning model. The orchestrator is configured to activate or "spin up" an enterprise integrator model of the pipeline. The enterprise integrator model is configured to activate or "spin up" a job (e.g., a Kubernetes job) to perform the training. The job executes to run the training on the machine learning model and continues to operate until one or more completion criteria are met (e.g., all training data has been processed). The orchestrator can be configured to poll the status of one or more any training jobs.

[0073] In an embodiment, a scoring pipeline can be used in conjunction with the machine learning model. The scoring pipeline is configured to perform scoring using the trained machine learning model. The scoring pipeline generates one or more insights by applying the trained machine learning model to production data. Scoring is just one example of how machine learning can be used; other examples include, but are not limited to, generating one or more predictions, adjusting parameters and / or results based on performance against production data, and / or using the output of the machine learning model to continue training the machine learning model.

[0074] To perform scoring, the orchestrator can initiate a scoring pipeline (e.g., in a corresponding Kubernetes pod). The scoring pipeline can be configured to pull data from its sources (e.g., one or more data platforms that can be outside of the secure modular machine learning platform) and store the data in a tenant-specific repository (e.g., an object store associated with the tenant). The scoring pipeline (e.g., code executing in a Kubernetes pod) is configured to obtain the data from the repository and apply a machine learning model to the data. The scoring pipeline can be configured to store the output of the machine learning model (e.g., newly scored data) in the object store and / or transmit the output to an external data source.

[0075] In embodiments, the secure modular machine learning platform includes one or more components described herein that help isolate tenants and / or users from each other. The secure modular machine learning platform can be configured to execute orchestrators on existing clusters (e.g., Kubernetes clusters) that are separate from tenant-specific clusters. The tenant-specific clusters can be configured to only execute tenant-provided images and / or machine learning models. The orchestrators can be configured to transmit instructions to pipelines to perform their respective functions.

[0076] In some examples (e.g., data science applications), the orchestrators can be configured to utilize an autonomous database for transaction processing (ATP). The orchestrators can be configured to use one or more platform-provisioned (“out-of-the-box”) machine learning models. Alternatively or additionally, the orchestrators can be configured to use a microservices framework, such as Minerva produced by Oracle International Corporation. Alternatively or additionally, the orchestrators can be configured to trigger tenant-specific machine learning models in tenant-specific clusters. Tenant-provisioned code executing in the tenant-specific clusters is configured to utilize the corresponding tenant-specific one or more machine learning models. In embodiments, all communication with the tenant-specific clusters (e.g., calls to initiate scoring processes) is initiated from the “main” cluster of the orchestrator.

[0077] In embodiments, each tenant’s code executes in its own virtual cloud network (VCN). Each tenant’s corresponding VCN can be separated from other tenants’ VCNs by firewall rules. Each VCN can be configured to only accept incoming data (“ingress”) to the tenant-specific cluster. Alternatively or additionally, each cluster can only expose a limited set of ports. For example, a cluster can only expose port 22 for Secure Shell (SSH), port 80 for Hypertext Transfer Protocol (HTTP), and port 443 for Secure HTTP (HTTPS). The platform can not include any mechanisms that allow the corresponding VCNs of tenants to communicate with each other.

[0078] 4. Example Embodiments

[0079] For purposes of clarity, detailed examples will be described below. The components and / or operations described below should be understood as one specific example, which can not apply to certain embodiments. As such, the components and / or operations described below should not be interpreted as limiting the scope of any claims.

[0080] Figure 3 FIGURE 1 illustrates a system 300 generating an example topology, in accordance with one or more embodiments. Figure 3 One or more operations illustrated in FIGURE 1 can be modified, rearranged, or omitted. As such, those skilled in the art will recognize that the Figure 3 The specific order of the operations illustrated in FIGURE 1 should not be interpreted as a limitation of the scope of one or more embodiments. Although the Figure 3 operations are described in a particular, sequential order, many of the operations can be Figure 3 performed in parallel, or in a different order than that described. Many of the operations can be performed under the control of one or more computer systems configured and arranged in a wide variety of different ways.

[0081] A user 302 inputs a set of components 306 for inclusion in a topology to be determined by the system. The set of components 306 can be incomplete in one approach, and / or can include extraneous components in the approach. The user 302 enters the set of components 306 with a website 304.

[0082] In one or more embodiments, the set of components 306 can also include metadata associated with each selected component, or the metadata can be entered separately by the user 302. Each user-selected component can be associated with respective metadata describing one or more characteristics of the individual component, such as a name, a function, elements necessary for use with the component, etc. In an example, the metadata can describe one or more inputs / one or more outputs. In a further example, the metadata can indicate any of a format, a protocol, a bandwidth, a speed, a throughput, etc. of at least one input / output and / or the overall component.

[0083] In an example, the metadata can include one or more rules specifying conditions necessary or required for implementation of the respective component. For example, to use component w, the system 300 must implement security component x, encryption component y, data compression component z, etc. Thus, the rules are not always generated by the system 300 or elements of the system 300 (e.g., a rule generator), and can be supplemented or provided entirely by other one or more sources, such as metadata associated with the components. In the approach, one or more rules (or any other characteristics for determining a topology) can be received and the system 300 will determine, based on the received one or more rules, which additional components are needed based on these characteristics (and possibly also desired functionality of the set of components, when known).

[0084] In one or more embodiments, the infrastructure service 308 receives the set of components 306 and generates one or more topologies 310 based on the set of components 306, each topology including each component from the set of components 306 arranged to perform a specific function or purpose. In this example, the set of components 306 includes Oracle International Corporation Maxymiser 312, Oracle International Corporation Unity 314, and a web hook 316. Further, there is an interconnection indicated by the user 302 from the Unity 314 to the Maxymiser 312. For simplicity, this example includes only three components, while many more components, complexities, interconnections, and dependencies can be indicated by the user 302 when developing a complete architecture.

[0085] The builder 318 component of the infrastructure service 308 determines at least one topology 310 that includes the requested components: Maxymiser 312, Unity 314, and web hook 316, as well as the interconnection from the Unity 314 to the Maxymiser 312. The determination of the various network topologies 310 is based on one or more rules 320 determined by the infrastructure service 308 to ensure that the data flow between the various components is feasible, that the inputs match the outputs, that necessary data transformations and modifications between components are performed, and so on. After the various topologies are created, the best topology to perform the specific function or purpose is selected by the infrastructure service 308 to generate the architecture.

[0086] The topology 310 is determined and selected, and then the system is implemented in the local 340 and / or cloud 350 according to the selected topology 310. Thereafter, production data 322 is received from one or more sources and placed into a collection 324 from which a data pipeline 326 is generated in the method. As shown in this example, there are three streams 328, 332, 336 in the local 340, with stream 328 and stream 332 receiving data from the data pipeline 326, and stream 336 receiving processed data from invoker 334. Each of the streams 328, 332, 336 feeds a respective invoker 330, 334, 338, which passes data to various functions set up in the cloud 350 according to the selected topology 310. As shown, invoker 330 provides data to a web hook function 344, invoker 334 sends and receives data with a Unity function 346, and invoker 338 sends and receives data with a Maxymiser function 348. Because the topology 310 requires interconnection from Unity 314 to Maxymiser 312, the Unity function 346 provides data back to the invoker 334, which passes that data to stream 336 for invoker 338, which then passes it to the Maxymiser function 348, providing the interconnection necessary for the topology 310.

[0087] Each of the functions in the cloud 350 provides one or more results to an application 342, which is selected and / or configured by the infrastructure service 308 to perform a specific function or purpose assigned to the topology 310 using one or more results of the various functions.

[0088] When the component collection 306, specified interconnections, dependencies, and / or specific purpose or function of the topology changes over time, at least one topology 310 generated by the infrastructure service 308 can also change to reflect the differences in the input conditions of the builder 318 and rules 320. In some approaches, these changes can occur instantaneously in the cloud 350 and locally 340 to cope with changing environments. In addition, the infrastructure service 308 can iteratively change the topology 310 to refine and improve the operation, efficiency, resource usage, and other measurable qualities of the topology 310, and / or generate additional possible topologies in an attempt to improve the selected topology 310.

[0089] Figure 4 FIGURE 1 illustrates an example system 100 for generating a topology and data streams according to one or more embodiments. Figure 4 One or more of the operations illustrated in FIGURE 1 can be modified, rearranged, or omitted. Thus, not all of the operations illustrated in FIGURE 1 can be required, nor are all of the operations illustrated in FIGURE 1 required to be performed. Certain ones of the operations can be combined and / or performed in other orders. Figure 4The particular order of operations illustrated in FIG. 6 should not be construed as limiting the scope of one or more embodiments. Although the operations are presented in a particular order in Figure 4 Although the operations are described in FIG. 6 as being performed by the system, any combination of hardware, software, or both, can be used to perform the set of operations 400 in one or more embodiments.

[0090] In operation 402, the system receives user input including at least a first set of components to be used to define a component topology. The user input can also include interconnections between one or more components, dependencies between one or more components, an order or sequence of components, outputs from the first set of components, a desired functionality, purpose, or goal, etc. In embodiments, any and / or all of this information can be inferred, identified, and / or determined based on the first set of components alone or also based on other available information such as historical preferences, machine learning models, scores, past results, an identity of a requester, an activity to be performed, etc. In operations 404-412, the system generates a component topology based on the set of components.

[0091] In one embodiment, the first set of components can be a selection of products that are commercially available from one or more software / architecture / network vendors. These components are selected to achieve the purpose of the enterprise or organization.

[0092] The system identifies one or more characteristics of each particular component of the first set of components in operation 404. The characteristics can include any relevant information about the component such as a name, a function, a source, a number of inputs, a number of outputs, a name and / or parameter of a value associated with the particular component, one or more data input types of the particular component, one or more data output types of the particular component, a rule associated with the particular component, a prerequisite associated with the particular component, a constraint for the particular component, other types of components related to the particular component, etc. The components can be any type known in the art such as a flow, an object store, a database, a caller, a consumer, a functional block, a collector, a resolver, a filter, etc.

[0093] The system determines whether additional components (not included in the first set of components) are needed to connect the first set of components in operation 406, such as to achieve a desired functionality, purpose, goal, or output. In one embodiment, the determination is based on the one or more characteristics respectively associated with each component of the first set of components. In further embodiments, the determination can also take into account resources available locally and / or in the cloud (possibly unknown to the user), components that are more efficient or perform better than the components specified in the first set of components, components that perform multiple tasks specified by components in the first set of components, interconnection constraints and / or rules that affect how components in the first set of components can be interconnected, etc.

[0094] The additional components can be of the specified type in the first set of components or a different type of component. Further, the additional components can be selected so that, upon implementation in the on-premise and / or cloud architecture, ensure that all components in the first set of components are able to work together, communicate properly, share data, protect data and privacy, and achieve the desired functionality, purpose, goal, or output.

[0095] In operation 408, in response to the system determining that additional components are needed, the system selects additional components to include in the second component topology. The selection of the second components can be based on any relevant information available to the system, and in one embodiment, includes a) one or more characteristics respectively associated with each component of the first set of components, and b) one or more characteristics of the additional components. The characteristics of the additional components can be compared to the needs, deficiencies, problems, and / or inefficiencies in the first set of components when attempting to design a topology that is able to achieve the desired functionality, purpose, goal, or output.

[0096] According to one or more embodiments, the system selects an implementation environment for the additional components and / or the first set of components. The implementation environment can be selected based on any relevant information, such as where the components are physically located, the cost of acquiring and / or implementing the components in different environments, the necessary or allowed order or sequence of the components, the desired functionality, purpose, goal, or output, etc. Any available environment can be specified, such as an on-premise environment, an off-premise environment, a split-installation environment, a remote computing environment, and / or a cloud environment. In one embodiment, the component topology can be distributed across different environments.

[0097] In one or more embodiments, the system selects the additional component in response to determining that the additional component is associated with a first data input type that matches a first data output type corresponding to a first component of the first set of components. In other words, the output of one component can be used to select a second component to add to the topology based on the input of the second component matching the output of the first component. In this approach, the additional component would be placed in the topology in a location that receives data from the first component.

[0098] Various data input types and output types can be used with various components, and can be based on any possible distinction, such as data protocol, data format, data size, data transfer rate, physical connection type, hardware or software based implementation of the component, etc.

[0099] In another embodiment, the system can select an additional component in response to determining that no component in the first set of components is associated with any data output type that matches the first data input type corresponding to the first component in the first set of components. In other words, the system can determine that the data input types within the first set of components are insufficient to accept data from the particular data output type of the first component. Accordingly, the system will select a component that is configured to accept the data output type of the first component as input. The system will then connect the output of the first component to the input of the additional component.

[0100] In one or more embodiments, the system selects an additional component in response to determining that the additional component is associated with a first data output type that matches the first data input type corresponding to the first component in the first set of components. In other words, the input of one component can be used to select a second component to add to the topology based on the output of the second component matching the input of the first component. In this approach, the additional component is placed in the topology in a location that provides data to the first component.

[0101] In another embodiment, the system can select an additional component in response to determining that no component in the first set of components is associated with any data output type that matches the first data input type corresponding to the first component in the first set of components. In other words, the system can determine that the data output types within the first set of components are insufficient to provide data to the particular data input type of the first component. Accordingly, the system will select a component that is configured to provide data corresponding to the data input type of the first component as output. The system will then connect the input of the first component to the output of the additional component.

[0102] According to one or more embodiments, the system selects an additional component based on a data input type of data to be transmitted to the component topology. In other words, when selecting an additional component to add to the component topology, the data in the data pipeline is considered, and can include some other type of application, function, or component.

[0103] In one embodiment, the system can generate a second component topology by modifying a previous component topology, thereby creating a second component topology that improves upon the previous topology in some respect (e.g., is able to actually perform the desired function, purpose, goal, or output, operates faster, operates more efficiently, operates at a lower cost, operates using fewer components, operates using more reliable components, etc.).

[0104] In further embodiments, the second component topology can be generated by the system at runtime while the components in the previous component topology are executing, and during the generation of the second component topology, the operation of the previous component topology is not interrupted until the system transitions in execution to the second component topology.

[0105] In operation 410, the system determines, based on the selection of the second component: a) a second component topology, including the first set of components and the additional component, and b) data flows between the components in the second component topology. The data flows between the components can be based on an order, sequence, interconnections, and / or dependencies between at least some of the components in order to achieve an output, desired functionality, purpose, or goal from the second component topology.

[0106] In response to the system determining that the additional component is not needed (e.g., to achieve the desired functionality, purpose, goal, or output), the system determines, in operation 412: a) a first component topology, including the first set of components, and b) data flows between the components in the first component topology. The data flows between the components can be based on an order, sequence, interconnections, and / or dependencies between at least some of the components in order to achieve an output, desired functionality, purpose, or goal from the first component topology.

[0107] In one embodiment, prior to the system selecting the additional component, the system can determine that the first set of components is insufficient to complete any topology of components that can operate together, perform necessary tasks or functionality, and / or achieve the desired functionality, purpose, goal, or output. This determination can be made based on some criteria not being met, such as a maximum total execution time, a maximum or minimum number of cycles, each component in the first set of components being unable to communicate with another component in any topology, an execution cost exceeding a threshold, etc. Upon making this determination, the system can determine whether removing one or more components, adding one or more components, and / or replacing one or more components would increase the likelihood of being able to achieve the desired functionality, purpose, goal, or output from a new topology and the likelihood of the execution of the component topology meeting all of the criteria. The system can iteratively make these determinations until a topology is selected that can execute as desired.

[0108] Further, after implementing a topology, the system can monitor the performance of the implemented topology to determine whether a better topology is available to perform the desired function, purpose, goal, or output. For example, the system can determine that a topology is actually able to perform the desired function, purpose, goal, or output faster, more efficiently, at a lower cost, using fewer components, using more reliable components, etc. If such a better topology is determined, the system can revise the implementation on the fly to conform to the improved topology to enhance the performance of the implemented solution. Machine learning algorithms and / or models can be used to assist in making these determinations and / or to suggest additional topologies and data flows between components within additional topologies, as described in one or more embodiments herein.

[0109] In another embodiment, the system can receive an updated, modified, and / or additional set of components from which to create a topology. For an updated set of components, the system can change an existing topology to account for changes made to a previously received set of components and can work in an iterative manner to converge on a best-fit topology to achieve the desired function, purpose, goal, or output. For a new set of components, the system can again perform operations 400 to provide a new topology that meets all the necessary conditions of the user and the available installation environment.

[0110] In one or more embodiments, the system receives a second user input that specifies and / or includes a function for the first set of components and / or the component topology. This function describes the overall purpose of the topology, e.g., the function as a whole. In these embodiments, any additional components necessary to implement the function of the component topology can be selected by the system in response to determining that one or more additional components are necessary to implement the function of the component topology.

[0111] In one embodiment, the system can optimize the topology by determining which component is able to accept the output from the component specified in the first set of components. For example, if the set of components includes a network hook, then a component that is configured to accept all of the output from the network hook can be selected as an additional component, even if it causes a different component in the set of components to be redundant and / or unusable. In this case, simply removing the redundant / unusable component from the topology will result in a more optimized component topology to implement. In another example, assume that Oracle Corporation Unity is selected as a component and a particular component is also specified in the first set of components that is able to accept one of the outputs from Unity, then the additional component selected can be a duplicate of the particular component to accept the other outputs from Unity.

[0112] In one or more embodiments, the system can receive a second user input comprising an updated set of components. In response to the second user input, the system determines which components from the first set of components have been removed or added to form the updated set of components. Based on this information, the system selects one or more first components to add to the second topology and / or one or more second components to remove from the second component topology. The selection and choosing of components to add or remove is based on: a) one or more characteristics respectively associated with each first component, b) one or more characteristics respectively associated with each second component, and c) one or more characteristics of the components removed or added from the first set of components. In this way, the system is able to account for all changes made to the first set of components when designing a new topology for arranging the updated set of components, and optimizing the topology based on the characteristics of the components added / removed / remaining in the updated set of components. In the method, the system uses this information to determine: a) a third topology of components (the topology based on the first set of components, the additional components, the one or more first components, and the one or more second components), and b) data flows between the components in the third component topology.

[0113] 5. Computer network and cloud network

[0114] In one or more embodiments, a computer network provides connectivity between a set of nodes. The nodes can be local and / or remote with respect to each other. The nodes are connected by a set of links. Examples of links include coaxial cable, unshielded twisted pair cable, copper cable, optical fiber, and virtual link.

[0115] A subset of the nodes implements the computer network. Examples of such nodes include switches, routers, firewalls, and network address translators (NATs). Another subset of the nodes uses the computer network. Such nodes (also referred to as “hosts”) can execute client processes and / or server processes. Client processes make requests for computer services, such as execution of a particular application and / or storage of a particular amount of data. Server processes respond by executing the requested services and / or returning the corresponding data.

[0116] The computer network can be a physical network, including physical nodes connected by physical links. A physical node is any digital device. A physical node can be a function-specific hardware device, such as a hardware switch, a hardware router, a hardware firewall, and a hardware NAT. Additionally or alternatively, a physical node can be a general-purpose machine configured to execute various virtual machines and / or applications that run respective functions. A physical link is a physical medium connecting two or more physical nodes. Examples of links include coaxial cable, unshielded twisted pair cable, copper cable, and optical fiber.

[0117] A computer network can be an overlay network. An overlay network is a logical network that is implemented on top of another network (e.g., a physical network). Each node in an overlay network corresponds to a respective node in the underlying network. Thus, each node in an overlay network is associated with both an overlay address (addressed to the overlay node) and an underlay address (addressed to the underlay node that implements the overlay node). An overlay node can be a digital device and / or a software process (such as a virtual machine, an application instance, or a thread). Links connecting overlay nodes are implemented as tunnels through the underlay network. Overlay nodes at either end of a tunnel treat the underlying multi-hop path between them as a single logical link. Tunneling is performed by encapsulation and decapsulation.

[0118] In embodiments, a client can be local and / or remote to a computer network. A client can access a computer network through other computer networks, such as a private network or the Internet. A client can communicate requests to a computer network using a communication protocol, such as the Hypertext Transfer Protocol (HTTP). Requests are communicated through an interface, such as a client interface (such as a web browser), a programmatic interface, or an application program interface (API).

[0119] In embodiments, a computer network provides connectivity between clients and network resources. Network resources include hardware and / or network resources configured to execute server processes. Examples of network resources include processors, data stores, virtual machines, containers, and / or software applications. Network resources are shared among multiple clients. Clients independently request computing resources from a computer network. Network resources are allocated to requests and / or clients on demand. Network resources allocated to each request and / or client can be scaled up or down, for example, based on (a) computing resources requested by a particular client, (b) aggregated computing services requested by a particular tenant, and / or (c) aggregated computing services requested of the computer network. Such a computer network can be referred to as a “cloud network.”

[0120] In embodiments, a service provider provides a cloud network to one or more end users. Various service models can be implemented by a cloud network, including but not limited to software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS). In SaaS, a service provider provides end users with the ability to use a service provider’s application, which executes on network resources. In PaaS, a service provider provides end users with the ability to deploy custom applications on network resources. Custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, a service provider provides end users with the ability to provision processing, storage, networks, and other basic computing resources provided by network resources. Any arbitrary application, including an operating system, can be deployed on network resources.

[0121] In embodiments, various deployment models can be implemented by the computer network, including but not limited to private cloud, public cloud, and hybrid cloud. In a private cloud, network resources are provisioned for the exclusive use of a specific group of one or more entities (the term "entity" as used herein refers to a company, organization, person, or other entity). The network resources can be local and / or remote to the premises of the specific group of entities. In a public cloud, cloud resources are provisioned for multiple entities (also referred to as "tenants" or "customers") that are independent of each other. The computer network and network resources therein are accessed by clients corresponding to different tenants. Such a computer network can be referred to as a "multi-tenant computer network". Several tenants can use the same specific network resource at different times and / or at the same time. The network resources can be local and / or remote to the premises of the tenants. In a hybrid cloud, the computer network contains a private cloud and a public cloud. An interface between the private cloud and the public cloud allows portability of data and applications. Data stored at the private cloud and data stored at the public cloud can be exchanged through the interface. Applications implemented at the private cloud and applications implemented at the public cloud can have dependencies on each other. Invocation from an application at the private cloud to an application at the public cloud (and vice versa) can be performed through the interface.

[0122] In embodiments, tenants of a multi-tenant computer network are independent of each other. For example, the business or operations of one tenant can be separated from the business or operations of another tenant. Different tenants can have different network requirements for the computer network. Examples of network requirements include processing speed, amount of data storage, security requirements, performance requirements, throughput requirements, latency requirements, elasticity requirements, quality of service (QoS) requirements, tenant isolation, and / or consistency. The same computer network can need to implement different network requirements demanded by different tenants.

[0123] In one or more embodiments, in a multi-tenant computer network, tenant isolation is implemented to ensure that applications and / or data of different tenants are not shared with each other. Various tenant isolation methods can be used.

[0124] In embodiments, each tenant is associated with a tenant ID. Each network resource of the multi-tenant computer network is tagged with the tenant ID. A tenant is only allowed to access a specific network resource if the tenant and the specific network resource are associated with the same tenant ID.

[0125] In embodiments, each tenant is associated with a tenant ID. Each application implemented by the computer network is tagged with the tenant ID. Additionally or alternatively, each data structure and / or data set stored by the computer network is tagged with the tenant ID. A tenant is only allowed to access a specific application, data structure, and / or data set if the tenant and the specific application, data structure, and / or data set are associated with the same tenant ID.

[0126] As an example, each database implemented by the multi-tenant computer network can be tagged with a tenant ID. Only tenants associated with the corresponding tenant ID can access the data of a particular database. As another example, each entry in a database implemented by the multi-tenant computer network can be tagged with a tenant ID. Only tenants associated with the corresponding tenant ID can access the data of a particular entry. However, the database can be shared by multiple tenants.

[0127] In an embodiment, a subscription list indicates which tenants have authorization to access which applications. For each application, a list of tenant IDs of tenants authorized to access the application is stored. A tenant is only allowed to access a particular application if the tenant's tenant ID is included in the subscription list corresponding to the particular application.

[0128] In an embodiment, network resources (such as digital devices, virtual machines, application instances, and threads) corresponding to different tenants are isolated to tenant-specific overlay networks maintained by the multi-tenant computer network. As an example, a data packet from any source device in a tenant overlay network can only be transmitted to other devices within the same tenant overlay network. Any transmission from a source device on a tenant overlay network to a device in another tenant overlay network is prohibited using encapsulation tunnels. Specifically, a data packet received from a source device is encapsulated into an outer packet. The outer packet is transmitted from a first encapsulation tunnel endpoint (in communication with the source device in the tenant overlay network) to a second encapsulation tunnel endpoint (in communication with the destination device in the tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer packet to obtain the original data packet by the source device. The original data packet is transmitted from the second encapsulation tunnel endpoint to the destination device in the same particular overlay network.

[0129] 6. Hardware Overview

[0130] According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices can be hard-wired to perform the techniques, or can include digital electronic devices such as one or more application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or network processing units (NPUs) that are persistently programmed to perform the techniques, or can include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices can also combine custom hard-wired logic, ASICs, FPGAs, or NPUs with custom programming to accomplish the techniques. The special-purpose computing devices can be desktop computer systems, portable computer systems, handheld devices, networking devices, or any other device comprising a set of hard-wired and / or program logic to implement the techniques. According to one embodiment, the techniques are implemented by one or more computer programs executed by one or more programmable computing devices comprising a processor, a data storage system (including volatile and non-volatile memory and / or storage), at least one input device, and one or more output devices. Program code is applied to input data to perform the functions of the program. The input data and transformed data can be represented in any of a variety of different physical and / or electronic media, now known or developed in the future. The input data can be called parameters, arguments, inputs, data, records, file, items, terms, numbers, or the like. The processing devices that apply the program code can be called processors, controllers, controllers, chips, cores, or the like. The program code can be written in any combination of one or more programming languages, including low level programming languages (e.g., machine code), high level programming languages, object oriented programming languages, and / or functional programming languages. The program code can execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), via I / O interface or the like.

[0131] For example, Figure 5is a block diagram that illustrates a computer system 500 upon which embodiments of the application can be implemented. The computer system 500 includes a bus 502 or other communication mechanism for communicating information and a processor 504 coupled to the bus 502 for processing information. The hardware processor 504 can be, for example, a general purpose microprocessor.

[0132] The computer system 500 also can include a main memory 506, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 502 for storing information and instructions to be executed by the processor 504. The main memory 506 also can be used for storing temporary variables or other intermediate information during execution of instructions to be executed by the processor 504. Such instructions can be stored in one or more programs 510 in the main memory 506. The instructions in the programs 510 can be implemented in software, firmware and / or hardware and when executed by the processor 504 cause the computer system 500 to perform operations that provide the functions indicated in the flowcharts.

[0133] The computer system 500 also includes a read only memory (ROM) 508 or other static storage device coupled to the bus 502 for storing static information and instructions for the processor 504. A storage device 510, such as a magnetic disk or optical disk, is provided and coupled to the bus 502 for storing information and instructions.

[0134] The computer system 500 can be coupled via the bus 502 to a display 512, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 514, including alphanumeric and other keys, is coupled to the bus 502 for communicating information and command selections to the processor 504. Another type of user input device is a cursor control 516, such as a mouse, a trackball, or cursor direction keys, for communicating direction information and command selections to the processor 504 and for controlling cursor movement on the display 512. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.

[0135] Computer system 500 can implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and / or program logic which in combination with the computer system causes or programs computer system 500 to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system 500 in response to processor 504 executing one or more sequences of instructions contained in main memory 506. Such instructions can be read into main memory 506 from another storage medium, such as storage device 510. Execution of the sequences of instructions contained in main memory 506 causes processor 504 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry can be used in place of or in combination with software instructions.

[0136] The term "storage media" as used herein refers to any non-transitory media that store data and / or instructions that cause a machine to operate in a specific fashion. Such storage media can comprise non-volatile media and / or volatile media. Non-volatile media includes, for example, optical disks or magnetic disks such as storage device 510. Volatile media includes dynamic memory, such as main memory 506. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid-state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge, content-addressable memory (CAM), and ternary content-addressable memory (TCAM).

[0137] Storage media is distinct from, but can be used in combination with, transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire, and fiber optic cables, including wires that comprise bus 502. Transmission media can also take the form of acoustic or light waves, such as those generated during radio frequency and infrared data communications.

[0138] Various forms of media can be involved in carrying one or more sequences of one or more instructions to processor 504 for execution. For example, the instructions can initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 500 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the signal and appropriate circuitry can place the data on bus 502. Bus 502 carries the data to main memory 506, from which processor 504 retrieves and executes the instructions. The instructions received by main memory 506 can optionally be stored on storage device 510 either before or after execution by processor 504.

[0139] Computer system 500 can also include a communications interface 518 coupled to bus 502. Communications interface 518 provides a two-way data communication coupling to a network link 520 that is connected to a local network 522. For example, communications interface 518 can be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communications interface 518 can be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links can also be implemented. In any such implementation, communications interface 518 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.

[0140] Network link 520 typically provides data communication through one or more networks to other data devices. For example, network link 520 can provide a connection through local network 522 to a host computer 524 or to data equipment operated by an Internet Service Provider (ISP) 526. ISP 526 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the "Internet" 528. Local network 522 and Internet 528 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 520 and through communications interface 518, which carry the digital data to and from computer system 500, are example forms of transmission media.

[0141] Computer system 500 can send messages and receive data, including program code, through the one or more networks, network link 520 and communications interface 518. In the Internet example, a server 530 might transmit a requested code for an application program through Internet 528, ISP 526, local network 522 and communications interface 518.

[0142] The received code can be executed by a processor 504 as it is received, and / or stored in storage device 510, or other non-volatile storage for later execution.

[0143] 7. Miscellaneous; Expansion

[0144] Embodiments relate to a system having one or more devices including a hardware processor and configured to perform any and / or all of the operations described herein and / or in any of the following claims.

[0145] In embodiments, a non-transitory computer-readable storage medium includes instructions that, when executed by one or more hardware processors, cause performance of any of the operations described herein and / or in any claim.

[0146] Any combination of the features and functionality described herein can be used according to one or more embodiments. In the foregoing specification, embodiments have been described with reference to numerous specific details that can vary from implementation to implementation. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. The sole and exclusive indicator of the scope of the application, and what is intended by the applicants to be the scope of the application, is the literal and equivalent scope of the set of claims that issue from this application, in the specific form in which it is presented, including any subsequent amendments or modifications, if any, as well as any additional claims that will be added junior to this filing.

Claims

1. A non-transitory computer-readable medium comprising instructions that, when executed by at least one hardware processor, cause to perform an operation, the operation comprising: Receive user input, which identifies a first set of user-selected components to be used to define the component topology; The component topology is generated at least in the following ways: For each specific component in the selected component set for the first user, one or more features are identified, said one or more features being selected from a group including: Rules associated with the specific component; Necessary conditions associated with the specific component; The data input type corresponding to the specific component; and The data output type corresponding to the specific component; Based on the one or more characteristics associated with at least one component in the first set of user-selected components, it is determined that additional components not included in the first set of user-selected components are necessary for implementing a specific data flow corresponding to the component topology. The system selects the additional components to be included in the component topology based on: a) one or more features associated with at least one component in the first user-selected component set, and b) one or more features of the additional components; and The system determines: a) the component topology, which includes the first user-selected component set and the additional components selected by the system, and b) the specific data stream corresponding to the component topology.

2. The non-transitory computer-readable medium of claim 1, wherein, prior to the system selecting the additional component, the operation further includes determining that the first user-selected set of components is insufficient to complete any component topology.

3. The non-transitory computer-readable medium of claim 1, wherein the operation further comprises the additional component selected by the system for the system to select an implementation environment, the implementation environment including one of the following: a local environment and / or a non-local environment.

4. The non-transitory computer-readable medium according to claim 1, wherein the operation further comprises: In response to determining that the additional component selected by the system is associated with a first data input type that matches a first data output type corresponding to a first component in the first set of user-selected components, the system selects the additional component.

5. The non-transitory computer-readable medium according to claim 4, wherein the operation further comprises: In response to further determining that no component in the first set of user-selected components is associated with any data input type that matches the first data output type corresponding to the first component in the first set of user-selected components, the additional component selected by the selection system is selected.

6. The non-transitory computer-readable medium according to claim 1, wherein the operation further comprises: In response to determining that the additional component selected by the system is associated with a first data output type that matches a first data input type corresponding to a first component in the first set of user-selected components, the system selects the additional component.

7. The non-transitory computer-readable medium of claim 6, wherein the operation further comprises: In response to further determining that no component in the first set of user-selected components is associated with any data output type that matches the first data input type corresponding to the first component in the first set of user-selected components, the additional component selected by the selection system is chosen.

8. The non-transitory computer-readable medium of claim 1, wherein the operation further comprises receiving a second user input, the second user input including functionality for the component topology, wherein the additional component selected by the system is selected by the system in response to determining that the additional component selected by the system is necessary for implementing the functionality of the component topology.

9. The non-transitory computer-readable medium of claim 1, wherein the additional component selected by the system is further selected based on the data input type of the data to be transmitted to the component topology.

10. The non-transitory computer-readable medium of claim 1, wherein generating the component topology includes modifying a previous component topology to generate the component topology.

11. The non-transitory computer-readable medium of claim 10, wherein the component topology is generated at runtime while components in the previous component topology are executed without interruption during the generation of the component topology.

12. The non-transitory computer-readable medium of claim 1, wherein the operation further comprises: Receive second user input, which includes an updated set of components; The system determines which components from the first user-selected component set have been removed or added to form the updated component set; The system selects one or more first components to add to the topology and one or more second components to remove from the component topology based on: a) one or more features associated with each first component, b) one or more features associated with each second component, and c) one or more features of components removed or added from the first user-selected component set; and The system determines: a) a third component topology based on the first user-selected component set, the additional components selected by the system, the one or more first components, and the one or more second components, and b) the data flow between components in the third component topology.

13. A computer-implemented system for generating topologies of computing components, the system comprising: At least one hardware processor; as well as A non-transitory computer-readable medium includes instructions that, when executed by the at least one hardware processor, cause to perform operations including: Receive user input, which identifies a first set of user-selected components to be used to define the component topology; The component topology is generated at least in the following ways: For each specific component in the selected component set for the first user, one or more features are identified, said one or more features being selected from a group including: Rules associated with the specific component; Necessary conditions associated with the specific component; The data input type corresponding to the specific component; and The data output type corresponding to the specific component; Based on the one or more characteristics associated with at least one component in the first set of user-selected components, it is determined that additional components not included in the first set of user-selected components are necessary for implementing a specific data flow corresponding to the component topology. The additional components to be included in the component topology are selected based on: a) one or more features associated with at least one component in the first user-selected component set, and b) one or more features of the additional components; and Determine: a) the component topology, which includes the first user-selected component set and the additional components, and b) the component topology-specific data flow.

14. The system of claim 13, wherein before selecting the additional component, the operation further includes determining that the first set of user-selected components is insufficient to complete any component topology.

15. The system of claim 13, wherein the operation further comprises the system selecting an implementation environment for the additional component, the implementation environment including one of: a local environment and / or a non-local environment.

16. The system of claim 13, wherein the operation further includes receiving a second user input, the second user input including functionality for the component topology, wherein the additional component is selected in response to determining that the additional component is necessary for implementing the functionality of the component topology.

17. A computer-implemented method for generating a topology of computing components, comprising: Receive user input, which identifies a first set of user-selected components to be used to define the component topology; The component topology is generated at least in the following ways: For each specific component in the selected component set for the first user, one or more features are identified, said one or more features being selected from a group including: Rules associated with the specific component; Necessary conditions associated with the specific component; The data input type corresponding to the specific component; and The data output type corresponding to the specific component; Based on the one or more characteristics associated with at least one component in the first set of user-selected components, it is determined that additional components not included in the first set of user-selected components are necessary for implementing a specific data flow corresponding to the component topology. The additional components to be included in the component topology are selected based on the following criteria: a) one or more features associated with at least one component in the first set of user-selectable components, and b) one or more features of the additional components; and Determine: a) the component topology, which includes the first user-selected component set and the additional components; and b) the specific data stream corresponding to the component topology. The method is performed by a system including at least one hardware processor.

18. The method of claim 17, further comprising: Before selecting the additional components, it is determined that the first set of user-selected components is insufficient to complete any component topology.

19. The method of claim 17, further comprising: The system selects an implementation environment for the additional components, the implementation environment including one of the following: a local environment and / or a non-local environment.

20. The method of claim 17, further comprising: Receive a second user input, the second user input including functionality for the component topology, wherein the additional component is selected in response to determining that the additional component is necessary for implementing the functionality of the component topology.

Citation Information

Patent Citations

  • Methods and systems for recording and real-time playback and seeking of a presentation layer protocol data stream

    CN103152363A

  • Method and apparatus for dynamic middleware assembly

    US20060106842A1