SYSTEMS AND METHODS FOR AUTOMATED DEPLOYMENT OF CLOUD ASSETS

In one aspect, a cloud architecture comprises one or more servers that are configured to implement a user computing environment, at least one object storage configured to store a plurality of assets that are deployable in the user computing environment, and an assembly service. The assembly service is configured to receive a query for at least one asset of the plurality of assets, return information associated with the at least one asset responsive to the query, and receive a deployment blueprint that defines a deployment of the at least one asset in the user computing environment and at least one executable script for deploying the at least one asset, where the deployment blueprint is defined based on the information provided and includes a link to the at least one executable script. The assembly service is further configured to store the deployment blueprint in the at least one object storage.

BACKGROUND

The field of the disclosure relates to deployment of cloud services, and in particular, to cloud services and cloud infrastructure that manages the deployment of assets to the cloud for use by users or customers.

Cloud service providers can provide pre-verified cloud assets that may be deployed by a cloud customer or user in their customer tenancy. For example, the cloud service provider may recognize that a number of its customers have similar deployment requirements regarding specific functions and features that are implemented in the customer's tenancy, and the cloud service provider may desire to standardize those assets such that their customers may deploy such assets in their own tenancy with minimal effort. In such a scenario, a customer may utilize various cloud asset discovery tools to locate one or more assets and deploy the one or more asset in their own tenancy, thereby removing the requirement that the customer design, test, and deploy a custom solution in order to solve a specific problem. However, the cloud service provider, prior to making assets available for use by a customer, is tasked with ensuring that the assets are deployable across a variety of different customer tenancy configurations at a high success rate. If not properly tested, customers will either not deploy and use the assets, or will attempt to deploy and use the assets with little to no success. Either of these options is unacceptable for the cloud service provider.

Thus, it would be desirable to improve on the testing, qualification, and pre-deployment process for new assets in a cloud environment prior to making those assets available to a customer for their use.

BRIEF DESCRIPTION

In one aspect, a cloud architecture is provided. The cloud architecture comprises one or more servers that are configured to implement a user computing environment, at least one object storage configured to store a plurality of assets that are deployable in the user computing environment, and an assembly service. The assembly service is configured to receive a query for at least one asset of the plurality of assets, return information associated with the at least one asset responsive to the query, and receive a deployment blueprint that defines a deployment of the at least one asset in the user computing environment and at least one executable script for deploying the at least one asset, where the deployment blueprint is defined based on the information provided and includes a link to the at least one executable script. The assembly service is further configured to store the deployment blueprint in the at least one object storage.

In another aspect, a computer-implemented method is provided. The computer-implemented method comprises implementing, by one or more servers of a cloud architecture, an assembly service, a user computing environment, and at least one object storage configured to store a plurality of assets that are deployable in the user computing environment. The method further comprises receiving, by the assembly service, a query for at least one asset of the plurality of assets, and returning, by the assembly service, information for that at least one asset responsive to the query. The method further comprises receiving, by the assembly service, a deployment blueprint that defines a deployment of the at least one asset in the user computing environment and at least one executable script for deploying the at least one asset, where the deployment blueprint is defined based on the information provided and includes a link to the at least one executable script. The method further comprises storing, by the assembly service, the deployment blueprint in the at least one object storage.

In another aspect, a non-transitory computer-readable medium is provided. The non-transitory computer-readable medium embodies programmed instructions which, when executed by at least one processor of a cloud architecture, direct the at least one processor to implement a user computing environment and at least one object storage configured to store a plurality of assets that are deployable in the user computing environment, receive a query for at least one asset of the plurality of assets, and return information for the at least one asset. The programmed instructions, when executed by the at least one processor of the cloud architecture, further direct the at least one processor to receive a deployment blueprint that defines a deployment of the at least one asset in the user computing environment and at least one executable script for deploying the at least one asset, where the deployment blueprint is defined based on the information provided and includes a link to the at least one executable script, and to store the deployment blueprint in the at least one object storage.

DETAILED DESCRIPTION

As used herein, the terms “processor” and “computer,” and related terms, e.g., “processing device,” “computing device,” and “controller” are not limited to just those integrated circuits referred to in the art as a computer, but broadly refers to a microcontroller, a microcomputer, an analog computer, a programmable logic controller (PLC), an application specific integrated circuit (ASIC), and other programmable circuits, and these terms are used interchangeably herein. In the embodiments described herein, “memory” may include, but is not limited to, a computer-readable medium, such as a random-access memory (RAM), a computer-readable non-volatile medium, such as a flash memory. Alternatively, a floppy disk, a compact disc-read only memory (CD-ROM), a magneto-optical disk (MOD), and/or a digital versatile disc (DVD) may also be used. Also, in the embodiments described herein, additional input channels may be, but are not limited to, computer peripherals associated with an operator interface such as a touchscreen, a mouse, and a keyboard. Alternatively, other computer peripherals may also be used that may include, for example, but not be limited to, a scanner. Furthermore, in the example embodiment, additional output channels may include, but not be limited to, an operator interface monitor or heads-up display. Some embodiments involve the use of one or more electronic or computing devices. Such devices typically include a processor, processing device, or controller, such as a general-purpose central processing unit (CPU), a graphics processing unit (GPU), a microcontroller, a reduced instruction set computer (RISC) processor, an ASIC, a programmable logic controller (PLC), a field programmable gate array (FPGA), a digital signal processing (DSP) device, and/or any other circuit or processing device capable of executing the functions described herein. The methods described herein may be encoded as executable instructions embodied in a computer readable medium, including, without limitation, a storage device and/or a memory device. Such instructions, when executed by a processing device, cause the processing device to perform at least a portion of the methods described herein. The above examples are not intended to limit in any way the definition and/or meaning of the term processor and processing device.

FIG.1is an overview of a process flow100that may be implemented by a cloud service provider in an exemplary embodiment of the present disclosure. Process flow100may, for example, be used to implement the various functions and features of asset creation, registration, assembly, and deployment as described below.

In this embodiment, the four pillars of process flow100include a common schema102, a search103, an assemble104, and an automation105. Common schema102includes a common structure that is used to define assets, which are then registered in common schema102in a data catalog. Search103implements a text search for a user, and collates the appropriate assets found in the data catalog for presentation to a user. Assemble104is used to assemble the assets selected by the user into a solution, and automation105utilizes the deployable asset solution to automatically deploy assets to the customer's tenancy at the cloud service provider. Assets may refer to any digital entity such as documents, text, image, media, programs, software images produced, maintained, or managed by an organization.

As discussed previously, a cloud service provider may utilize one or more deployment components, which are part of automation105, in order to manage the deployment of assets to a customer tenancy (which may also be referred to as a user computing environment). Automation105should ensure that the success rate of a deployment is very high (e.g., more than 99%). This requires that any deployment which the user can perform needs to be certified and tested in a staging area before the asset is released to the production environment (e.g., before an asset is registered in the data catalog and searchable by a user).

In some of the embodiments described herein, a deployment blueprint model is described that ensures the successful deployment of new assets to customer tenancies. The blueprint model may define, for example, one or more assets, parameters associated with the one or more assets that define how the one or more assets are deployed in a customer's tenancy, and dependencies. The dependencies may include, for example, the order in which the one or more assets are deployed (e.g., a first asset is deployed prior to a second asset, etc.).

