Semi-automated deployment for in-service communications infrastructure
Patent Information
- Application Number
- JP2024557651
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-05-12
- Filing Date
- 2022-08-17
- Publication Date
- 2026-09-14
- Estimated Expiration
- 2042-08-17
Smart Images

Figure 0007920306000001 
Figure 0007920306000002 
Figure 0007920306000003
Abstract
Description
Technical Field
[0001] Incorporation by Reference, Disclaimer Patent Application No. 17 / 742,626 filed on May 12, 2022 and Patent Application No. 63 / 325,106 filed on March 29, 2022 are incorporated herein by reference. Applicant hereby withdraws all disclaimers to the claims in this application or the prosecution history thereof by this specification, and advises the USPTO that the claims in this application may be broader than all the claims in the parent application.
[0002] Technical Field The present disclosure relates to deploying intra-service communication infrastructure in a cloud environment.
Background Art
[0003] Background Deployment of new services within large-scale enterprise software infrastructure is cumbersome, error-prone and time-consuming. Difficulties in deploying new services are even greater when data sharing or data exchange is required, since both significant development resources and time are required to create these connections.
[0004] Approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
[0005] Embodiments are described in the accompanying drawings as examples, not as limitations. It should be noted that a reference to “an” or “one” embodiment in this disclosure does not necessarily refer to the same embodiment, but rather means at least one. [Brief explanation of the drawing]
[0006] [Figure 1] This figure shows a block diagram of an exemplary system according to one or more embodiments. [Figure 2] This figure shows an exemplary system for generating topology according to one or more embodiments. [Figure 3] This figure shows a system for generating exemplary topologies according to one or more embodiments. [Figure 4] This figure shows an exemplary set of actions for generating topology and dataflow according to one or more embodiments. [Figure 5] This figure shows a block diagram illustrating a computer system according to one or more embodiments. [Modes for carrying out the invention]
[0007] Detailed explanation In the following description, for illustrative purposes and to provide a complete understanding, numerous specific details are given. One or more embodiments may be practiced without those specific details. Features described in one embodiment may be combined with features described in a different embodiment. In some examples, well-known structures and devices are described by reference to block diagrams to avoid unnecessarily obscuring the invention. 1. Overview 2. System Architecture 3. Machine Learning Models 4. Example of an Embodiment 5. Computer networks and cloud networks 6. Hardware Overview 7. Other extensions 1. Overview One or more embodiments generate a component topology that includes components selected by the user and components selected by the system. The system selects components required by the user-selected components. The system may select components based on any of the characteristics of the user-selected components and include them in the component topology. Characteristics associated with the user-selected components may include, but are not limited to, rules, requirements, data input types, and data output types. In one example, a user-selected component may require a particular type of data input that is not output by any of the other user-selected components. The system may select components that output a particular type of data, and the components selected by the system for a set of components are used to create the topology. In response to a decision that the user-selected components are insufficient to perform the function performed by the component topology, and that additional components would enable the performance of that function, the system may select additional components not included in the user-selected components.
[0008] The system may select the implementation environment for user-selected components and system-selected components within the component topology. For example, the system may select one of the following environments for each component: on-premises, off-premises, and cloud. The implementation environment may be selected based on criteria such as efficiency, performance, security, and accessibility.
[0009] One or more embodiments update the current topology of a component during execution without pausing or terminating any components in the current topology. For example, the system may add a component to the component's current topology and establish connections with components in the component's current topology. The current component may be configured to periodically or continuously retrieve data corresponding to any component. This data may be used to implement communication channels with additional components.
[0010] 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 manipulating the implementation of the determined component topology using production data. The machine learning algorithms and models may receive feedback on the performance of the implemented topology and update the set of components and / or the data flow between components to improve the performance of the updated topology.
[0011] In one embodiment, the system removes a component from the user-provided set of components in response to the fact that a more optimized topology of components without the removed component can provide the desired function, purpose, goal, or output of the topology. In a further embodiment, the desired function, purpose, goal, or output of the topology may be specified by the user. In an alternative embodiment, the desired function, purpose, goal, or output of the topology may be derived from at least the user-provided set of components.
[0012] One or more embodiments described herein and / or enumerated in the claims may not be included in the summary section.
[0013] 2. System Architecture One or more embodiments described below include an infrastructure service that semi-autonomously deploys an infrastructure service communication infrastructure in a cloud environment based on user input describing a partial set of components to be implemented. User input may be used to determine which resources and / or components are required in the topology, and how those resources and / or components are connected within the topology.
[0014] For the sake of simplicity, examples described herein refer to components manufactured by one or more specific vendors. For example, some examples include one or more components manufactured by Oracle International Corporation. Various embodiments are not limited to the specific components manufactured by the specific vendors used in these examples.
[0015] Figure 1 shows a block diagram of an exemplary system 100 according to one or more embodiments. As shown in Figure 1, system 100 includes infrastructure services 114, which include a component analyzer 106, a rule generator 108, a topology generator 110, and a system builder 112. In one or more embodiments, infrastructure services 114 may be implemented in hardware, software, or a combination thereof. In embodiments, infrastructure services 114 and / or one or more components thereof may be provided as SaaS (Software-as-a-Service). Infrastructure services 114 may generate and / or develop one or more types of architectures and / or services for multiple users and / or tenants. Some exemplary 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.
[0016] In one or more embodiments, the infrastructure service 114 is configured to receive user input 102 via one or more interface components 104. Any type of interface component 104 may be used to receive user input 102, such as a website, a virtual private network (VPN), the internet, or a remote application.
[0017] In one or more embodiments, user input 102 may include a set of resources and / or components intended to be included in the topology and / or architecture. For the remainder of this description, user input 102 will be described as including a set of components, but may include any combination of components, elements, modules, functions, resources, and / or processes, as will be understood by those skilled in the art. The topology or architecture is designed for at least one specific purpose and / or to perform some function. In one embodiment, user input 102 may include a specific purpose and / or desired function. In one or more embodiments, user input 102 may include dependencies between one or more systems and / or connections between at least two of the components specified in user input 102.
[0018] The dependencies and / or connections of these systems may be used by the infrastructure service 114 to connect the various components within the determined topology together and to determine which possible topologies can connect the components specified as described in user input 102, while verifying whether the topology can provide a particular purpose and / or desired functionality.
[0019] In one or more embodiments, component analyzer 106 is configured to analyze user input 102 and determine an essential or initial set of components specified in user input 102 for inclusion in at least a topology determined by the system. Additional components may be required to perform a particular object and / or desired function and / or to interconnect the set of components in accordance with one or more rules (as specified by rule generator 108). In one embodiment, some components specified in user input 102 may be identified by component analyzer 106 as redundant, unnecessary, harmful, and / or unusable. In one embodiment, component analyzer 106 is configured to exclude any of these identified components from the essential set of components. However, component analyzer 106 ensures that, where possible, any topology generated by topology generator 110 includes all components specified in user input 102.
[0020] Component analyzer 106 may be implemented in hardware, software, or a combination thereof. After generating the essential set of components, component analyzer 106 passes this information to rule generator 108 and topology generator 110.
[0021] In one or more embodiments, rule generator 108 is configured to: receive a set of essential components as determined by component analyzer 106; and generate one or more rules where applicable to ensure that any generated topology operates, minimizes iterations, optimizes data flow, complies with practices and protocols, isolates tenant information, adheres to security and privacy restrictions, connects components in accordance with any interconnections specified in user input 102 (if available), and performs specific objectives and / or desired functions (if specified). Rule generator 108 may be implemented in hardware, software, or a combination thereof. After rules are generated, or in parallel with the operation of topology generator 110, rule generator 108 provides the set of rules to topology generator 110 for use in generating one or more topologies of components 116.
[0022] In one or more embodiments, topology generator 110 is configured to generate at least one topology 116 of components that includes all essential components, connects the components in accordance with any specified interconnections (if available), and performs specific objectives and / or desired functions (if specified). For any given set of conditions, a plurality of possible topologies may be generated. In one or more embodiments, an iterative process may be employed to narrow down possible topologies, optimize connection, component, and resource usage, minimize latency and delay, and arrive at a preferred topology that operates most efficiently. Furthermore, in one or more embodiments, topology generator 110 may utilize at least one machine learning model to generate component topology 116 in a "best fit" manner that complies with the set of rules provided by rule generator 108.
[0023] The topology generator 110 may be implemented in hardware, software, or a combination thereof. After creating the topology 116 of the components, the topology generator 110 passes this information to the system builder 112.
[0024] In one or more embodiments, the system builder 112 is configured to construct a working architecture based on a component topology 116 to be optimized, including data flows 118 between components. The system builder 112 constructs a working architecture by considering and analyzing the positioning and hierarchy of various components within the component topology 116, along with all the necessary interconnections and dependencies of the various components within the component topology 116, in order to achieve a specific purpose and / or desired functionality. In one or more embodiments, the system builder 112 may utilize at least one machine learning model to generate the working architecture and / or data flows 118 between components. Furthermore, an iterative process may be employed to refine the generated component topology 116 and data flows 118 between components that constitute the working architecture over time, further optimizing the product and improving the user experience while maintaining minimal user input to the overall process.
[0025] In one or more embodiments, the topology generator 110 and / or system builder 112 may utilize at least one machine learning model to generate the topology 116 of components and / or the data flows 118 between components in a variety of ways. In embodiments, the machine learning model may be provided by a tenant, user, etc., via an interface component 104 or some other input technique. In one or more embodiments, the topology generator 110 and / or system builder 112 may develop its own machine learning model based on one or more feedback loops, user input, past runs, scoring, training, or a combination thereof.
[0026] Figure 2 shows an exemplary system 200 for generating topology according to one or more embodiments. While the various functions shown in Figure 2 are described as being performed by the “system,” any combination of hardware and software may be used to perform the various functions shown in the figure. In contrast to the more generalized description in Figure 1, Figure 2 provides further details on the individual functions of system 200.
[0027] Referring again to Figure 2, User 202 (such as an administrator, information technology (IT) professional, or IT manager) inputs at least a set of components 206 to be included in the topology determined by the system. The set of components may be partial or incomplete in one or more embodiments. User 202 utilizes an interface 204 for inputting the set of components 206, such as a GUI, website, VPN, microphone, or pointing device. User 202 may attempt to include all components required to complete a particular task, goal, calculation, function, or purpose. However, in some methods, the set of components 206 may be incomplete and / or lack necessary components, and / or include unnecessary, redundant, and / or harmful components. To determine whether all necessary components are present in the set of components 206 and whether there are no superfluous components, the inclusion or exclusion of components in the set of components 206 may be weighted against achieving the desired functionality of the set of components.
[0028] In one or more embodiments, the set of components 206 may include metadata associated with each selected component, or this metadata may be entered individually by the user 202. Each component selected by the user may be associated with metadata describing one or more characteristics of the various components, such as name, function, and elements required for use with the component. In one example, the metadata may describe inputs / outputs. In further examples, the metadata may describe any of the following regarding at least one input / output and / or the entire component: format, protocol, bandwidth, speed, throughput, etc.
[0029] In one example, metadata may include one or more rules that indicate the conditions required or necessary for the implementation of each component. For example, in order to use component w, system 200 must implement security component x, encryption component y, data compression component z, etc. Thus, the rules are not necessarily generated by system 200 or an element of system 200 (e.g., a rule generator), but may be supplemented by or provided entirely by another source, such as metadata associated with the components. In one approach, the rules may be received (or any other property for making a topology determination), and system 200, based on the received rules, determines which additional components are needed based on these properties (and possibly the desired functionality of the set of components, if known).
[0030] In one or more embodiments, the infrastructure service 208 receives a set of components 206 and generates a topology 210 based on the set of components 206. Each component 212 (e.g., component 212a, component 212b, ..., component 212n) within the determined topology 210 is positioned relative to one another within the determined topology 210 and appropriately interconnected to achieve a desired purpose or function. The desired purpose or function may, in one or more embodiments, be provided by the user 202 or derived from the set of components 206. In one or more embodiments, the infrastructure service 208 may derive, calculate, or otherwise determine the desired purpose or function based on past preferences, analysis of possible configurations, analysis of machine learning models, etc.
[0031] The builder 214 analyzes the topology 210 against one or more rules 216 (e.g., rule 216a, rule 216b, ..., rule 216n) to determine whether one or more functions 238 are needed to process results and / or intermediate values, and whether one or more applications 236 are needed to provide desired purposes or functions, and generates at least one topology. The infrastructure service 208 generates rules 216 to ensure that a working architecture is generated for tenants implemented on-premises 234 and / or remotely (e.g., within the cloud 240). The rules 216 may be generated based on the set of components 206, desired purposes or functions, and any specified interconnections and / or dependencies between various components 212.
[0032] Infrastructure service 208 determines which components are deployed on-premises 234 and which components are deployed remotely (e.g., in the cloud 240). Naturally, the deployment, interconnection, and inclusion of some or all of the components 224, 226, object store 228, stream 230, and callers 232 on-premises 234, as well as some or all of the functions 238 and applications 236 running in the cloud 240, may be adjusted and / or modified based on the topology and the changing requirements of user 202 and the desired purpose or function for the data flow 218 to the data pipeline 222. The topology shown in Figure 2 is for illustrative purposes only and is not intended to limit the possible deployment of any of the elements with respect to the determined topology.
[0033] In one exemplary topology, a set of components 224 (e.g., component 224a, component 224b, ..., component 224n) is connected to a data pipeline 222 for data ingestion. The data pipeline 222 receives data from one or more sources (e.g., data 218a, data 218b, ..., data 218n), and this data may be collected and / or aggregated (e.g., aggregate 220) before being delivered to the data pipeline 222. In some embodiments, data 218 may be filtered before or after entering the data pipeline 222 according to one or more rules 216.
[0034] In the illustrated example topology, component 224a provides data to stream 230, which is accessed by caller 232. Stream 230 and caller 232 are exemplary types of components that may be included in a topology, among many other types of components. In this example, component 224a, stream 230, and caller 232 can each receive and send data to and from each other (bidirectional communication). However, in other examples, communication between one or more of these elements may be unidirectional. Furthermore, caller 232 communicates bidirectionally with function 238a in cloud 240, although in some examples, this communication may be unidirectional.
[0035] In this exemplary topology, at on-premises 234, at least one database and / or object store 228 receives data from data pipeline 222 and / or may receive data from one or more of other components 224, 226. Additionally, a set of components 224 (e.g., component 224a, component 224b, ..., component 224n) processes the data from data pipeline 222 and provides the processed data to component 226 (e.g., component 226a, ..., component 226n) and / or stream 230 and caller 232. Component 226 further processes the data at on-premises 234 before providing it to various functions 238 in cloud 240 (e.g., function 238a, function 238b, ..., function 238n).
[0036] For example, component 224b, in addition to providing data to component 226a, directly receives feedback or instructions from function 238b in the cloud 240. However, this feedback may, in one example, be provided to component 226a, or in another example, be passed from component 226a to component 224b. Function 238b then processes the data according to a specific logic or programming and provides the results to application 236. Infrastructure service 208 has determined that the various functions 238 and applications 236 provide an optimized topology for delivering the desired purpose or function, and therefore directs the placement and inclusion of those functions 238 and applications 236 as shown in the exemplary topology.
[0037] On-premises 234, each of the various components 224, 226, object store 228, stream 230, and caller 232 may be placed, positioned, connected, and / or isolated to achieve the desired purpose or function of the topology.
[0038] Within the cloud 240, various functions 238 (e.g., functions 238a, 238b, ..., 238n) may have arbitrary objectives, functions, designs, algorithms, calculations, inputs, outputs, and / or parameters to perform a given task. These functions 238 may return results to any component 224, 226, or object store 228 on-premises 234, and / or to one or more applications 236 or object stores within the cloud 240. In some examples, a set of functions 238 may be employed to generate complex results from one or more data inputs. Furthermore, additional applications 236 may be employed to perform multilevel processing and complex decisions in an exemplary topology.
[0039] As the set of topology components 206, specified interconnections, dependencies, and / or desired purpose or functionality change over time, at least one topology generated by the infrastructure service 208 may also change to reflect the differences in the input conditions of the builder 214 and rule 216. These changes may be implemented in some manner while operating in the cloud 240 and on-premises 234 to account for the changing environment.
[0040] In one example, to isolate components of a larger system, data streaming may be used as an asynchronous message bus operating independently and at its own speed. Data Stream 230 is a component that can be used as an alternative to traditional file scraping techniques, helping to make critical operational data available more quickly through indexing, analysis, and visualization. In another example, Data Stream 230 may capture activity from a website or mobile app, such as page views, searches, or other user actions. This information may be used for real-time monitoring and analysis, or for offline processing and reporting within a data warehousing system. In yet another example, Data Stream 230 may be used as a unified entry point for cloud components to report lifecycle events of cloud components for auditing, accounting, and related activities.
[0041] One specific example of a data stream 230 and its corresponding elements is a series of data transactions generated by clickstream data and grouped together in set 220. Examples of elements within a data stream may include web page requests, updates to a shopping cart associated with a user account, changes to a user profile, purchases, and returns. Other examples of elements within a data stream 230 include changes to streamed sensor data, such as data transmissions associated with changes in steps, altitude changes, location tracking coordinates, temperature, humidity, and manufacturing process conditions. Furthermore, the data stream 230 may also include similar events tracked over consecutive units of time, for example, every 10 milliseconds (ms), every 100 ms, every second, every minute, etc.
[0042] Another example of elements within a data stream 230 (a data stream in a processing pipeline or workflow) is an action, analysis, or process performed on a set of data items. An embodiment of a processing pipeline includes a set of sequentially arranged algorithms that operate on corresponding elements in the set of data items. Yet another example of a data stream 230 may include events, each of which is a vector representation of a data item. For example, an algorithm event in a first data stream may operate on a corresponding data item event in a second data stream, thereby generating a third data stream of vector events, each of which is a representation of a corresponding non-vector data item event in the first data stream.
[0043] Furthermore, some data streams may be accessed and manipulated by other data streams and / or computing applications to convert events in the first data stream from one object type or data type to another. That is, a data stream may be manipulated, analyzed, and / or transformed multiple times in a sequence to produce a desired result data stream. In some examples, this sequence of processes is called a “processing pipeline”. In some examples, the result data stream may contain vector representations of data items or transformed versions of data items (e.g., transformed to alternative data types or data representation structures). In other examples, the result data stream may contain transformed data generated by the operation of one or more applications and / or algorithms (e.g., machine learning, document-to-vector, etc.) on another data stream.
[0044] Examples of associations from which a data stream may be generated include associations that generate events (e.g., data transactions / updates) from common sources, common computing applications, common web pages, common transactions / data types, and / or common entities (e.g., businesses or organizations). The associated transactions may be collectively grouped together to form a data stream 230. In a further example, one or more machine learning applications may process the data stream of associated events, thereby generating analyses, result data streams, and / or forecasts that interpret the data (e.g., through queries or real-time data trend monitoring).
[0045] Caller 232 is a component that can implement client-side communication protocol activities used as communication channels between applications such as enterprise applications, distributed applications, and cloud applications. In one example, caller 232 may be used for client-side Hypertext Transfer Protocol (HTTP) activities to make simple HTTP requests and to invoke REST (representational state transfer) and / or Simple Object Access Protocol (SOAP) web services.
[0046] In another example, caller 232 may be used to hide the details of the call into the application endpoint implementation. In this example, the container hands over the implementation of caller 232 to the JAX-WS runtime, which calls invoke(java.lang.reflect.Method, java.lang.Object...) for the web service invocation. Finally, caller 232 makes the actual invocation of the web service on the endpoint instance. The container then injects the provided WebServiceContext into the endpoint implementation and, if present, takes on the invocation of the javax.annotation.PostConstruct method.
[0047] In one or more embodiments, the infrastructure service 208 may utilize at least one machine learning model to generate data flows between the topology 210 and / or components in various ways. In embodiments, the machine learning model may be provided by tenants, users, etc., via interface 204 or some other input technology. In one or more embodiments, the builder 214 and / or the infrastructure service 208 may develop its own machine learning model based on one or more feedback loops, user input, past runs, scoring, training, or a combination thereof.
[0048] In the following section, titled “Computer Networks and Cloud Networks,” additional embodiments and / or examples related to computer networks are described.
[0049] In one or more embodiments, one or more components of system 100 and / or system 200 may be implemented on one or more digital devices. The term “digital device” generally refers to any hardware device including a processor. A digital device may also refer to a physical device on which an application or virtual machine runs. Examples of digital devices include computers, tablets, laptops, desktops, netbooks, servers, web servers, network policy servers, proxy servers, general machines, function-specific hardware devices, hardware routers, hardware switches, hardware firewalls, hardware network address translators (NATs), hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile handsets, smartphones, personal digital assistants (PDAs), wireless receivers and / or transmitters, base stations, communication management devices, routers, switches, controllers, access points, and / or client devices.
[0050] In one or more embodiments, system 100 and / or system 200 may include a data repository (not shown in Figures 1 and 2). The data repository is any type of storage unit and / or device for storing data (e.g., a file system, a database, a collection of tables, and / or any other storage mechanism). The data repository may include multiple different storage units and / or devices. The multiple different storage units and / or devices may be of the same type or not, and may be located at the same physical site or not. The data repository may be implemented or run on the same computing system as one or more other components shown in Figures 1 and 2, and / or on a separate computing system. The data repository may be communicatively coupled to one or more other components via direct connections or via a network. Information may be implemented via any of the platform components other than the data repository.
[0051] In one or more embodiments, system 100 and / or system 200 may 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. The interface renders user interface elements and receives input through these user interface elements. Examples of interfaces include graphical user interfaces (GUI), command-line interfaces (CLI), haptic interfaces, and voice command interfaces. Examples of user interface elements include checkboxes, radio buttons, drop-down lists, list boxes, buttons, toggles, text fields, date / time selectors, command lines, sliders, pages, and forms. Different components of an interface may be specified in different languages. For example, the behavior of user interface elements may be specified in a dynamic programming language such as JavaScript. The content of user interface elements may be specified in a markup language such as hypertext markup language (HTML) or XML User Interface Language (XUL). The layout of user interface elements may be specified using a stylesheet language such as Cascading Style Sheets (CSS). Alternatively, the interface may be specified in one or more other languages such as Java, Python, C, or C++.
[0052] 3. Machine Learning Models In one or more embodiments, machine learning algorithms may be included in system 100 and / or system 200 for determining at least one topology, interconnection, rule, dependency, and any other relevant features, aspects, and / or characteristics of the architecture generated by the infrastructure service. The machine learning algorithm is an algorithm that can be iterated over 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 dataset and associated labels. The dataset is associated with the input variables of the target model. The associated labels are associated with the output variables of the target model. For example, a label associated with a dataset in the training data may indicate whether that dataset belongs to one of a set of possible data categories. The training data may be updated, for example, based on feedback regarding the accuracy of the current target model. The updated training data may be fed back to the machine learning algorithm, which may then update the target model.
[0053] A machine learning algorithm may generate a target model such that the target model best fits the training data dataset to the labels of the training data. More specifically, the machine learning algorithm may generate a target model such that, when the target model is applied to the training data dataset, the maximum number of results determined by the target model matches the labels of the training data. Different target models are generated based on different machine learning algorithms and / or different sets of training data.
[0054] Machine learning algorithms may include supervised and / or unsupervised components. Various types of algorithms may be used, such as linear regression, logistic regression, linear discriminant analysis, classification and regression trees, Naive Bayes, K-nearest neighbor methods, learning vector quantization, support vector machines, bagging and random forests, boosting, backpropagation, and / or clustering.
[0055] In one embodiment, system 100 may include a training pipeline (not shown in Figure 1) configured to train a machine learning model. Training may occur after the infrastructure service 114 has generated the topology 116 of components and / or the data flows 118 between components. In another embodiment, system 200 may include a training pipeline (not shown in Figure 2) configured to train a machine learning model. Training may occur after the infrastructure service 208 has generated the topology 210 and / or the data flows between components. In a further technique, training may occur before using the machine learning model on production data. Alternatively or additionally, training may occur in progress in a feedback loop that improves the machine learning model based on results obtained using production data.
[0056] In the training pipeline, the scheduler may be configured to trigger the orchestrator to retrieve information about the machine learning model. The orchestrator is configured to enable or “spin up” the enterprise integrator model in the pipeline. The enterprise integrator model is configured to enable or “spin up” jobs (e.g., Kubernetes jobs) to run the training. These jobs run the training against the machine learning model and continue to run until one or more completion criteria are met (e.g., all training data has been processed). The orchestrator may be configured to poll the state of any training jobs.
[0057] In embodiments, a scoring pipeline may be used in conjunction with a 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 a machine learning model may be used; other examples include, but are not limited to, generating one or more predictions, adjusting parameters and / or results based on runs with production data, and / or continuing to train the machine learning model using the output of the machine learning model.
[0058] To perform scoring, the orchestrator may initiate a scoring pipeline (for example, within a corresponding Kubernetes pod). The scoring pipeline may be configured to retrieve data from a source (for example, one or more data platforms outside the secure modular machine learning platform) and store this data in tenant-specific storage (for example, an object store associated with the tenant). The scoring pipeline (for example, code running within a Kubernetes pod) is configured to retrieve data from storage and apply a machine learning model to the data. The scoring pipeline may be configured to store the output of the machine learning model (for example, newly scored data) in object storage and / or send this output to an external data source.
[0059] In embodiments, a secure modular machine learning platform includes one or more components described herein that help isolate tenants and / or users from one another. The secure modular machine learning platform may be configured to run the orchestrator against an existing cluster (e.g., a Kubernetes cluster) separate from the tenant-specific cluster. The tenant-specific cluster may be configured to run only images and / or machine learning models provided by the tenant. The orchestrator may be configured to send instructions through a pipeline to perform their respective functions.
[0060] In some examples (e.g., data science applications), the orchestrator may be configured to utilize an autonomous database for transaction processing (ATP). The orchestrator may be configured to use machine learning models provided by one or more platforms ("out of the box"). Alternatively or additionally, the orchestrator may be configured to use a microservices framework such as Minerva, manufactured by Oracle International Corporation. Alternatively or additionally, the orchestrator may be configured to trigger tenant-specific machine learning models within tenant-specific clusters. Tenant-provided code running within tenant-specific clusters is configured to utilize the respective tenant-specific machine learning models. In embodiments, all communication with tenant-specific clusters (e.g., calls to start a scoring process) originates from the orchestrator's "master" cluster.
[0061] In this embodiment, each tenant's code runs within the tenant's own virtual cloud network (VCN). Each tenant's VCN may be isolated from other VCNs by firewall rules. Each VCN may be configured to receive only incoming data ("intrusions") to the tenant's specific cluster. Alternatively or additionally, each cluster may expose only a limited set of ports. For example, a cluster may expose only port 22 for secure shell (SSH), port 80 for hypertext transfer protocol (HTTP), and port 443 for secure HTTP (HTTPS). The platform does not have to include any mechanism to allow each tenant's VCN to communicate with one another.
[0062] 4. Example of an Embodiment Detailed examples are provided below for clarity. The components and / or operations described below should be understood as one specific example that may not be applicable to certain embodiments. Therefore, the components and / or operations described below should not be construed as limiting the scope of any of the claims.
[0063] Figure 3 shows a system 300 that generates an exemplary topology according to one or more embodiments. One or more operations shown in Figure 3 may be modified, rearranged, or omitted entirely. Therefore, a particular sequence of operations shown in Figure 3 should not be construed as limiting the scope of one or more embodiments. In Figure 3, the operations are described as being performed by system 300, but in one or more embodiments, any hardware, software, or combination thereof may be used to perform the various operations described in Figure 3.
[0064] User 302 inputs a set of components 306 to be included in the topology determined by the system. The set of components 306 may be incomplete in one way and / or may contain irrelevant components in another way. User 302 uses website 304 to input the set of components 306.
[0065] In one or more embodiments, the set of components 306 may include metadata associated with each selected component, or this metadata may be entered individually by the user 302. Each component selected by the user may be associated with metadata describing one or more characteristics of the various components, such as name, function, and elements required for use with the component. In one example, the metadata may describe inputs / outputs. In further examples, the metadata may describe any of the following regarding at least one input / output and / or the entire component: format, protocol, bandwidth, speed, throughput, etc.
[0066] In one example, the metadata may include one or more rules that indicate the conditions required or necessary for the implementation of each component. For example, in order to use component w, system 300 must implement security component x, encryption component y, data compression component z, etc. Therefore, the rules are not necessarily generated by system 300 or an element of system 300 (e.g., a rule generator), but may be supplemented by or provided entirely by another source, such as metadata associated with the components. In one approach, the rules may be received (or any other property for making a topology determination), and system 300, based on the received rules, determines which additional components are needed based on these properties (and possibly the desired functionality of the set of components, if known).
[0067] In one or more embodiments, the infrastructure service 308 receives a set of components 306 and generates one or more topologies 310 based on the set of components 306, each topology containing each of the components 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 Webhook 316. In addition, there is an interconnection from Unity 314 to Maxymiser 312 as indicated by user 302. For simplicity, this example includes only three components, and when developing a complete architecture, more components, complexity, interconnections, and dependencies may be indicated by user 302.
[0068] The Builder 318 component of Infrastructure Service 308 determines at least one topology 310, including the requested components Maxymiser312, Unity314, and Webhook316, along with the interconnection from Unity314 to Maxymiser312. The determination of the various topologies 310 is based on one or more rules 320, which are determined by Infrastructure Service 308 to ensure that data flow between the various components is possible, that inputs match outputs, and that necessary data transformations and modifications between components are performed. After the various topologies have been created, Infrastructure Service 308 selects the best topology to perform a particular function or purpose in order to generate an architecture.
[0069] A topology 310 is determined and selected, and then, according to the selected topology 310, the system is implemented on-premises 340 and / or within the cloud 350. Subsequently, in one method, production data 322 from one or more sources is received and fed into a set 324, from which a data pipeline 326 is generated. As shown in this example, there are three streams 328, 332, and 336 on-premises 340, with streams 328 and 332 receiving data from the data pipeline 326, while stream 336 receives processed data from the caller 334. Each stream 328, 332, and 336 supplies data to their respective callers 330, 334, and 338, which then pass the data to various functions configured within the cloud 350 according to the selected topology 310. As shown in the diagram, caller 330 provides data to Webhook function 344, caller 334 sends and receives data to and from Unity function 346, and caller 338 sends and receives data to and from Maxymiser function 348. Because topology 310 requires interconnection from Unity 314 to Maxymiser 312, Unity function 346 returns data to caller 334, caller 334 passes this data to stream 336 of caller 338, caller 338 passes this data to Maxymiser function 348, thereby providing the necessary interconnection within topology 310.
[0070] Each function within Cloud 350 provides results to Application 342, which uses the results of the various functions to be selected and / or configured by Infrastructure Service 308 to perform a specific function or objective specified for Topology 310.
[0071] Because the set of topology components 306, specified interconnections, dependencies, and / or specific functions or purposes change over time, at least one topology 310 generated by infrastructure service 308 may also change to reflect differences in the input conditions of builder 318 and rule 320. These changes may be implemented in some manner while operating in cloud 350 and on-premises 340 to account for the changing environment. Furthermore, infrastructure service 308 may iteratively modify topology 310 to improve and enhance its functionality, efficiency, resource usage, and other measurable qualities, and / or to generate additional possible topologies in an attempt to improve topology 310.
[0072] Figure 4 shows an exemplary set of operations 400 for generating topology and dataflow according to one or more embodiments. One or more operations shown in Figure 4 may be modified, rearranged, or omitted entirely. Therefore, a particular sequence of operations shown in Figure 4 should not be construed as limiting the scope of one or more embodiments. In Figure 4, the operations are described as being performed by a system, but in one or more embodiments, any hardware, software, or combination thereof may be used to perform the set of operations 400.
[0073] In operation 402, the system receives user input which includes at least a first set of components used to define the component topology. This user input may include interconnections between one or more components, dependencies between one or more components, order or arrangement of components, desired functions, purposes, goals, or outputs of the first set of components, etc. In embodiments, any and / or all of this information may be inferred, identified, and / or determined based on the first set of components, either alone or in addition to other available information (such as past preferences, machine learning models, scoring, past results, requester identity, activities to be performed, etc.). In operations 404–412, the system generates a component topology based on the set of components.
[0074] In one embodiment, the first set of components may be a selection of commercially available products from one or more software / architecture / network vendors. These components may be selected to achieve business or organizational objectives.
[0075] In operation 404, the system identifies one or more characteristics representing a particular component of a first set of components. The characteristics may include any relevant information about the component, such as its name, function, source, number of inputs, number of outputs, names of values and / or parameters associated with the particular component, types of data inputs for the particular component, types of data outputs for the particular component, rules associated with the particular component, requirements associated with the particular component, constraints on the particular component, and other types of components related to the particular component. The components may be any type known in the art, such as streams, object stores, databases, callers, consumers, function blocks, collectors, parsers, and filters.
[0076] In operation 406, the system determines whether additional components (not included in the first set of components) are required to connect the first set of components, for example, to achieve a desired function, purpose, goal, or output. In one embodiment, this determination is based on one or more characteristics associated with each component of the first set of components. In further embodiments, this determination may take into account resources available on-premises and / or in the cloud (which may not be known 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 the components in the first set of components, interconnection constraints and / or rules that affect how the components in the first set of components may be interconnected, and so on.
[0077] Additional components may be of the same type as those specified in the first set of components, or of different types. Furthermore, additional components may be selected to ensure that all components within the first set of components can function together, communicate properly, share data, protect data and privacy, and achieve the desired functionality, purpose, goals, or output after being implemented in the architecture on-premises and / or in the cloud.
[0078] In response to the system determining that an additional component is needed, in operation 408, the system selects an additional component to be included in a second topology of components. The selection of the second component may be based on any relevant information available to the system, which in one embodiment includes (a) one or more characteristics associated with each component of the first set of components, and (b) one or more characteristics of the additional component. The characteristics of the additional component may be compared to the necessity, deficiencies, problems, and / or inefficiencies in the first set of components when attempting to design a topology that can achieve a desired function, purpose, goal, or output.
[0079] According to one or more embodiments, the system selects an implementation environment for additional components and / or a first set of components. The implementation environment may 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 required or acceptable arrangement or order of the components, and the desired functionality, purpose, goal, or output. Any available environment may be specified, such as an on-premises environment, an off-premises environment, a split-installation environment, a remote computing environment, and / or a cloud environment. In one embodiment, the component topology may be distributed across different environments.
[0080] In one or more embodiments, the system selects an additional component in response to determining that the additional component is associated with a first type of data input that matches a first type of data output corresponding to a first component of a first set of components. In other words, the output of one component may be used to select a second component to add to the topology based on the input of the second component that matches the output of the first component. In this technique, the additional component is positioned to receive data from the first component in the topology.
[0081] Various types of data inputs and outputs are possible for use with various components, and may be based on any possible distinctions such as data protocol, data format, data size, data transmission rate, type of physical connection, and hardware or software-based implementation of the component.
[0082] In a further embodiment, the system may select an additional component in response to determining that no component in the first set of components is associated with any data input type that matches a first data output type corresponding to a first component in the first set of components. In other words, the system may determine that there are insufficient data input types in the first set of components to receive data from a particular data output type of the first component. Therefore, the system selects a component configured to receive the data output type of the first component as input. The system then connects the output of the first component to the input of the additional component.
[0083] In one or more embodiments, the system selects an additional component in response to determining that the additional component is associated with a first type of data output that matches a first type of data input corresponding to a first component of a first set of components. In other words, the input of one component may be used to select a second component to add to the topology based on the output of a second component that matches the input of a first component. In this technique, the additional component is positioned to provide data to the first component in the topology.
[0084] In a further embodiment, the system may 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 a first data input type corresponding to a first component in the first set of components. In other words, the system may determine that there are insufficient data output types in the first set of components to provide data for a particular data input type of the first component. Therefore, the system selects a component that is configured to provide data as an output corresponding to the data input type of the first component. The system then connects the input of the first component to the output of the additional component.
[0085] According to one or more embodiments, the system selects additional components based on the type of data input of the data being sent to the component topology. In other words, the data in the data pipeline is considered when selecting additional components to add to the component topology, and may include applications, functions, or any other type of component.
[0086] In one embodiment, the system may generate a second topology of a component by modifying the previous topology of the component, thereby creating a second topology of the component that improves upon the previous topology in some way that it can actually perform a desired function, purpose, goal, or output, such as operating faster, operating more efficiently, operating less expensively, operating with fewer components, or operating with more reliable components.
[0087] In a further embodiment, the second topology of the component may be generated by the system at runtime while the component in the previous topology is running without interrupting the functionality of the previous topology while the second topology of the component is being generated, until the system finishes execution and transitions to the second topology of the component.
[0088] In operation 410, the system determines, based on the selection of the second component, (a) a second topology of components including the first set of components and additional components, and (b) data flows between components in the second topology of components. The data flows between components may be based on the order, arrangement, interconnections, and / or dependencies between at least some of the components in order to achieve the desired function, purpose, goal, or output of the second topology of components.
[0089] In response to the system determining that no additional components are required (for example, to achieve a desired function, purpose, goal, or output), the system, in operation 412, determines (a) a first topology of components comprising a first set of components, and (b) data flows between components within the first topology of components. The data flows between components may be based on the order, arrangement, interconnections, and / or dependencies between at least some of the components in order to achieve the desired function, purpose, goal, or output of the first topology of components.
[0090] In one embodiment, before selecting additional components, the system may determine that a first set of components is insufficient to complete any topology of components that can work together, to perform the required tasks or functions, and / or to achieve the desired functions, purposes, goals, or outputs. This determination may be based on the failure to meet certain criteria, such as the maximum total execution time, the maximum or minimum number of cycles, the inability of all components in the first set of components to communicate with each other within any topology, or the execution cost exceeding a threshold. After this determination has been made, the system may determine whether removing components, adding components, and / or replacing components increases the likelihood that the desired functions, purposes, goals, or outputs of the new topology are achievable, and whether all criteria for the execution of the component topology are met. The system may iteratively make these determinations until a topology that can be executed as needed is selected.
[0091] Furthermore, after a topology has been implemented, the system may monitor the performance of the implemented topology and determine whether a better topology is available to perform a desired function, purpose, goal, or output. For example, the system may determine a topology that can actually perform the desired function, purpose, goal, or output more quickly, more efficiently, less cheaply, with fewer components, or with more reliable components. If a better topology is determined, the system may modify the implementation to match the improved topology in order to improve the performance of the implemented solution in operation. Machine learning algorithms and / or models may be used to assist in making these decisions and / or to suggest additional topologies and data flows between components within those additional topologies, as described herein in one or more embodiments.
[0092] In another embodiment, the system may receive an updated set, a modified set, and / or an additional set of components for topology creation. In the case of an updated set of components, the system may modify the existing topology to take into account the changes made to the previously received set of components, and may work in an iterative manner to converge on the best-fit topology to achieve the desired functionality, purpose, goal, or output. In the case of a new set of components, the system may perform operation 400 again to provide a new topology that meets all the requirements of the user and available installation environments.
[0093] In one or more embodiments, the system receives a second user input specifying and / or including a first set of components and / or a function of the component topology. This function represents the overall purpose of the topology, e.g., its overall function. In these embodiments, the system may select any necessary additional components in response to determining that additional components are needed to implement the function of the component topology.
[0094] In one embodiment, the system may optimize the topology by determining which components can receive output from a specified component in a first set of components. For example, if the set of components includes a webhook, a component configured to receive all output from the webhook may be selected as an additional component, even if this causes redundancy and / or unavailability of other components in the set of components. In this case, the redundant / unused component is simply removed from the topology, resulting in a more optimized topology of components for the implementation. In another example, suppose Oracle International Corporation Unity is selected as a component, and a specific component in the first set of components that can receive one of the outputs from Unity is also specified, the selected additional component may be a duplicate of this specific component to receive other outputs from Unity.
[0095] In one or more embodiments, the system may receive a second user input containing an updated set of components. In response to this second user input, the system determines which components have been removed or added from a first set of components 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 topology. The selection and choice of adding or removing components are based on (a) one or more characteristics associated with each first component, (b) one or more characteristics 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, when the system devises a new topology for arranging the updated set of components, it can optimize the topology based on the characteristics of the added / removed / remaining components in the updated set of components, while also taking into account all changes made to the first set of components. In one approach, the system uses this information to determine (a) a third topology of the components (based on a first set of components, additional components, one or more first components, and one or more second components), and (b) the data flow between components within the third topology of the components.
[0096] 5. Computer networks and cloud networks In one or more embodiments, a computer network provides connectivity between sets of nodes. The nodes may be local and / or remote to each other. The nodes are connected by a set of links. Examples of links include coaxial cables, unshielded twisted cables, copper cables, optical fibers, and virtual links.
[0097] A subset of nodes implements computer networks. Examples of such nodes include switches, routers, firewalls, and network address translation (NAT). Another subset of nodes uses computer networks. Such nodes (also called "hosts") may run client processes and / or server processes. Client processes make requests regarding computing services (such as running a particular application and / or storing a particular amount of data). Server processes respond by performing the requested services and / or returning the corresponding data.
[0098] A computer network may be a physical network that includes physical nodes connected by physical links. A physical node is any digital device. A physical node may also be a function-specific hardware device, such as a hardware switch, hardware router, hardware firewall, and hardware NAT. Additionally or alternatively, a physical node may be a general-purpose machine configured to run various virtual machines and / or applications that perform their respective functions. A physical link is a physical medium that connects two or more physical nodes. Examples of links include coaxial cables, unshielded twisted cables, copper cables, and optical fibers.
[0099] A computer network may be an overlay network. An overlay network is a logical network implemented on top of another network (such as a physical network). Each node in the overlay network corresponds to each node in the underlying network. Thus, each node in the overlay network is associated with both an overlay address (for addressing the overlay node) and an underlay address (for addressing the underlay node that implements the overlay node). Overlay nodes may be digital devices and / or software processes (such as virtual machines, application instances, or threads). Links connecting overlay nodes are implemented as tunnels through the underlying network. Overlay nodes at both ends of the tunnel treat the underlying multi-hop path between them as a single logical link. Tunnels are implemented through encapsulation and decapsulation.
[0100] In the embodiment, the client may reside locally and / or remotely from the computer network. The client may access the computer network via a private network or other computer network such as the Internet. The client may transmit requests to the computer network using a communication protocol such as the Hypertext Transfer Protocol (HTTP). Requests are transmitted via an interface such as a client interface (such as a web browser), a program interface, or an application programming interface (API).
[0101] In this embodiment, the computer network provides connectivity between clients and network resources. Network resources include hardware and / or software configured to run server processes. Examples of network resources include processors, data storage, virtual machines, containers, and / or software applications. Network resources are shared among multiple clients. Clients independently request computing services from the computer network. Network resources are dynamically allocated to requests and / or clients as needed. The network resources allocated to each request and / or client may be scaled up or down based, for example, (a) computing services requested by a particular client, (b) aggregated computing services requested by a particular tenant, and / or (c) aggregated computing services requested by the computer network. Such a computer network may be referred to as a “cloud network”.
[0102] In this embodiment, a service provider provides a cloud network to one or more end users. The cloud network may implement various service models, including but not limited to Software-as-a-Service (SaaS), Platform-as-a-Service (PaaS), and Infrastructure-as-a-Service (IaaS). In SaaS, the service provider provides end users with the ability to use the service provider's applications running on network resources. In PaaS, the service provider provides end users with the ability to deploy custom applications to network resources. Custom applications may be written using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider provides end users with the ability to provision processing, storage, networking, and other basic computing resources provided by the network resources. Any application, including an operating system, may be deployed to the network resources.
[0103] In embodiments, the computer network may implement various deployment models, including but not limited to private clouds, public clouds, and hybrid clouds. In a private cloud, network resources are provisioned for exclusive use by a specific group of one or more entities (wherein used herein, the term “entity” means a company, organization, person, or other entity). The network resources may reside locally on the premises of the specific group of entities and / or remotely from the premises. In a public cloud, cloud resources are provisioned for multiple entities that are independent of each other (also called “tenants” or “customers”). The computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network may be called a “multitenant computer network”. Multiple tenants may use the same specific network resources at different times and / or simultaneously. The network resources may reside locally on the tenant’s premises and / or remotely from the premises. In a hybrid cloud, the computer network includes both private and public clouds. Interfaces between the private and public clouds enable data and application portability. Data stored in a private cloud and data stored in a public cloud may be exchanged via an interface. Applications implemented in a private cloud and applications implemented in a public cloud may have dependencies on each other. Calls from an application in the private cloud to an application in the public cloud (and vice versa) may be made via an interface.
[0104] In this embodiment, tenants in a multi-tenant computer network are independent of each other. For example, the business or operations of one tenant may be isolated from the business or operations of another tenant. Different tenants may have different network requirements for the computer network. Examples of network requirements include processing speed, data storage volume, security requirements, performance requirements, throughput requirements, latency requirements, resilience requirements, quality of service (QoS) requirements, tenant isolation, and / or consistency. The same computer network may need to implement different network requirements requested by different tenants.
[0105] In one or more embodiments, tenant isolation is implemented within a multi-tenant computer network to ensure that applications and / or data from different tenants are not shared with each other. Various tenant isolation techniques may be used.
[0106] In this embodiment, each tenant is associated with a tenant ID. Each network resource in a multi-tenant computer network is tagged using the tenant ID. A tenant is only permitted access to a particular network resource if the tenant and the specific network resource are associated with the same tenant ID.
[0107] In this embodiment, each tenant is associated with a tenant ID. Each application implemented by the computer network is tagged using the tenant ID. Additionally or alternatively, each data structure and / or dataset stored by the computer network is tagged using the tenant ID. A tenant is granted access to a particular application, data structure, and / or dataset only if the tenant and that particular application, data structure, and / or dataset are associated with the same tenant ID.
[0108] For example, each database implemented by a multi-tenant computer network may be tagged using a tenant ID. Only tenants associated with the corresponding tenant ID can access the data in a particular database. As another example, each entry in a database implemented by a multi-tenant computer network may be tagged using a tenant ID. Only tenants associated with the corresponding tenant ID can access the data in a particular entry. However, the database may be shared by multiple tenants.
[0109] In this embodiment, the subscription list indicates which tenants have permission to access which applications. For each application, a list of tenant IDs of tenants permitted to access the application is stored. A tenant is permitted to access a particular application only if their tenant ID is included in the subscription list corresponding to that application.
[0110] In this embodiment, network resources corresponding to different tenants (such as digital devices, virtual machines, application instances, and threads) are isolated into tenant-specific overlay networks maintained by a multi-tenant computer network. For example, packets from any source device within a tenant overlay network may only be sent to other devices within the same tenant overlay network. Encapsulation tunnels are used to prevent all transmissions from a source device on one tenant overlay network to devices in other tenant overlay networks. Specifically, packets received from the source device are encapsulated within an outer packet. The outer packet is sent from a first encapsulation tunnel endpoint (communicating with the source device in the tenant overlay network) to a second encapsulation tunnel endpoint (communicating with the destination device in the tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer packet to retrieve the original packet sent by the source device. The original packet is then sent from the second encapsulation tunnel endpoint to the destination device within the same specific overlay network.
[0111] 6. Hardware Overview According to one embodiment, the technology described herein is implemented by one or more dedicated computing devices. The dedicated computing device may include one or more digital electronic devices such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or network processing units (NPUs) that are wired or persistently programmed to perform the technology, or it may include one or more general-purpose hardware processors programmed to perform the technology according to program instructions contained in firmware, memory, other storage, or a combination thereof. Such a dedicated computing device may implement the technology by combining custom wiring logic, ASICs, FPGAs, or NPUs with custom programming. The dedicated computing device may be a desktop computer system, a portable computer system, a handheld device, a network device, or any other device that incorporates wiring logic and / or program logic to implement the technology.
[0112] For example, Figure 5 is a block diagram showing a computer system 500 in which an embodiment of the present invention may be implemented. The computer system 500 includes a bus 502 or other communication mechanism for transmitting information, and a hardware processor 504 coupled to the bus 502 for processing information. The hardware processor 504 may be, for example, a general-purpose microprocessor.
[0113] The computer system 500 also includes main memory 506, such as random access memory (RAM) or other dynamic storage device, coupled to bus 502 for storing information and instructions executed by processor 504. Main memory 506 may also be used to store temporary variables or other intermediate information during the execution of instructions by processor 504. When such instructions are stored in a non-temporary storage medium accessible by processor 504, it makes the computer system 500 a dedicated machine customized to perform the operations specified by the instructions.
[0114] The computer system 500 further 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 for storing information and instructions and is coupled to the bus 502.
[0115] The computer system 500 may be coupled via a bus 502 to a display 512, such as a cathode ray tube (CRT), to display information to the computer user. An input device 514, including alphanumeric keys or other keys, is coupled to the bus 502 to transmit information and command selections to the processor 504. Another type of user input device is a cursor control 516, such as a mouse, trackball, or cursor directional keys, to transmit directional information and command selections to the processor 504 and to control the movement of a cursor on the display 512. This input device typically has two degrees of freedom, on two axes, a first axis (e.g., x) and a second axis (e.g., y), allowing the device to specify a position in a plane.
[0116] The computer system 500 may implement the techniques described herein using customized wiring logic, one or more ASICs or FPGAs, firmware, and / or programmed logic that, in combination with the computer system, cause or program the computer system 500 to become a dedicated machine. According to one embodiment, the techniques described herein are executed by the computer system 500 in response to the processor 504 executing one or more sequences of one or more instructions contained in the main memory 506. Such instructions may be read into the main memory 506 from another storage medium, such as a storage device 510. The execution of the sequence of instructions contained in the main memory 506 causes the processor 504 to execute the process steps described herein. In alternative embodiments, wired circuits may be used instead of, or in combination with, software instructions.
[0117] The term “storage medium” as used herein refers to any non-temporary medium that stores data and / or instructions that cause a machine to operate in a particular way. Such storage mediums may include non-volatile and / or volatile media. Examples of non-volatile media include optical or magnetic disks, such as storage device 510. Examples of volatile media include dynamic memory, such as main memory 506. Examples of common forms of storage media include floppy disks, flexible disks, hard disks, solid-state drives, magnetic tapes, or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media having a pattern of holes, RAM, PROMs, and EPROMs, flash EPROMs, NVRAMs, any other memory chips or memory cartridges, associative memory (CAM: content-addressable memory), and ternary associative memory (TCAM: ternary content-addressable memory).
[0118] The storage medium is different from the transmitting medium, but may be used together with the transmitting medium. The transmitting medium participates in transferring information between the storage mediums. Examples of transmitting mediums include coaxial cables, copper wires, and optical fibers, such as wires including bus 502. The transmitting medium may also take the form of sound waves or light waves, as generated during radio data communications and infrared data communications.
[0119] Various forms of media may be involved in transporting one or more sequences of one or more instructions to the processor 504 for execution. For example, the instructions may first be transported to a magnetic disk or semiconductor drive of a remote computer. The remote computer may load the instructions into dynamic memory and transmit them over a telephone line using a modem. A modem local to computer system 500 may receive the data over the telephone line and convert the data into an infrared signal using an infrared transmitter. An infrared detector may receive the data transported by the infrared signal, and appropriate circuitry may place this data on bus 502. Bus 502 transports the data to main memory 506, and the processor 504 retrieves the instructions from main memory 506 and executes them. Instructions received by main memory 506 may optionally be stored in a storage device 510 either before or after execution by the processor 504.
[0120] The computer system 500 also includes a communication interface 518 coupled to bus 502. The communication interface 518 provides bidirectional data communication coupled to a network link 520 connected to a local network 522. For example, the communication interface 518 may be an integrated services digital network (ISDN) card, a cable modem, a satellite modem, or a modem for providing data communication connectivity with a corresponding type of telephone line. As another example, the communication interface 518 may be a local area network (LAN) card for providing data communication connectivity with a compatible LAN. A wireless link may also be implemented. In any such implementation, the communication interface 518 transmits and receives electrical, electromagnetic, or optical signals carrying digital data streams representing various types of information.
[0121] Network link 520 typically provides data communication to other data devices via one or more networks. For example, network link 520 may provide connection to a host computer 524 via a local network 522, or to data equipment operated by an Internet Service Provider (ISP) 526. The ISP 526 then provides data communication services via a global packet data communication network now commonly referred to as the “Internet” 528. Both the local network 522 and the Internet 528 use electrical, electromagnetic, or optical signals to carry digital data streams. Signals carrying digital data to and from the computer system 500, and signals on network link 520 via the communication interface 518, are exemplary forms of transmission media.
[0122] The computer system 500 can send messages and receive data, including program code, via the network, network link 520, and communication interface 518. In the internet example, server 530 may send the requested code of an application program via the internet 528, ISP 526, local network 522, and communication interface 518.
[0123] The received code may be executed by the processor 504 when it is received, and / or stored in the storage device 510 or other non-volatile storage for later execution.
[0124] 7. Other extensions Each embodiment relates to a system comprising one or more devices, including a hardware processor, which are described herein and / or configured to perform any of the operations listed in any of the following claims.
[0125] In the embodiments, the non-temporary computer-readable storage medium includes instructions, which, when executed by one or more hardware processors, cause the execution of any of the operations described herein and / or listed in any of the claims.
[0126] Any combination of the features and functions described herein may be used according to one or more embodiments. In the foregoing specification, each embodiment was described with reference to a number of specific details that may vary from implementation to implementation. Therefore, this specification and the drawings should be considered to be illustrative, not restrictive. The sole exclusive indicator of the scope of the invention, and what is intended to be the scope of the invention by this application, is the literal equivalent scope of the set of claims arising from this application in the particular form in which the claims arise, including any subsequent amendments.
Claims
1. A computer-readable program including instructions, wherein the instructions, when executed by at least one hardware processor, cause an operation to be performed, It receives user input that identifies a first set of components selected by the user, which is used to define the topology of the components, This includes generating the topology of the component by at least the following steps: The following steps include identifying one or more characteristics for each specific component of the first set of components selected by the user: The one or more of the above characteristics are, The rules associated with the aforementioned specific component, Requirements associated with the aforementioned specific component, The type of data input corresponding to the aforementioned specific component, and Selected from a group including types of data output corresponding to the aforementioned specific component, The following steps described above are: Based on the one or more characteristics associated with at least one component of the first set of components selected by the user, it is determined that additional components not included in the first set of components selected by the user are required to implement a specific data flow corresponding to the topology of the component, The system selects the additional components to be included in the topology of the components based on (a) one or more characteristics associated with at least one component of the first set of components selected by the user, and (b) one or more characteristics of the additional components. A computer-readable program comprising the system determining (a) the topology of the components, including the first set of components selected by the user and additional components selected by the system, and (b) the specific data flow corresponding to the topology of the components.
2. The computer-readable program according to claim 1, wherein, before the system selects any additional components selected by the system, the operation further comprises determining that the first set of components selected by the user is insufficient to complete any topology of components.
3. The computer-readable program according to claim 1 or 2, wherein the operation further includes the system selecting an implementation environment for additional components selected by the system, the implementation environment including one of an on-premises environment, an off-premises environment, and / or a cloud environment.
4. The computer-readable program according to claim 1 or 2, wherein the operation further comprises selecting additional components selected by the system in response to the system determining that the additional components selected by the system are associated with a first type of data input that matches a first type of data output corresponding to a first component of the first set of components selected by the user.
5. The computer-readable program according to claim 4, further comprising selecting additional components selected by the system in response to further determining that none of the components of the first set of components selected by the user are associated with any type of data input that matches the type of first data output corresponding to the type of first data output corresponding to the first component of the first set of components selected by the user.
6. The computer-readable program according to claim 1 or 2, wherein the operation further comprises selecting additional components selected by the system in response to the system determining that the additional components selected by the system are associated with a first type of data output that matches a first type of data input corresponding to a first component of the first set of components selected by the user.
7. The computer-readable program according to claim 6, further comprising selecting additional components selected by the system in response to further determining that none of the components of the first set of components selected by the user are associated with any type of data output that matches the type of first data input corresponding to the type of first data input of the first set of components selected by the user.
8. The computer-readable program according to claim 1 or 2, wherein the operation further includes receiving a second user input including the functionality of the topology of the component, and an additional component selected by the system is selected in response to the system determining that an additional component selected by the system is required to implement the functionality of the topology of the component.
9. The computer-readable program according to claim 1 or 2, wherein additional components selected by the system are further selected based on the type of data input of the data transmitted to the components.
10. The computer-readable program according to claim 1 or 2, wherein generating the topology of the component includes modifying the previous topology of the component to generate the topology of the component.
11. The computer-readable program according to claim 10, wherein the topology of the component is generated at runtime while the previous topology of the component is being executed without interruption while the topology of the component is being generated.
12. The aforementioned operation is, Receiving a second user input that includes an updated set of components, The system determines which components have been removed or added from the first set of components selected by the user in order to form an updated set of components. The system selects one or more first components to add to the topology and one or more second components to remove from the topology based on (a) one or more characteristics associated with each first component, (b) one or more characteristics associated with each second component, and (c) one or more characteristics of the components removed from or added to the first set of components selected by the user. A computer-readable program according to claim 1 or 2, further comprising the system determining (a) a first set of components selected by the user, additional components selected by the system, a third topology of components based on the one or more first components and the one or more second components, and (b) data flow between components in the third topology of components.
13. At least one hardware processor, A system comprising a computer-readable medium containing instructions, wherein the instructions are The operation is performed by the at least one hardware processor, and the operation is, It receives user input that identifies a first set of components selected by the user, which is used to define the topology of the components, This includes generating the topology of the component by at least the following steps: The following steps include identifying one or more characteristics for each specific component of the first set of components selected by the user: The one or more of the above characteristics are, The rules associated with the aforementioned specific component, Requirements associated with the aforementioned specific component, The type of data input corresponding to the aforementioned specific component, and Selected from a group including types of data output corresponding to the aforementioned specific component, The following steps described above are: Based on the one or more characteristics associated with at least one component of the first set of components selected by the user, it is determined that additional components not included in the first set of components selected by the user are required to implement a specific data flow corresponding to the topology of the component, (a) selecting the additional components to be included in the topology of the components based on one or more characteristics associated with at least one component of the first set of components selected by the user, and (b) selecting the additional components to be included in the topology of the components, A system comprising (a) determining the topology of the components, including the first set of components selected by the user and the additional components, and (b) determining the specific data flow of the components.
14. The system according to claim 13, wherein, before selecting the additional components, the operation further comprises determining that the first set of components selected by the user is insufficient to complete any topology of components.
15. The system according to claim 13 or 14, wherein the operation further includes the system selecting an implementation environment for the additional component, the implementation environment including one of an on-premises environment, an off-premises environment, and / or a cloud environment.
16. The system according to claim 13 or 14, wherein the operation further includes receiving a second user input including the functionality of the topology of the component, and the additional component is selected in response to determining that the additional component is necessary to implement the functionality of the topology of the component.
17. It is a method, It receives user input that identifies a first set of components selected by the user, which is used to define the topology of the components, This includes generating the topology of the component by at least the following steps: The following steps include identifying one or more characteristics for each specific component of the first set of components selected by the user: The one or more of the above characteristics are, The rules associated with the aforementioned specific component, Requirements associated with the aforementioned specific component, The type of data input corresponding to the aforementioned specific component, and Selected from a group including types of data output corresponding to the aforementioned specific component, The following steps described above are: Based on the one or more characteristics associated with at least one component of the first set of components selected by the user, it is determined that additional components not included in the first set of components selected by the user are required to implement a specific data flow corresponding to the topology of the component, (a) selecting the additional components to be included in the topology of the components based on one or more characteristics associated with at least one component of the first set of components selected by the user, and (b) selecting the additional components to be included in the topology of the components, (a) the topology of the components, including the first set of components selected by the user and the additional components, and (b) determining the specific data flow corresponding to the topology of the components, The method described above is performed by a system including at least one hardware processor.
18. The method of claim 17, further comprising determining, before selecting the additional components, that the first set of components selected by the user is insufficient to complete any topology of components.
19. The method according to claim 17 or 18, further comprising the system selecting an implementation environment for the additional components, wherein the implementation environment includes one of an on-premises environment, an off-premises environment, and / or a cloud environment.
20. The method according to claim 17 or 18, further comprising receiving a second user input including the functionality of the topology of the component, wherein the additional component is selected in response to determining that the additional component is necessary to implement the functionality of the topology of the component.
Citation Information
Patent Citations
Security management support system, security management support method, and program
JP2004342072A
Automatic program generation device, method and computer program
JP2012221380A
Method and system for balancing cross-domain broadcast network load of blockchain, computer device, and readable storage medium
WO2021032153A1
Techniques for detecting drift in a deployment orchestrator
WO2021150306A1
Systems and methods for implementing trans-cloud application templates
WO2022061022A1