In some embodiments, the deployment blueprint model utilizes terraform scripts. For example, terraform scripts may be stored in object storage (e.g., as a zip file) and a uniform resource locator (URL) may be used to reference the terraform scripts when deploying the one or more assets defined by the deployment blueprint model to the customer's tenancy.

In some embodiments, a new user role called asset deployment assembler is implemented, and the role designs, deploys, and tests the deployment of assets via the deployment blueprint model prior to releasing the solution to the data catalog. This new user role may also generate and/or modify existing terraform scripts, which are stored in the object storage.

At a high level, in some embodiments, the asset information is loaded into the data catalog by a single or bulk upload process. The asset(s) may go through their own approval process for ensuring that they are configured correctly. Once the asset approval process is completed, the asset owner (in cases of a single asset deployment) or an the asset deployment assembler (in cases where multiple owners of assets are used) retrieves the details of the assets required for deployment. The asset deployment assembler creates the deployment blueprints with the asset information and state defined as “submitted”. At this stage, the deployment blueprints may not be deployed in the production environment of the cloud architecture. For example, at this stage, the deployment blueprints may not be returned to a user of the cloud architecture during a search.

The asset deployment assembler may then source or create the terraform scripts used for the assembly and deployment of the solution. The terraform scripts are tested and certified by the asset owners and/or the asset deployment assembler. Once the terraform scripts are tested and certified, the terraform scripts may be upload to object storage. The asset assembler may then update the deployment blueprint state as “ready to deploy” and also update a pre authenticated request URL of the terraform zip file(s). At this stage the deployment blueprints are in the production environment of the cloud architecture. For example, at this stage, the deployment blueprints may be returned to a user of the cloud architecture during a search.

Once the solution is deployed in the data catalog, a cloud user may search for the asset(s) via search103, and the search103displays the assets located from the search query along with the possible deployment blueprints associated with the assets. The cloud user may then select the appropriate deployment blueprint and proceed to assemble the assets into a solution (e.g., using assemble104) and deploy the solution into their tenancy (e.g., using automation105). During deployment, automation105queries the asset database for the asset parameters and displays the asset parameters to the cloud user. The cloud user may then provide any parameter details needed for the deployment into their tenancy. Automation105is invoked with the deployment blueprint details and the user supplied parameters. Automation105may then invoke a cloud resource manager with the user supplied parameters and apply the job. The result returned by automation105includes the information regarding the completed job and any secondary information.

FIG.2is a deployment diagram illustrating a deployment blueprint202in an exemplary embodiment of the present disclosure. In this embodiment, deployment blueprint202references one or more assets204and deployment parameters206used to deploy the assets204. Deployment blueprint202may not only define the assets204for deployment, but also the dependencies of assets204(e.g., the order in which assets204are deployed). In this embodiment, deployment blueprint202includes a deployment blueprint ID208, a deployment blueprint name210, a deployment URL212, and a state214. Assets204associated with deployment blueprint202include deployment blueprint ID208and an asset ID216. Deployment parameters206include a deployment parameter ID218, a deployment parameter name220, and one or more deployment parameter values222. The combination of deployment blueprint202, and the reference to assets204and deployment parameters206comprises a complete solution for deploying assets204into a customer's tenancy.

FIG.3is a message flow diagram300of a deployment assembler process in an exemplary embodiment of the present disclosure. Flow diagram300may be performed by one or more servers of a cloud architecture301as described below.

An asset owner/deployment assembler302queries304a front end deployment assembly306for the assets204that need to be deployed. Front end deployment assembly306may be referred to as an assembly service in some embodiments, and the assembly service may be implemented by one or more servers of cloud architecture301.

Front end deployment assembly306returns308the details of the assets204to be deployed. Asset owner/deployment assembler302then assembles310, creates the terraform scripts for the deployment, and uploads the terraform scripts to object storage. Asset owner/deployment assembler302then creates312deployment blueprint202, which is forwarded to front end deployment assembly306. Front end deployment assembly306then stores314deployment blueprint202in an asset database316. Asset database316may be implemented as one or more object storage in some embodiments. In these embodiments, asset database316may be implemented by the one or more servers of cloud architecture301.

FIG.4is a message flow diagram400of a deployment process in an exemplary embodiment of the present disclosure. Flow diagram400may be performed by one or more servers of cloud architecture301as described below.

A user402queries404common schema and data catalog services (CSDCS)406to perform a search for assets204. In some embodiments, CSDCS406may be implemented by one or more servers of cloud architecture301.

In response to the query from user402, CSDCS406returns the details of assets204and deployment blueprint202to user402. For instance, CSDCS406returns deployment blueprint202, assets204, and deployment parameters206previously described with respect toFIGS.2and3. User402invokes408deployment blueprint202and CSDCS406queries410asset database316(seeFIG.3) for the parameters of the assets involved (e.g., deployment parameters206ofFIG.2). CSDCS406shows412deployment parameters206to user402, and user402makes changes to deployment parameters206as needed and provides updates414to deployment parameters206to CSDCS406. CSDCS406invokes416deployment blueprint202with the supplied parameters, which triggers a deployer418to invoke420the deployment (e.g., using the terraform scripts previously described to deploy assets204) at a customer tenancy422. In some embodiments, deployer418may be referred to as a deployer service, which is implemented by one or more servers of cloud architecture301. Flow diagram400further illustrates that results424,425,426of the deployment are returned back to user402.

FIG.5depicts a cloud architecture500in an exemplary embodiment of the present disclosure. Cloud architecture500may, for example, implement the previously described functionality for creation, registration, assembly, and deployment of assets204. In this embodiment, cloud architecture500includes a corporate IT network502and production tenancy504. Production tenancy504includes a provider virtual cloud network (VCN)508and a development VCN508. Provider VCN includes a network compartment510, a security compartment512, a public subnet514, a private subnet516, a database subnet518, and an OSN component520. Development VCN508includes a private subnet522and a network compartment524. In cloud architecture500, an end user526from corporate IT network502interacts with the components of provider VCN506and development VCN508via a dynamic routing gateway (DRG)528. Private subnet516may implement various services530,531,532,533,534(e.g., via one or more virtual machines) similar to those previously described to implement creation, registration, assembly, and deployment of assets204, such as common schema102, search103, assemble104, automation105(seeFIG.1), front end deployment assembly306(seeFIG.3), CSDCS406, and deployer418(seeFIG.4). In this embodiment, database subnet518may store one or more databases536(e.g., asset database316, seeFIG.3) used to store assets204, deployment blueprints202, deployment parameters206, terraform scripts, and the like.

Cloud architecture500may operate in a manner similar to that previously described with respect toFIGS.1,3, and4. For example, a front-end service538may implement a user interface (UI) which allows a user to search for assets204, and provide search results to the user which details which assets204are deployable or non-deployable in customer tenancy422. The user may then select the deployable asset204and front-end service538may then retrieve the details of the deployable asset204through asset discover service532. When the user selects deploy, front-end service538may then retrieve the operational parameters of the deployable asset204via asset discovery service532. The user may then provide the required information for deploying the deployable asset204. Front-end service538may then invoke a deployer service533and contact asset discovery service532to retrieve a URL for deployment blueprint202. Deployer service533downloads the executable scripts associated with deployment blueprint202, utilizes a resource manager service540for deployment to customer tenancy422, and provides a job ID back to front-end service538. Front-end service538tracks the deployment status of the job ID and dynamically shows the progress of the deployment status using the UI to the user. Once front-end service538indicates the deployment to customer tenancy422is complete, the user may then begin using asset204in their customer tenancy422.

The use of deployment blueprints and the associated methodology around designing, testing, and deploying such deployment blueprints in a test environment prior to providing solutions to production provides a number of benefits over the art, including but not limited to (1) pre-determining the readiness and success rate of deployable assets by implementing an asset certification process (e.g., defining, assembling, and testing the asset before it's published in the cloud system for users to consume; (2) re-certifying assets to account for dependency changes both within and external to the environment (e.g., version changes, etc.); and (3) multi-technology support of the assembly and deployment process using terraform, ansible, or other executable scripts.

In some cases, a solution expert in an organization can generate a number of re-usable assets204for the organization. There are at least two different kinds of assets204, namely: dynamic assets204such as programs and scripts, and static assets204such as templates, slides, and white papers. Dynamic assets204can be shared in different forms. For example, dynamic assets204can be shared as downloadable artefacts, and/or can be shared using a marketplace platform, etc. These shared dynamic assets204may be self-contained and may require that they are integrated manually outside of the mechanism used to offer them. However, other more complicated scenarios may exist. For example, with two assets204, the first asset204may be a landing zone terraform template, while the second asset204may be a LAMPP stack terraform template. When the first asset204is deployed, the terraform output of the first asset204may be recorded and provided as the input variables for deploying the second asset204.

In some of the embodiments described herein, an assembly service is described (e.g., one or more services that implement the functionality of assemble104, seeFIG.1) that enables the creation of a solution from assets204. A solution may then be directly used by other applications as a single unit. In some embodiments, the assembly service uses two different models. One model uses the metadata of assets204, and the other model uses a solution repository.

The metadata of assets204describes how an asset204can be instantiated. This may be analogous to the concept of a class in object-oriented programming. An asset204can be instantiated, and when instantiated, it can be combined with another instance of an asset204to form a solution. The instance of an asset204in this case is analogous to an object in object-oriented programming.

One aspect of asset204is the concept of property and requirement. A property is a feature or a capability of asset204. A simple example would be that if an Oracle database were asset204, it would deliver a SQL compliant interface. Another asset204, for example, a MySQL database, may also deliver a SQL compliant interface. For this pair of assets204, a SQL compliant interface is a property. On the contrary, in another example, a web application asset204may require a SQL compliant interface to store its data. This requirement can be satisfied by either the Oracle database asset204or the MySQL database asset204for the web application asset204. The property and requirement pair provides a soft dependency between assets204, and assets204may not depend on each other directly.

Further, asset204may have a set of operations associated with it (e.g., installation, scale, etc.). For each operation there may be an associated template and a template type. The template may be modelled at the operation level instead of the asset level because a template can be declarative (e.g., terraform) or can be imperative (e.g., a set of scripts to complete the operation). When a template is imperative, the template may be specific to an operation, and the operation has a set of input and output parameters.

A solution repository describes a model for instantiated solutions, which in turn, describes instantiation of assets204. A solution may be made of one or more items. A solution item is therefore an instance of asset204. Further, a solution item can be part of one or more solutions as well.

In the assembly process (at a high level), the client (e.g., a portal of the cloud service provider) submits a request to create a solution using the assembly service. The main input of this request may be a set of asset identifiers, where the identifiers can be found in the repository of metadata of assets204. At this stage, the solution consists of disparate, unrelated assets204. The client may then request the list of parameters needed to provision the solution. The assembly service may then combine parameters of all assets204and returns to the client a combined list. From the returned parameters, the client can update the values of the parameters. The values can be concrete values or placeholder values. For example, a solution may exist that consists of a database asset204and a web application asset204. When provisioning the database asset204, there may be inputs such as the name of the database, and in this example, the value of the input is concrete. The output of that provisioning can be the URL to connect to that database. The input parameter of the web application may include the URL of the database. In this case, the client can provide a placeholder value, e.g., $ {parameter_name_for_URL_parameter}. This value will be populated by the deployment service (e.g., by automation105ofFIG.1and/or deployer418ofFIG.4) during deployment time. Once the client provides the placeholder value, the two assets204are associated with each other and no longer disparate and unrelated.

When two assets204are related, the property of the first asset204can be used to resolve the requirement of the second asset204. For example, if database asset204has a property of “SQL Compliant Interface” and web application asset204has a requirement of “SQL Compliant Interface”, database asset204resolves the requirement of web application asset204. After values are updated, the client can request the assembly service (e.g., assemble104ofFIG.1and/or front end deployment assembly306ofFIG.3) to provide a list of unresolved requirements. Sometimes a solution may have unresolved requirements, and these requirements may be resolved by something outside of the cloud infrastructure. The client may then confirm that the unresolved requirements are resolved somewhere else.

The process above describes the simplest form of the assembly process, where the chaining of assets is done manually by providing placeholder values. However, the assembly service can provide a recommendation to the client based on a few strategies including the following:

The assembly service may implement rule-based mapping. Further, the assembly service may also include solution templates. The solution templates define included assets204and deployment parameters206that maps between those assets204. When the client creates a solution, instead of providing a list of assets204, the client submits the identifier of the solution template.

The assembly service may provide suggestions based on a property-and-requirement pair. Further, the assembly service may recommend placeholder values based on property-and-requirement pair. Using the example provided earlier, when the solution is made of database asset204and web application asset204, the assembly service will provide a recommendation to the client that the input parameter of the web application asset204is populated using the output of the database asset204. This relies on a naming convention where the input parameter name of the web application asset204must also match the output parameter name of the database asset204.

To improve the strategy above, the assembly service may also rely on commonly used mapping to provide a recommendation. This helps where two assets204have different names between the output parameter name from the first asset204, with the input parameter of the second asset204.

The following scenarios may be validated when the client provides placeholder values to chain multiple assets204:

Cyclical dependency—when the client maps parameters between three or more assets204that result in a cyclical dependency, the assembly service may reject the mapping.

Transitive dependency—when asset A204resolves the requirement of asset B204, and asset B204resolves the requirement of asset C204, the property of asset A204can also resolve the requirements of asset B204.

Version dependency—a requirement can be used to express a version e.g., “Feature A, version 2.0 or later”.

Conditional dependency—ability to apply “AND” or “OR” logic to a set of requirements. For example, a database asset may require a “DB Subnet” or a “Private Subnet”.

Exclusion dependency—this is to declare that a feature must not exist for asset204to be provisioned.

There are many advantages to the solution described above, including but not limited to: (1) presenting assets as a unified solution; (2) reducing the time required to determine the reusability of the previously developed assets; (3) mapping asset dependencies and capturing their features; and (4) enabling the administrators to detect critical assets.

Further to the features described above, the cloud service provider may additionally provide CSDCS, as previously described with respect toFIG.4. The cloud service provider may also provide an agnostic platform in which enables organizations to manage the life cycle of digital assets in a unified way. In some cases, organizations may have millions of assets204. The cloud service provider may additionally provide a process of cognitive search capabilities for the assets204, with a semantic analysis of the assets including the Knowledge Graph & Ontology representation, such that the complete automation of selected assets204which will be assembled & deployed onto appropriate customer tenancy422. This process significantly improves the operational efficiency related to the time, cost & maintenance of assets204. The asset lifecycle may be visualized by providing a Unified User Interface & Experience (UI/UX). This service may exist as a microservice with an API interface provided by the cloud service provider.

Organizations invest in building many assets204over different projects. It is common that the development lifecycle of assets204are poorly tracked. This can occur due to many reasons, such as modifications to a team working on assets204, changing requirements of assets204, changing priorities and scopes for assets204, etc. Further, different parts of a larger organizations may not necessarily be aware of the existence of some assets204handled elsewhere in the organization. In some cases, duplication of asset efforts can potentially take place. Within the same organization, over a period of time, some assets204are neglected and no longer used, regardless of their potential. Further, various teams may end up reinventing some of these assets204, resulting in major opportunity costs, delays, and relevant losses. Furthermore, currently available tools are transaction focused and thus, are not as comprehensive as CSDCS described herein. Further, the currently available tools are either niche, do not support cloud, lack asset discovery and knowledge management tools and/or are not scalable.

CSDCS described herein may be composed of a number of other sub-systems, where each sub-system is responsible to cover a specific part of the process. This allows the organization to discover, manage and create a database of assets204. Thus, problems such as duplication can potentially decrease due to the re-deployment of assets204. Furthermore, through logging and managing deployment of assets204, it is possible to reduce the burden on the transactions management of assets204. As the authentication of the users and the access at a large scale and in real-time would not be possible in any other way. Additionally, the platform provides many supporting tools, which enhance user experience and improve the quality of the assets over time.

CSDCS described herein may implement a unique asset discovery and registry of assets (e.g., millions of assets204), implement a cognitive search engine, and provide assembly and deployment of assets to the cloud, etc.

There are many advantages associated with such services for its end users, such as organizations and cloud service users. These advantages include but are not limited to: (1) avoiding reinventing the wheel by incorporating previous work on assets into the development process for new assets; (2) enabling new employees to browse, search, and access previous asset work; (3) allowing for the development of add-ons to provide suggestions for the developers to reuse previous asset work; (4) helping managers supervise the development of the assets in their organization by viewing what percentage of them are approved and otherwise; (5) maintaining collected information and providing services on a cloud based infrastructure using autonomous database, thereby integrating several other components in terms of APIs and their core process; and (6) reducing the time needed to find relevant information on the assets.

Computer system600further includes a read only memory (ROM)608or other static storage device coupled to bus602for storing static information and instructions for processor604. A storage device610, such as a magnetic disk, an optical disk, a flash memory storage device, etc., is provided and coupled to bus602for storing information and instructions.

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

Computer system600can send messages and receive data, including program code, through the network(s), network link620, and communication interface618. In the Internet example, a server630might transmit a requested code for an application program through Internet628, ISP626, local network622, and communication interface618. The received code may be executed by processor604as the code is received, and/or stored in storage device610, or other non-volatile storage for later execution.

FIG.7is a flow chart of a computer-implemented method700in an exemplary embodiment. Computer-implemented method700may be performed by cloud architectures301,500, computer system600, or other systems, not shown or described.

Computer-implemented method700begins by implementing702, by one or more servers of a cloud architecture, an assembly service, a user computing environment, and at least one object storage configured to store a plurality of assets that are deployable in the user computing environment. For example, one or more servers of cloud architecture301implement front end deployment assembly306, asset database316, and customer tenancy422(which may also be referred to as a user computing environment; seeFIGS.3,4).

Computer-implemented method700continues in this embodiment by receiving704, by the assembly service, a query for at least one asset of the plurality of assets. For example, asset owner/deployment assembler302queries front end deployment assembly306for assets (seeFIG.3).

Computer-implemented method700continues in this embodiment by returning706, by the assembly service, information for the at least one asset. For example, front end deployment assembly306queries asset database316for information about the assets, and returns the information to asset owner/deployment assembler302(seeFIG.3).

Computer-implemented method700continues in this embodiment by receiving708, by the assembly service, a deployment blueprint that defines a deployment of the at least one asset in the user computing environment and at least one executable script for deploying the at least one asset, where the deployment blueprint is defined based on the information provided and includes a link to the at least one executable script. For example, front end deployment assembly306receives the deployment blueprint202from asset owner/deployment assembler302(seeFIGS.2,3).

Computer-implemented method700continues in this embodiment by storing710, by the assembly service, the deployment blueprint in the object storage. For example, front end deployment assembly306stores deployment blueprint202in asset database316(seeFIGS.2,3).

In an optional embodiment, computer-implemented method700further comprises implementing, by the one or more servers, a CSDCS and a deployer service. For example, one or more servers of cloud architecture301implement CSDCS406and deployer418(seeFIG.4).

In this optional embodiment, computer-implemented method700further comprises receiving, by the CSDCS from a user, a search request for the at least one asset, and returning, by the CSDCS to the user in response to the search request, information regarding the at least one of the assets and the deployment blueprint. For example, CSDCS406receives a search request from user402for assets204, and in response, returns information to user402regarding assets204along with deployment blueprint202.

In this optional embodiment, computer-implemented method700further comprises receiving, by the CSDCS from the user, a request to invoke the deployment blueprint, requesting, by the CSDCS, that the deployer service deploy the at least one asset in the user computing environment based on the deployment blueprint and the at least one executable script, and deploying, by the deployer service, the at least one asset in the user computing environment in response to the request. For example, CSDCS406receives a request from user402to invoke deployment blueprint202, and in response, CSDCS406requests that deployer418deploy deployment blueprint202in customer tenancy422. In response to the request to deploy from CSDCS406, deployer418deploys deployment blueprint202in customer tenancy422(seeFIG.4).

In continuing with this optional embodiment, computer-implemented method700may further comprise querying, by the CSDCS in response to the request to invoke the deployment blueprint, the at least one object storage for asset parameters associated with the at least one asset, and requesting, by the CSDCS, that the deployer service deploy the at least one asset in the user computing environment based on the asset parameters. For example, CSDCS406queries asset database316for asset parameters for assets204, and instructs deployer418deploy assets204in customer tenancy422based on the asset parameters (seeFIGS.2-4).

In continuing with this optional embodiment, computer-implemented method700may further comprise displaying, by the CSDCS in response to the query for the asset parameters, the asset parameters to the user, receiving, by the CSDCS from the user, an update to the asset parameters, and requesting, by the CSDCS, that the deployer service deploy the at least one asset in the customer computing environment based on the update to the asset parameters. For example, CSDCS406displays the asset parameters to user402, receives an update to the asset parameters from user402, and requests that deployer418deploy assets204in customer tenancy422based on the update.

In other optional embodiments, the deployment blueprint includes a state indicator. In these other optional embodiments, computer-implemented method700further includes updating, by the assembly services, the state indicator to indicate that the deployment blueprint is not ready for release to users of the cloud architecture. For example, when front end deployment assembly306initially stores deployment blueprint202in asset database316, state214of deployment blueprint202(seeFIG.2) may be set to “submitted”. As a result, deployment blueprint202may not be displayed to user402in a search for assets204.

In continuing with this optional embodiment, computer-implemented method700further comprises receiving, by the assembly service, approval to release the deployment blueprint to production, and updating, by the assembly service, the state indicator to indicate that the deployment blueprint is ready for release to the users in response to the approval. For example, CSDCS406receives approval for deployment blueprint202from asset owner/deployment assembler302, and updates state214of deployment blueprint202to “ready to deploy”. After updating state214, blueprint202may be displayed to user402in a search for assets204(seeFIGS.2-4).

Many organizations are moving towards cloud-based computing systems or cloud-based hosting environments so that the organization can benefit from more resources or assets being available for their use as compared to a local computing system or local hosting environment. While a cloud-based computing system offers the benefits of a large pool of assets being available to a user, it may be difficult for the user to identify which asset would be more appropriate for the user for a particular application or a particular use. Accordingly, it may take a substantial amount of time for the user to search and deploy an asset for the particular application or use. Further, after a user has found a correct asset for deployment, in some cases, the user may have to familiarize themselves with the asset specific user interface to deploy the asset to the user's computing environment.

Various embodiments/aspects described below provide solutions to the above-mentioned technical issues associated with the current cloud-based systems.

In some embodiments, a user interface (UI) for common search and data catalog services (CSDCS), as described in the present disclosure, may act as a frontend application to a backend system providing CSDCS. The CSDCS may provide one or more services for a user to add, register, review, modify, remove, delete, search, deploy, and/or provide feedback for, an asset that belongs to an organization's pool of cloud-based assets. In some embodiments, an asset status may also be updated by the user. For example, the user can update the asset status as (i) a public status giving all users access to the asset, (ii) a private status giving only the user who added the asset access to the asset, (iii) a custom status giving a set of selected users access to the asset, and (iv) so on.

In some embodiments, an asset may be a document, a blog, a white paper, a software or an executable code, a proof of concept for a deployable framework or a deployable platform, and so on. The asset may be a static asset or a dynamic asset. A static asset may include a document, a white paper, and/or a blog, and so on. A dynamic asset may include a software or an executable code, and/or a proof of concept for a deployable framework or a deployable platform. In some embodiments, an asset may be an artificial intelligence (AI) or a machine-learning (ML) asset including a ML pipeline.

In some embodiments, the CSDCS may also provide a search service for the user to search for one or more most relevant assets for the user. The search service may enable the user to search an asset catalog listing a plurality of assets using a search query. The search query may be based on a keyword, an asset identification (ID), or natural language text, and so on. One or more AI or ML algorithms may be used to determine a user's intent and determine or identify the most relevant assets for the user, as described in detail in the present disclosure. The user's prior search history and/or the user's profile identifying the user's role in the organization and/or permissions granted to the user corresponding to various assets of the asset catalog may be used to determine the most relevant assets for the user.

In some embodiments, the CSDCS may provide a deployment service for the user to deploy an asset found in a search result corresponding to a user's search query. The asset may be deployed in the user's computing environment. If the asset has dependency on one or more other assets, those assets may also be automatically deployed in the user's computing environment.

In some embodiments, a service may generate a unified assets knowledge graph, which may identify relationships between various assets based on metadata of these assets and classify or group the assets based on the identified relationships. Further, a relationship between the assets may be ranked based on weights assigned to each asset. Different weight values may be assigned to each asset based on proximity of keywords in the asset and/or according to a PageRank algorithm in which assets may be assigned different weights based on their types. An ontology corresponding to an asset may be displayed on a UI, when a user hovers a cursor over an asset shown in the unified assets knowledge graph.

Accordingly, various embodiments/aspects described in the present disclosure provide a user interface for a user to search an asset that is most relevant to the user, to view the asset's relationship with respect to other assets, and to deploy the asset automatically in the user's computing environment. Accordingly, various embodiments/aspects, as described herein, may improve on a computing system (or a cloud-based computing system) by providing a search process configured to find the most relevant assets for a user that is more efficient and more accurate, while giving the user a better understanding of how each asset is classified, grouped, and/or related to other assets.

FIG.8is a block diagram of a knowledge fabric800in accordance with exemplary embodiments of the present disclosure. The knowledge fabric800may be a backend system providing various services to a user via a user interface (UI) of a frontend application executing on a client device. As shown inFIG.8, a plurality of client devices802,804,806may communicate with cloud computing resources810via Internet808. Even though, only three client devices are shown inFIG.8, any number of client devices may communicate with the cloud computing resources810via the Internet808.

By way of a non-limiting example, a client device may be a computer, a tablet, or a smartphone, and so on. The client device may communicate with the cloud computing resources810using a local area network, a wide area network, a satellite network, a 3G network, a long-term evolution (LTE) network, a 5G network, and/or a 6G network, and so on.

A frontend application executing on a client device may communicate with the cloud computing resources810via a webservice message over a hypertext transfer protocol (http) or a hypertext transfer protocol secure (https) protocol. The webservice message from the frontend application executing on the client device may, for example, be according to a Representational State Transfer (REST) application programming interface (API) and/or a Simple Object Access Protocol (SOAP) API. Further, data may be exchanged between a client device and the cloud computing resources810as (i) an extended markup language (XML), (ii) a JavaScript Object Notation (JSON), (iii) a Concise Binary Object Representation (CBOR), (iv) hypertext markup language (html), (v) a binary JSON (BSON), (vi) protocol buffers, and (vii) so on.

The cloud computing resources810may include a gateway/load balancer812which may form edge computing resources. The gateway/load balancer812may provide an interface between the Internet and the cloud computing resources810. During operation, a webservice message received from a client device may be received by the gateway/load balancer812. The gateway/load balancer may forward the received webservice message to one of servers server1814, server2816, and server3818based on current load and available computing resources, e.g., available CPU and/or memory resources, corresponding to each of the server1814, the server2816, and the server3118. Even though, only three servers are shown in the cloud computing resources810, the cloud computing resources810may include any number of servers.

By way of a non-limiting example, one or more servers in the cloud computing resources810may be a physical hardware and/or an instance of a virtual machine. Further, one or more servers in the cloud computing resources810may be a standby server for one or more active servers in the cloud computing resources810. Each server in the cloud computing resources810may provide the same or different services through one or more applications, e.g., backend applications, executing on each server.

By way of a non-limiting example, a backend application may be a monolithic application, and/or one or more microservices executing on a server in the cloud computing resources810. A plurality of microservices executing on the server3818is shown inFIG.8. The plurality of microservices may include (i) a knowledge discovery microservice820, (ii) a keyword-based search microservice824, (iii) a cross-search microservice822, (iv) a natural language processing (NLP) search microservice832, (v) an ontology microservice826, and/or (vi) a statistics microservice828, and (vii) so on. One or more instances of a microservice may execute on a server in the cloud computing resources810. In some examples, the cloud computing resources810may include a database830, and various microservices may access the database830directly and/or via a database microservice (not shown inFIG.8).

In some embodiments, and by way of a non-limiting example, the knowledge discovery microservice820may provide an asset discovery functionality according to a search query as received in a message, e.g., a webservice API message, from a frontend application executing on a client device. Based on the type of the received search query, the knowledge discovery microservice820may invoke services from other microservices.

For example, if the search query includes a keyword to identify assets based on the keyword, then the knowledge discovery microservice820may invoke the keyword-based search microservice124. The keyword-based search microservice824may access assets stored in the database830and find the most relevant assets using a term-frequency-inverse document frequency (TF-IDF) algorithm. Further, the most relevant assets being discovered using the TF-IDF algorithm may be ranked using an algorithm, e.g., a cosine similarity ranking algorithm. In some examples, the assets may be ranked based on additional criteria such as popularity of the asset, statistical information corresponding to the asset. The statistical information corresponding to the asset may include, but not limited to, a number of times the asset is viewed by users, the most recent update and/or release date of the asset, and so on. The ranked assets which meet a particular criterion, e.g., a ranking score above 70%, may then be displayed on the UI of the frontend application. Further, ontology of the assets, e.g., the ranked assets, may be generated and displayed on the UI of the frontend application.

In some exemplary embodiments, the search query may include a search term (or a phrase) to identify one or more assets related to the search term, and the knowledge discovery microservice820may invoke the cross-search microservice822in response to the received search query. In some examples, the search term or the phrase may be an asset ID. In some exemplary embodiments, the search query may include a natural language text, e.g., a free form text, or an unstructured text, and the knowledge discovery microservice820may invoke the NLP search microservice832in response to the received search query.

In some exemplary embodiments, and by way of a non-limiting example, the knowledge discovery microservice820may provide ontology corresponding to assets associated with a particular keyword, a particular search term (or phrase) such as an asset ID, and/or a natural language text. The knowledge discovery microservice820may invoke one of the keyword-based search microservice824, the cross-search microservice822, the NLP search microservice832, which may further invoke the ontology microservice826.

The ontology microservice826may identify relationships of an asset with other assets. In some embodiments, and by way of an example, the relationships of an asset with other assets may be determined up to a predetermined number of relationship layers. As an example, when the predetermined number of relationship layers is 3, a first set of assets, that are directly related to the asset, and therefore, in a first layer relationship with the asset according to the search query may be determined. Next, a second set of assets including assets that are directly related to each asset in the first set of assets and that match criteria corresponding to the search query may be determined. Next, a third set of assets including assets that are directly related to each asset in the second set of assets and that match criteria corresponding to the search query may be determined. All the assets from the first set of assets, the second set of assets, and the third set of assets, and the asset corresponding to a search query from a user may then be displayed on a UI of a client device. Details of relationships of each asset with other assets (as applicable) may be included as part of metadata of each asset and/or as properties of each asset. The ontology corresponding to an asset identified based on a search query may be displayed as a graph or in a graphical representation.

The ontology microservice826may determine logical relationships between various assets. The logical relationships between various assets may be determined based on proximity of keywords within the asset, and/or based on an asset category.

In some exemplary embodiments, upon determining an asset being an AI asset or a ML asset, the ontology microservice826may display a dynamic acrylic graph (DAG) to display how the particular asset was trained and/or how the AI maturity was achieved by the AI asset or the ML asset.

In some exemplary embodiments, the ontology microservice826may generate a knowledge graph according to a particular domain specific language. For example, the ontology microservice826may generate knowledge graphs specific to (i) a financial industry business ontology (FIBO), (ii) a cloud data management capabilities framework, (iii) a data management capabilities assessment model, and (iv) so on, based on the asset being related to, or applicable to, the financial industry, the cloud computing system, the data management system, and so on, respectively.

In some exemplary embodiments, and by way of a non-limiting example, the knowledge discovery microservice820may provide statistics associated with a particular keyword, a particular search term (or phrase) such as an asset ID, and/or a natural language text. The knowledge discovery microservice820may invoke one of the keyword-based search microservice824, the cross-search microservice822, the NLP search microservice832, which may further invoke the statistics microservice828. The statistics microservice may provide statistical information corresponding to an asset as identified based on the search query. The statistical information may include, but not limited to, information such as (i) a publication date of an asset, (ii) a number of times an asset is searched, (iii) a number of times an asset is viewed, (iv) a number of users who have accessed and/or edited an asset, (v) a number of times an asset is deployed (if applicable), (vi) a number of times a user feedback is received for an asset, and/or (vii) a number of other assets that is related to an asset, and (viii) so on.

In some exemplary embodiments, and by way of a non-limiting example, the database830may be a cloud database. The cloud database may be a rational database, a NoSQL database, a multi-model database, and/or a distributed SQL database, and so on. The database may store content such as assets, metadata and/or properties of each asset, user information (e.g., a user profile, user's search history, and so on) for a plurality of users, one or more keywords or tags associated each asset, statistics corresponding to each asset, and so on. Assets may include one or more static assets, dynamic assets, and/or AI/ML assets.

In the following, various use cases of the knowledge fabric800are described using example view of a user interface (UI) of a frontend application executing on a client device. As stated herein, the frontend application is in communication with the knowledge fabric800.

FIG.9displays an example screenshot or an interface view900of a UI of a frontend application executing on a client device. The frontend application may be a web browser-based application, a mobile application, or a native application. The interface view900of the UI displayed on a display812of a client device corresponds with a web browser-based frontend application executing on the client device. A user of the client device may access the knowledge fabric800and its services by entering a particular uniform resource locator (URL) address of the knowledge fabric that is a backend system in a URL locator address bar902shown on interface view900.

Upon successful communication, or establishment of a session, between the frontend application and the knowledge fabric, as shown in the interface view900, the user is displayed a page showing, for example, a page header914and a plurality of radio buttons to select a particular search selection criterion. For example, as shown in the interface view900, a radio button904awhen selected by the user, a search operation may be performed based on a particular keyword or a phrase entered by the user in an input text box906when the user either hits an enter key or clicks on a magnifying lens icon in the input text box906. The user may also generate a knowledge graph and/or ontology corresponding to text entered into the input text box906by clicking on a view ontology option labeled as908, as shown in the interface view900. The user may generate statistics corresponding to text entered into the input text box906by clicking on a view statistics option labels as910, as shown in the interface view900.

In some examples, the user may know an asset ID value for an asset, and the user may search for the known asset ID by selecting a radio button904band entering the asset ID value in the input text box906shown in the interface view900. To search (other) assets that are related to the asset ID value known to the user, the user may select a radio button904cand enter an asset ID value in the input text box906. Additionally, or alternatively, the user may search for assets by selecting a radio button904dand entering natural language text or a free-form language in the input text box906shown in the interface view900.

The particular search criterion selected by the user corresponding to a radio button, e.g., the radio button904a,904b,904c, or904d, and associated search query term entered in the input text box906are communicated to the knowledge fabric800in an API message, e.g., a REST API message. The knowledge fabric may perform a query for the received search query term according to the received search criterion.

In some examples, after the user selects the magnifying lens shown in the input text box906, an additional UI window may be displayed. The additional UI window may be shown as an overlay over the existing UI view. Each ofFIG.10A,FIG.10B, andFIG.10Cshows an example interface view of an additional UI window displayed as an overlay over the interface view900.

As shown in interface views1000a,1000b, and1000ccorresponding toFIG.10A,FIG.10B, andFIG.10C, a display box1002may display the search criterion selected by the user, and the user's input for confirming before building and sending an API message to the knowledge fabric800from the client device. The search criterion may be selected by the user by selecting one of the radio buttons904a-904d, and the user's input may be provided in the input text box906, as shown in the interface view900. The user may provide confirmation by selecting or clicking a text display box labeled1004in the interface views1000a,1000b, and/or1000c, an API message may be built at the client device and sent to the knowledge fabric800for performing the requested search operation. Additionally, or alternatively, the interface views1000a,1000b, and/or1000cmay also be removed from being displayed. As shown in the interface views1000a,1000b, and1000c, the text display box1004may display “submit,” “retrieve,” or “search,” or any other text that solicits the user's input to proceed to build and send an API message to the knowledge fabric800.

Upon receiving a search query response from the knowledge fabric800, a page displaying one or more assets with their corresponding information may be displayed in the UI. The page displaying one or more assets with their corresponding information may be displayed in a new tab, or as an overlay over the currently displayed interface view. In some examples, each asset of the one or more assets with their corresponding information may be displayed as a selectable hyperlink. When the user brings a cursor in proximity of the selectable hyperlink, an overlay window showing information associated with the asset may be displayed. When the user selects the selectable hyperlink, a new tab in the current web browser session, or a new web browser window, may be opened for displaying details about the asset and its corresponding statistics.

In some exemplary embodiments, and by way of a non-limiting example, details about the asset may include (i) description of the asset, (ii) a set of keywords associated with the asset, (iii) a set of services or applications in which the asset may be used, (iv) relevant dates (e.g., asset release date, date of last update), (v) a list of industry in which the asset is used, and/or (vi) a list of stakeholders/audience, e.g., data analysts, data scientists, programmers, and (vii) so on. In some examples, the user may initiate deployment of the asset and/or other assets required for successful deployment of the asset in the user's computing environment. Details about the asset may also include statistics details such as a number of times other users have viewed this page, and so on. In some examples, the user may also provide feedback and/or suggest edits/corrections regarding the asset through the interface view.

In some embodiments, the search query response may be displayed as shown in an interface view1100aand an interface view1100bofFIG.11AandFIG.11B, respectively. As shown in the interface view1100a, a section marked1102may display radio buttons to select a search query criterion, as discussed herein, and an input text box showing user entered search input. A query response, as received from the knowledge fabric800, may be displayed as shown in the interface view1100a.

In some examples, statistical information, such as a total number of results found corresponding to the user's search query term, as shown in the interface view1100aas1106, and for the user selected search criterion, as shown in the interface view1100aas1104, may be displayed (e.g., as shown in the interface view1100aas1108). Ontology or a knowledge graph1112showing relationship between different search result items (or assets), and their relationships with other items may also be displayed. The search result items may include a static asset, a dynamic asset, and/or an AI/ML asset. The other items may be static assets, dynamic assets, and/or AI/ML assets, as described in the search result item, and/or related to the search result item. Accordingly, the ontology or the knowledge graph1112may provide a pictorial view of all the assets and their relationships for the user's search query term.

A first search result item from the search result items may be shown as1114a. By way of a non-limiting example, the first search result item may be a static asset, which is shown in the interface view1100aas1116. Description corresponding to the first search result item and a selectable hyperlink may be displayed in the interface view1100aas labeled as1116. The description may be extracted by analyzing the first search result item, and/or the description may be based on metadata and/or properties of the first search result item. One or more properties of the first search result item may also be displayed in the interface view1100aas1118a-1118d. An asset category to which the first search result item belongs to, and its description may be shown in the interface view as labeled as1120.

Using a scrollbar1110, the user may scroll up and/or down. As the user scrolls down using the scrollbar1110, one or more other (semantically) related assets may be shown as shown in the interface view1100bas1122. In some examples, other related concepts including, but not limited to, relevant keywords, relevant questions, relevant statistics, relevant assets, and so on, may also be shown as labeled in the interface view1100bas1124. A second search result item1114bmay be similarly shown like the first search result item1114ais shown.

InFIGS.8,9,10A-10C, and11A-11B, an example embodiment of the knowledge fabric800, both from the backend and the frontend perspectives, is described in detail with respect to the keyword-based search criterion. Further, as described herein, instead of a keyword, the user can enter a question as he/she will ask to another human being and select “natural language search” as a search criterion.FIG.12describes an example flow for processing the user's query in a free language form (or a natural language form), for example, by the natural language processing search microservice832.

As shown in a process flow diagram1200, upon receiving a user query1204in a natural language form from a user1202, the user query may be processed through a natural language processing (NLP) pipeline1206, which is described in the present disclosure usingFIG.13. The NLP pipeline1206may access asset data stored in a database1218. By way of a non-limiting example, the database1218may be the same as the database830. The NLP pipeline1206, which is shown inFIG.13as1300, may transform free form text entered by the user into a clean and consistent format during preprocessing1302. The preprocessed text then may be processed through stemming and/or lemmatization process during1304. After performing stemming and/or lemmatization, a stop-words removal1306and synonym analyzer1308processes may be performed. Thus, the present system is configured to perform preprocessing1302, stemming and/or lemmatization process1304, stop-words removal1306, and/or synonym analyzer1308all associated with natural language processing.

In some embodiments, a custom analyzer1310process may also be performed. The custom analyzer, for example, may be a lookup table that lists words that are not synonyms, but users may have used them interchangeably. Accordingly, an output of the custom analyzer1310may be a list of one or more keywords to perform searching of assets.

In some embodiments, relevant assets corresponding to the list of one or more keywords may be identified using a term-frequency-inverse document frequency algorithm. Subsequently, a ranking model1312process may be performed to rank the relevant assets based on their relevancy with the received user query. By way of a non-limiting example, the ranking model may determine a respective ranking score of each relevant asset using an algorithm, e.g., a cosine similarity ranking algorithm.

Based on the respective ranking score assigned to each asset, assets that meet particular selection criteria may be identified for displaying on an interface view on a client device. By way of a non-limiting example, the selection criteria may include, but not limited to, assets having a particular relevancy score, e.g., 70%, assets that are added and/or reviewed by other users in the same user group, and so on.

Returning back toFIG.12, relevant assets that meets the selection criteria may then be processed through a language API service1208. By way of a non-limiting example, the language API service (or a cloud interface language API service) may perform translation of assets that are not in a user's preferred language. The user's preferred language may be determined based on the user profile or based on a language in which the user entered free form text for performing natural language search. If any of the relevant assets is in a language different from the user's preferred language, then using the language API service1208, all relevant assets may be converted into the user's preferred language.

The assets translated in the user's preferred language may be further processed through an intent processor1210. The intent processor1210may invoke an API to a service1220to further identify or filter the assets that match the user's intent behind the natural language search. By way of a non-limiting example, the user's intent may be determined based on the user's entered search text input, the user's profile, the user's previous search history, and so on. A knowledge graph1212corresponding to the assets that match the user's intent may then be generated by identifying other related, dependent and/or required assets. An API response message then may be built and sent to the user's client device for displaying as shown inFIG.11AandFIG.11Bas interface views1100aand1100b, respectively.

In some embodiments, the user's previous search history and/or other frequently searched keywords may also be displayed on an interface view. By way of a non-limiting example, the user's previous search history displayed on the interface view may be preselected and/or configurable. For example, the interface view may display the user's search history for the last 7 days unless the user has changed or reconfigured to a different period, for example, the last 14 days. Similarly, other frequently searched keywords during the day may be displayed. The user may change or reconfigure to display other frequently searched keywords for a different period, such as for the last 3 days, and so on.

FIGS.14A-14Bdepicts an example flow-chart1400of operations being performed by a backend system (e.g., the knowledge fabric) in accordance with exemplary embodiments of the present disclosure. The operations described in the flow-chart1400may be performed by at least one server executing a backend application (e.g., a monolithic application and/or one or more microservices). The backend application may be communicatively coupled with at least one client device executing a frontend application.

At1402, the backend application may cause display of a user interface of the frontend application on a display of the client device. The user interface view may include a plurality of input controls. The plurality of input controls may include at least first and second input controls. The first input control may include one or more radio buttons. The second input control may include at least one input text box. The first input control and the second input control may be as shown inFIG.9. Each button of the one or more radio buttons may be configured to provide a user of the client device an affordance to select and/or provide a type of search criterion. The at least one input text box may be configured to receive text input corresponding to a search query term. By way of a non-limiting example, the type of search criterion may include a keyword search, an asset ID search, a cross search, and/or a natural language search.

At1404, in response to a user of the client device selecting a particular button and providing a type of search criterion, and entering text input in the text input box, the frontend application may build and send a message to the backend application. By way of a non-limiting example, the message may be an API message. In response to receiving the message, the backend application may determine the type of search criterion and the search query term from the received message.

At1406, based on the determined type of search criterion and using the search query term, the backend application may search a database to identify a set of cloud-based tools of a plurality of cloud-based tools matching the search query term. The plurality of cloud-based tools may be stored in the database. A cloud-based tool may be an asset stored in the database, and the asset may be a static asset, a dynamic asset, and/or an AI/ML asset, as described herein. In some examples, the backend application may invoke one or more microservices to search the database. The one or more microservices may be invoked based on the type of search criterion, as described herein usingFIG.8.

The search query term may be a single keyword, an asset ID, and/or natural language text. Based on the natural language text, one or more keywords may be identified to search the database, and to identify the set of cloud-based tools matching the one or more keywords used for searching the database. In some examples, the set of cloud-based tools may be identified using a TF-IDF algorithm. Each cloud-based tool of the set of cloud-based tools may have properties associated with the search criterion that match the search query term. In some examples, at least some cloud-based tools (e.g., one or more cloud-based tools) of the set of cloud-based tools may be dynamic assets, which are deployable to a user cloud-based computing environment. In some examples, properties of an asset may be pre-assigned.

At1408, for each identified cloud-based tool, which is a dynamic asset or a deployable asset, one or more additional assets required for successful deployment of the cloud-based tool to the user cloud-based computing environment may be identified. By way of a non-limiting example, one or more additional assets required for successful deployment of the cloud-based tool to the user may be identified based on deployment properties of the cloud-based tool (e.g., a dependency tree), and/or currently deployed cloud-based tools in the user cloud-based computing environment. In some embodiments, if an asset of the one or more additional assets required for successful deployment of a cloud-based tool is deployed in the user cloud-based computing environment, a corresponding status of the asset may also be identified. Alternatively, or additionally, if an asset of the one or more additional assets required for successful deployment of a cloud-based tool is deployed in the user cloud-based computing environment, the asset may be ignored as one of the required assets for successful deployment of the cloud-based tool.

In some embodiments, and by way of a non-limiting example, each cloud-based tool of the set of cloud-based tools may be ranked, and their respective score may be used to determine an order in which each cloud-based tool of the set of cloud-based tools may be displayed on the client device. Additionally, or alternatively, from the set of cloud-based tools, one or more cloud-based tools meeting a particular criterion, or a particular matching threshold may be identified for displaying on the client device. In some examples, each cloud-based tool of the set of cloud-based tools may be ranked using an algorithm, e.g., a cosine similarity algorithm. However, any other criteria or algorithm may also be used for ranking each cloud-based tool of the set of cloud-based tools. The set of cloud-based tools may be determined based on each cloud-based tool's respective ranking score meeting a particular criterion. The particular criterion or the particular matching threshold, for example, may be a ranking score that is at least a particular threshold value (e.g., 60% (0.6) or 70% (0.7)).

The ranking score identifies similarity between two cloud-based tools. Each cloud-based tool of the set of cloud-based tools may be associated with a list of one or more keywords. The list of keywords and their corresponding numerical representation (e.g., according to TF-IDF algorithm) may be used to define similarity of a cloud-based tool with the one or more keywords used for searching the database. Based on the numerical representation of each keyword in the list of keywords, each keyword may be assigned different weight factor (e.g., a positive value that is between 0 and 1, including 0 and 1). A keyword appearing more frequently may be assigned a higher weight factor then another keyword appearing less frequently. Accordingly, based on the weight factor assigned to each keyword of the list of one or more keywords representing a cloud-based tool, and matching the one or more keywords used for searching the database, each cloud-based tool's ranking score may be determined in comparison with an ideal or a perfect cloud-based tool, which has a weight factor of value 1 assigned to each keyword of the one or more keywords used for searching the database. By ranking each cloud-based tool of the set of cloud-based tools, as described herein, the most relevant cloud-based tools may be identified for displaying in an interface view based on the ranking score. A cloud-based tool having a higher-ranking score may be displayed on the top above another cloud-based tool having a lower-ranking score. By including cloud-based tools meeting at least the particular threshold value (e.g., 60% (0.6) or 70% (0.7), only most relevant cloud-based tools may be displayed in the interface view. In other words, a user searching for a solution of a problem or a cloud-based tool providing a particular service or functionality in the user cloud-based computing environment may be displayed the most relevant cloud-based tools based on the user's provided search query term.

At1410, the backend application may generate and send/transmit a response message to the client device. By way of a non-limiting example, the response message may be an API message. The API response message may include data corresponding to each cloud-based tool of the set of cloud-based tools and additional assets (e.g., one or more additional assets) required for successful deployment of each cloud-based tool of the set of cloud-based tool for displaying in another user interface view (or interface view) of the frontend application, for example, interface views1100aand/or1100bas shown inFIG.11Aand/orFIG.11B, respectively. Additionally, or alternatively, the data may include how each cloud-based tool is relevant as a solution to the particular problem identified based on the search query term, or a particular service or functionality identified based on the search query term that the user desired for the user cloud-based computing environment. The data may include cost associated with deployment of each cloud-based tool. The cost here represents an amount of time required for deployment and/or any service interruption, and/or a monthly or annual price for deployment of each cloud-based tool.

At1412, the user of the client device may select a particular cloud-based tool from the set of cloud-based tools for deployment in the user cloud-based computing environment. As described herein, when data corresponding to each cloud-based tool of the set of cloud-based tools is displayed in an interface view of the frontend application, the user may select a hyperlink associated with a cloud-based tool. A page displayed in response to the use selecting the hyperlink may indicate if the cloud-based tool is deployable, for example, when the particular cloud-based tool is a dynamic asset. If the user selects a corresponding affordance to deploy the asset, the backend application may receive a message, which may include a user selection of a cloud-based tool for deployment to the user cloud-based computing environment.

As described herein, the user selected cloud-based tool for deployment to the user cloud-based computing environment may depend on one or more additional assets for successful deployment of the cloud-based tool to the user cloud-based computing environment. At1414, initial configuration parameters for deployment of the selected cloud-based tool and the one or more additional assets may be identified. The initial configuration parameters, for example, may be a collection of configuration parameters associated with the selected cloud-based tool for deployment and the one or more additional assets required for successful deployment.

By way of a non-limiting example, a respective value of one or more initial configuration parameters of the configuration parameters may be resolved based on properties of the selected cloud-based tool and the one or more additional assets required for successful deployment. For example, a solution, or a particular service or functionality identified based on the search query term may include deployment of a database asset and a web application asset in the user cloud-based computing environment. Deployment or provisioning of the database asset may require a name of the database as a user input. The name of the database may be used for provisioning a URL to connect to the deployed database asset. Accordingly, an input parameter of the web application asset may include the URL of the database. So, the initial configuration parameters may include a database name and a URL name. However, the URL name is resolved or associated with the database name. The database name, which is an unresolved initial configuration parameter, may be resolved based on user input.

Based on the initial configuration parameters, the particular cloud-based tool and the one or more additional assets may be built (e.g., preparing relevant configuration files for deployment) and deployed to the user cloud-based computing environment, as shown inFIG.14as1416. A status corresponding to deployment of the particular cloud-based tool (and/or the one or more additional assets) may be displayed on the client device. Additionally, or alternatively, a logfile may be generated corresponding to deployment of the particular cloud-based tool (and/or the one or more additional assets) in the user cloud-based computing environment for reporting and/or debugging purposes.