Automated delivery of cloud native application updates using one or more user-connection gateways

Information

  • Patent Grant
  • 11853100
  • Patent Number
    11,853,100
  • Date Filed
    Monday, April 12, 2021
    3 years ago
  • Date Issued
    Tuesday, December 26, 2023
    10 months ago
Abstract
Methods, apparatus, and processor-readable storage media for automated delivery of cloud native application updates using one or more user-connection gateways are provided herein. An example computer-implemented method includes generating an application update package pertaining to a cloud native application; generating a manifest file comprising identifying information for the application update package and metadata pertaining to implementing the application update package; outputting, to a user device via a user-connection gateway, a request for automated remote action on an application within a user environment associated with the user device; processing, via the user-connection gateway, a response from the user device approving the request for automated remote action; outputting the manifest file to the user environment associated with the user device; and initiating, in accordance with the manifest file, automated implementation of the application update package to the application within the user environment.
Description
FIELD

The field relates generally to information processing systems, and more particularly to techniques for providing security in such systems.


BACKGROUND

With a rise in cloud native application development, conventional application management systems face challenges in securely distributing application packages to customers or other users. For example, such conventional systems encounter distinct challenges with respect to on-premise user environments, which commonly do not prefer and/or trust connections to a public registry. In such instances, conventional application management systems are required to undertake error-prone and resource-intensive procedures to provide updates to on-premise application deployments.


SUMMARY

Illustrative embodiments of the disclosure provide techniques for automated delivery of cloud native application updates using one or more user-connection gateways. An exemplary computer-implemented method includes generating at least one application update package pertaining to at least one cloud native application, and generating at least one manifest file comprising identifying information for the at least one application update package and metadata pertaining to implementing at least a portion of the at least one application update package. The method also includes outputting, to at least one user device via one or more user-connection gateways, a request for automated remote action on at least one application within a user environment associated with the at least one user device, wherein the remote action relates to the at least one application update package. Further, the method includes processing, via the one or more user-connection gateways, a response from the at least one user device approving the request for automated remote action, outputting the at least one manifest file to the user environment associated with the at least one user device, and initiating, in accordance with the at least one manifest file, automated implementation of the at least one application update package to the at least one application within the user environment.


Illustrative embodiments can provide significant advantages relative to conventional application management systems. For example, problems associated with error-prone and resource-intensive procedures to provide updates to application deployments on user environments are overcome in one or more embodiments through secure automated delivery of cloud native application updates using one or more user-connection gateways.


These and other illustrative embodiments described herein include, without limitation, methods, apparatus, systems, and computer program products comprising processor-readable storage media.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 shows an information processing system configured for automated delivery of cloud native application updates using one or more user-connection gateways in an illustrative embodiment.



FIG. 2 shows architecture for a common update platform in an illustrative embodiment.



FIG. 3 shows an example code snippet for a common update platform manifest file in an illustrative embodiment.



FIG. 4 shows an example workflow in an illustrative embodiment.



FIG. 5 shows an example workflow in an illustrative embodiment.



FIG. 6 shows an example workflow in an illustrative embodiment.



FIG. 7 is a flow diagram of a process for automated delivery of cloud native application updates using one or more user-connection gateways in an illustrative embodiment.



FIGS. 8 and 9 show examples of processing platforms that may be utilized to implement at least a portion of an information processing system in illustrative embodiments.





DETAILED DESCRIPTION

Illustrative embodiments will be described herein with reference to exemplary computer networks and associated computers, servers, network devices or other types of processing devices. It is to be appreciated, however, that these and other embodiments are not restricted to use with the particular illustrative network and device configurations shown. Accordingly, the term “computer network” as used herein is intended to be broadly construed, so as to encompass, for example, any system comprising multiple networked processing devices.



FIG. 1 shows a computer network (also referred to herein as an information processing system) 100 configured in accordance with an illustrative embodiment. The computer network 100 comprises a plurality of user devices 102-1, 102-2, . . . 102-M, collectively referred to herein as user devices 102. The user devices 102 are coupled to a network 104, where the network 104 in this embodiment is assumed to represent a sub-network or other related portion of the larger computer network 100. Accordingly, elements 100 and 104 are both referred to herein as examples of “networks” but the latter is assumed to be a component of the former in the context of the FIG. 1 embodiment. Also coupled to network 104 is automated application update delivery system 105.


The user devices 102 may comprise, for example, mobile telephones, laptop computers, tablet computers, desktop computers or other types of computing devices. Such devices are examples of what are more generally referred to herein as “processing devices.” Some of these processing devices are also generally referred to herein as “computers.”


The user devices 102 in some embodiments comprise respective computers associated with a particular company, organization or other enterprise. In addition, at least portions of the computer network 100 may also be referred to herein as collectively comprising an “enterprise network.” Numerous other operating scenarios involving a wide variety of different types and arrangements of processing devices and networks are possible, as will be appreciated by those skilled in the art.


Also, it is to be appreciated that the term “user” in this context and elsewhere herein is intended to be broadly construed so as to encompass, for example, human, hardware, software or firmware entities, as well as various combinations of such entities.


The network 104 is assumed to comprise a portion of a global computer network such as the Internet, although other types of networks can be part of the computer network 100, including a wide area network (WAN), a local area network (LAN), a satellite network, a telephone or cable network, a cellular network, a wireless network such as a Wi-Fi or WiMAX network, or various portions or combinations of these and other types of networks. The computer network 100 in some embodiments therefore comprises combinations of multiple different types of networks, each comprising processing devices configured to communicate using internet protocol (IP) or other related communication protocols.


Additionally, automated application update delivery system 105 can have an associated application database 106 configured to store data pertaining to cloud native applications, which comprise, for example, versioning and/or update information, as well as application identification information such as software unique identifiers (SWIDs), service tags, serial numbers, install base (IB) information, etc.


The application database 106 in the present embodiment is implemented using one or more storage systems associated with automated application update delivery system 105. Such storage systems can comprise any of a variety of different types of storage including network-attached storage (NAS), storage area networks (SANs), direct-attached storage (DAS) and distributed DAS, as well as combinations of these and other storage types, including software-defined storage.


Also associated with automated application update delivery system 105 are one or more input-output devices, which illustratively comprise keyboards, displays or other types of input-output devices in any combination. Such input-output devices can be used, for example, to support one or more user interfaces to automated application update delivery system 105, as well as to support communication between automated application update delivery system 105 and other related systems and devices not explicitly shown.


Additionally, automated application update delivery system 105 in the FIG. 1 embodiment is assumed to be implemented using at least one processing device. Each such processing device generally comprises at least one processor and an associated memory, and implements one or more functional modules for controlling certain features of automated application update delivery system 105.


More particularly, automated application update delivery system 105 in this embodiment can comprise a processor coupled to a memory and a network interface.


As also detailed herein, in one or more embodiments, automated application update delivery system can be implemented in connection with and/or resident on an enterprise backend and/or an application development backend (e.g., at least one server linked with applications and one or more databases, etc.).


The processor illustratively comprises a microprocessor, a microcontroller, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA) or other type of processing circuitry, as well as portions or combinations of such circuitry elements.


The memory illustratively comprises random access memory (RAM), read-only memory (ROM) or other types of memory, in any combination. The memory and other memories disclosed herein may be viewed as examples of what are more generally referred to as “processor-readable storage media” storing executable computer program code or other types of software programs.


One or more embodiments include articles of manufacture, such as computer-readable storage media. Examples of an article of manufacture include, without limitation, a storage device such as a storage disk, a storage array or an integrated circuit containing memory, as well as a wide variety of other types of computer program products. The term “article of manufacture” as used herein should be understood to exclude transitory, propagating signals. These and other references to “disks” herein are intended to refer generally to storage devices, including solid-state drives (SSDs), and should therefore not be viewed as limited in any way to spinning magnetic media.


The network interface allows automated application update delivery system 105 to communicate over the network 104 with the user devices 102, and illustratively comprises one or more conventional transceivers.


The automated application update delivery system 105 further comprises a common update platform (CUP) 112, a backend services component 114, a user-connection gateway 116, and a managed file transfer (MFT) component 118.


It is to be appreciated that this particular arrangement of elements 112, 114, 116 and 118 illustrated in automated application update delivery system 105 of the FIG. 1 embodiment is presented by way of example only, and alternative arrangements can be used in other embodiments. For example, the functionality associated with elements 112, 114, 116 and 118 in other embodiments can be combined into a single module, or separated across a larger number of modules. As another example, multiple distinct processors can be used to implement different ones of elements 112, 114, 116 and 118 or portions thereof.


At least portions of elements 112, 114, 116 and 118 may be implemented at least in part in the form of software that is stored in memory and executed by a processor.


It is to be understood that the particular set of elements shown in FIG. 1 for automated delivery of cloud native application updates involving user devices 102 of computer network 100 is presented by way of illustrative example only, and in other embodiments additional or alternative elements may be used. Thus, another embodiment includes additional or alternative systems, devices and other network entities, as well as different arrangements of modules and other components. For example, in at least one embodiment, automated application update delivery system 105 and application database 106 can be on and/or part of the same processing platform.


An exemplary process utilizing elements 112, 114, 116 and 118 of an example automated application update delivery system 105 in computer network 100 will be described in more detail with reference to the flow diagram of FIG. 7.


Accordingly, at least one embodiment includes automated delivery of cloud native application updates, for example, to on-premise users and/or application deployments, using one or more user-connection gateways. For example, user-connection gateways can include virtual multi-way connections between customers or other users and enterprises and/or application developers. Such a user-connection gateway can be installed by and/or for a user on-premise to establish connectivity of the on-premise user environment with an enterprise backend. In an example embodiment, each application deployed from the backend to an on-premise user environment would include a user-connection gateway, which can be configured to have a direct connection with the backend and/or proxied through one or more additional gateways.


As used herein, an “on-premise” user environment can include, for example, a customer or other user data center which includes one or more computing devices (e.g., servers, switches, power distribution units (PDUs), etc.), an isolated location which provides physical security of the user environment and network security of the computing environment, etc.


One or more embodiments includes utilizing such a secure conduit between an on-premise user environment and an enterprise backend enables multiple capabilities to be automated between the two (or more) entities. For example, the enterprise can obtain and/or collect telemetry data and configuration information from the on-premise user environment, e.g., to identify relevant patches and updates, as well as trends and/or best practices. Additionally, in one or more embodiments, the enterprise can also, for example, initiate automated issue detection and proactive case creation, implement self-service case initiation and management, enable remote technical support, and provide to the user automated access to software and/or application updates. Specifically, at least one embodiment includes generating a software update mechanism using such a user-connection gateway, wherein the software update mechanism includes cloud native application updates delivered automatically and/or continuously to on-premise user environments.


By way merely of illustration, architecture related to one or more user-connection gateways can include an MFT component (also referred to herein as a locker) used by an on-premise user environment to push binary files such as log bundles to attach to a critical event which will result in an automatic service request ticket creation, for example, via a case lifecycle management (CLM) service. The same MFT locker can also be used for pushing a software update from an enterprise backend to an on-premise user environment via a user-connection gateway conduit. Once data is received on such an enterprise backend, at least a portion of the data can be routed to a specific service based on the user-connection gateway protocol.


Additionally or alternatively, at least one embodiment can include implementing a different deployment topology wherein the user elects to have a single interface with the enterprise backend via a user-connection gateway and apply one or more policies offered by the user-connection gateway for data exchange.


In one or more embodiments, each application in a given backend can be identified by a set of unique attributes such as, for example, a SWID, a service tag, a serial number, an IB, etc. Such a backend can be designed, e.g., for multi-tenancy based at least in part on such identifying attributes. Also, in such an embodiment, each customer or other user can be provided a unique access key and one or more credentials to establish connectivity with at least one backend via one or more user-connection gateways.


As further detailed herein, at least one embodiment includes augmenting user-connection infrastructure with respect to a backend to include hosting a container registry (such as, e.g., Harbor registry) and adding pull and push gateways to proxy Docker commands for pulling and pushing container images to the registry. Such an embodiment also includes generating and/or adding a CUP to allow software and/or product teams to define and manage applications. The CUP provides a web portal for software teams to create, update, and/or delete versioned application updates. An application in CUP can be comprised of a manifest file and a binary package.


In one or more embodiments, a CUP manifest file contains a list of packages available for download along with the metadata for each package (e.g., in a JavaScript object notation (JSON) format), such as depicted, for example, in FIG. 3. Such a package is defined as the software package that is displayed to the user as available for download. The metadata provide relevant information to the customer or other user prior to downloading the full package. By way of example, a package can be associated with a single file for download and/or associated with multiple files to be downloaded together. In at least one embodiment, the CUP manifest file is unique to each product and is assigned based at least in part on the product's serial number, which could be a SWID or other means of identifying information.


A CUP manifest file can be updated by a corresponding CUP, for example, anytime anything changes for an assigned package such as when a system updates to a newer version of the product, when a package is assigned to a system through a rollout, when a package is assigned to a system from an external portal, when the metadata change for a package that has already been assigned to a given system, when a package is disabled that is assigned to a given system, etc.



FIG. 2 shows architecture for a common update platform in an illustrative embodiment. By way of illustration, FIG. 2 depicts an application 201 with a user-connection gateway module within and/or resident on user device 202. FIG. 2 also depicts automated application update delivery system 205, which includes CUP 212, backend services component 214, user-connection gateway 216, and MFT component 218. Additionally, an example workflow carried out among these noted components is illustrated in FIG. 2. Specifically, CUP 212 updates one or more packages 226 within MFT component 218 (e.g., uploads a new application update/version to MFT component 218 and/or deletes a previous update/version from MFT component 218) and also sends a manifest file 220 (including metadata JSON) as an event to backend services component 214. More specifically, in one or more embodiments, the manifest is being sent as a message through secure remote services. The backend services component 214 then sends a change notice 222 in connection with a request for remote action on user device 202 to user-connection gateway 216. In one or more embodiments, the change notice 222 indicates that there is a new manifest to retrieve. Also, the request can be sent in the form of a keepalive message 224 (i.e., a message sent between devices (such as, e.g., system 205 and user device 202) to determine that a connection between the devices is functional).


As also illustrated in FIG. 2, user device 202 (via application 201) sends a heartbeat message (i.e., a message indicating that the communication link between user device 202 and system 205 is functioning properly) to user-connection gateway 216, which then responds to the heartbeat message with additional data indicating that the product has a new manifest. User device 202 (via application 201) then requests the manifest 220 from backend services component 214, and the manifest 220 payload is sent by backend services component 214 to application 201. Subsequently, application 201 downloads the update package 226 on demand from MFT component 218.



FIG. 3 shows an example code snippet for a common update platform manifest file in an illustrative embodiment. In this embodiment, example code snippet 300 is executed by or under the control of at least one processing system and/or device. For example, the example code snippet 300 may be viewed as comprising a portion of a software implementation of at least part of automated application update delivery system 105 of the FIG. 1 embodiment.


The example code snippet 300 illustrates metadata that can be displayed in an update notification to the customer or other user to provide details of at least one available update. Additionally, such outputs can be generated and/or displayed without the customer or other user having to download the actual update package(s).


It is to be appreciated that this particular example code snippet shows just one example implementation of a portion of a common update platform manifest file, and alternative implementations of the process can be used in other embodiments.


In one or more embodiments, a CUP and user-connection gateway integration allows automated and/or continuous delivery of application updates from at least one backend to at least one on-premise user environment (e.g., a product downloaded on a user device on-premise). A user-connection gateway module running within the product can obtain and/or receive a new CUP manifest file as part of a keepalive response and informs the product that a new version of the application is available for download. The user-connection gateway can begin downloading packages in the background to stage the update(s). Additionally, the product notifies the customer or other user via a user interface (UI) that an update is available, and when the customer or other user selects the upgrade (e.g., clicks on a prompt) in the UI, the product initiates a rolling upgrade of the application. At the end of the process, the product notifies the customer or other user via the UI that the upgrade was completed or failed. Also, as used herein, a product can refer to an application.



FIG. 4 shows an example workflow in an illustrative embodiment. By way of illustration, FIG. 4 depicts an example workflow for a use case involving a user opting-in to a direct support assistance offering from an enterprise. As detailed herein, one or more embodiments including leveraging a CUP for automated and/or continuous delivery of cloud native applications and/or application updates. A cloud native application is typically comprised of manifest files and/or helm charts and one or more container images. Also, in at least one embodiment, the CUP package for a cloud native application can include a tar archive of manifest files (i.e., a collection of manifest files) and/or one or more Helm charts (i.e., Kubernetes YAML (or some other human-readable data-serialization language) manifests combined into a single package). The CUP manifest file can represent, in such an embodiment, relevant application metadata for the purpose of support assistance integration.


Referring again to FIG. 4, an application development system 440 (e.g., a product team and/or an integrated continuous integration/continuous deployment (Cl/CD) environment) can push a cloud native application package (e.g. one or more Helm charts) along with a CUP manifest file via CUP 412 to produce a new version of and/or update to a given application. In one or more embodiments, the application package (e.g., YAML manifest and/or charts) refers to a set of container images (e.g., open container initiative (OCI) images) which the application development system 440 can push separately to a container registry 444 via an internal push gateway 442 (e.g., a nginx web server). In at least one embodiment, push gateway 442 is a Docker proxy implementing Docker push commands to allow application development system 440 to publish a container image to container registry 444. Similarly, in such an embodiment, pull gateway 446 is a Docker proxy implementing Docker pull commands to allow application programming interface (API) 450 to download a container image from container registry 444.


As also depicted in FIG. 4, user-connection gateway 416 (which can, for example, be implemented in conjunction and/or in combination with a backend services component, and which can also be referred to as a service gateway) can obtain and/or receive a new CUP manifest file from CUP 412 in connection with a keepalive communication (from user device 402). User-connection gateway 416 can also communicate with application development system 440 regarding available updates to one or more applications. Additionally or alternatively, in an example embodiment such as depicted in FIG. 4, a user-connection gateway module can be embedded within API 450.


With respect to user device 402 (which can include, for example, a Kubernetes platform), an install operator 448 (running, e.g., as part of a given application), obtains a notification from user-connection gateway 416 of a new package and downloads the package via API 450 from MFT component 418. The install operator 448 deploys the package using one or more package native commands. For example, if the package is a Helm chart, then the install operator 448 can implement a command such as “$ helm install -f myvalues.yaml mypackage./package.” If, for example, the package is a YAML file for a Docker Swarm, the install operator 448 can run a Docker command to deploy the application. Additionally, the install operator 448 can configure a container orchestration engine to add the user-connection gateway 416 as the local container registry. In such an embodiment, the user-connection gateway 416 is modified to proxy Docker pull commands, via pull gateway 446, to container registry 444 hosted, for example, by an enterprise and/or application development backend. As a result, the package of native install commands (e.g., Helm install) works efficiently to deploy containers because the package has access to the container registry via user-connection gateway 416. Also, if enough storage is available, user-connection gateway 416 can be configured to cache container images locally to avoid downloading all dependencies for every incremental update of the given application.



FIG. 5 shows an example workflow in an illustrative embodiment. By way of illustration, FIG. 5 depicts an example workflow for a use case involving an enterprise user opting-in to a support assistance offering from an enterprise. For example, in connection with the embodiment illustrated in FIG. 5, an enterprise customer or other user may have multiple enterprise products running in their on-premise environment. In such contexts, at least one embodiment can include leveraging an additional user-connection gateway 516-2 to aggregate enterprise backend communications from multiple products (including, e.g., product(s) 552).


It is noted and to be appreciated that with the exception of product(s) 552 and user-connection gateway 516-2, the elements (i.e., application development system 540, push gateway 542, container registry 544, pull gateway 546, CUP 512, MFT component 518, user-connection gateway 516-1, user device 502, install operator 548, and API 550) depicted in FIG. 5 and their role(s) and/or functionality in the techniques illustrated therein are the same as those depicted in FIG. 4.


That said, the example embodiment depicted in FIG. 5 differs from the example embodiment depicted in FIG. 4 in that user-connection gateway 516-1 is configured to proxy Docker pull commands via user-connection gateway 516-2, wherein the user-connection gateway 516-2 is a virtual appliance (e.g., a virtual machine (VM)) modified to cache container images locally to expedite the Docker pull of the same image(s) by multiple products (including, e.g., product(s) 552).



FIG. 6 shows an example workflow in an illustrative embodiment. By way of illustration, FIG. 6 depicts an example workflow for a use case involving a user opting out of a direct support assistance offering from an enterprise. As shown in FIG. 6, if a customer or other user chooses not to connect with an enterprise backend and opts-out of support assistance integration, API 650 can be configured to point application development system 640 to perform offline delivery of an application and/or update thereof to a local storage containing docker images and/or to a local container registry 660 hosted by the customer or other user. With respect to the install operator 648 of user device 602, the interface with API 650 is similar to the embodiments described above in connection with FIG. 4 and FIG. 5.


It is also to be appreciated that the elements depicted, for example, in FIG. 4, FIG. 5, and FIG. 6 can be modified in one or more embodiments. For instance, in one such embodiment, a user-connection gateway module can be embedded in an API (e.g., element 450 in FIG. 4) which has a direct connection to a user-connection gateway and/or services gateway (e.g., element 416 in FIG. 4). Additionally or alternatively, another such embodiment can include using a dedicated user-connection gateway (e.g., element 516-2 in FIG. 5) in addition to an API with an embedded user-connection gateway module (e.g., element 550 in FIG. 5). In such a configuration, API 550 does not have direct connection with user-connection gateway 516-1, but does have a connection via user-connection gateway 516-2. Such a configuration is required, for example, when multiples of user device 502 are present, and the customer or other user does not want each device to have direct connection with user-connection gateway 516-1. In such an embodiment, user-connection gateway 516-2 can provide caching and policy features that a customer or other user can leverage to manage multiples of user device 502. Additionally or alternatively, yet another such embodiment can include enabling a customer or other user to opt-out of a user-Connection gateway for an air-gapped environment. As illustrated, for example, in FIG. 6, in such an embodiment, API 650 is configured to connect to a customer or other user-hosted registry 660. In any of the above-noted configurations, the install operator (e.g., elements 448, 548, and 648 in FIG. 4, FIG. 5, and FIG. 6, respectively) maintains a consistent interface with the API (e.g., elements 450, 550, and 650 in FIG. 4, FIG. 5, and FIG. 6, respectively).



FIG. 7 is a flow diagram of a process for automated delivery of cloud native application updates using one or more user-connection gateways in an illustrative embodiment. It is to be understood that this particular process is only an example, and additional or alternative processes can be carried out in other embodiments.


In this embodiment, the process includes steps 700 through 710. These steps are assumed to be performed by the automated application update delivery system 105 utilizing its elements 112, 114, 116 and 118.


Step 700 includes generating at least one application update package pertaining to at least one cloud native application. In at least one embodiment, generating the at least one application update package includes validating each container image related to a cloud native application update by scanning each container image for one or more security vulnerabilities.


As used herein, in accordance with one or more embodiments, an application update package can include binaries of one or more microservices that need to be deployed in a given data center and/or cloud computing environment to provide services, for example, through a web UI or representational state transfer (REST) API to at least one end user. Additionally, an application update package can also include a Helm chart that describes the configuration parameters in a declarative format (e.g., YAML) for at least one specific environment (e.g., a given cloud computing environment). For example, such configuration parameters can include a uniform resource locator (URL) of Docker images to launch a microservice as one or more Docker containers, a persistent volume to be mapped to a given Docker container, one or more configuration files to be mounted inside a given Docker container, a version number and name of a given microservice, etc.


By way merely of example, an illustrative application update package can include a set of Docker images (e.g., OCI images) and one or more Helm charts. For instance, such an example application update package can include a Docker image for a nginx web server and a Helm chart, a Docker image for a database and a Helm chart, a Docker image for another Java, Python, and/or Go-based microservice and a Helm chart, etc.


Step 702 includes generating at least one manifest file comprising identifying information for the at least one application update package and metadata pertaining to implementing at least a portion of the at least one application update package. In one or more embodiments, the metadata associated with the at least one application update package include metadata in a JavaScript object notation format. Additionally or alternatively, the identifying information for the at least one application update package can include one or more of a software unique identifier for each of the at least one cloud native application, a service tag for each of the at least one cloud native application, a serial number for each of the at least one cloud native application, and install base information for each of the at least one cloud native application.


Also, as used herein, in accordance with one or more embodiments, a manifest file includes a file describing a release version of the given application. An example manifest file can include information such as an identifier of the application, the version of the application, the release date of the application, a knowledgebase URL, file size of the application, etc. Also, in at least one embodiment, an update notification presented to the user would include information such as noted above.


Step 704 includes outputting, to at least one user device via one or more user-connection gateways, a request for automated remote action on at least one application within a user environment associated with the at least one user device, wherein the remote action relates to the at least one application update package. In at least one embodiment, the request for remote action includes a keepalive message associated with determining that a connection with the at least one user device is functional. Also, in one or more embodiments, the one or more user-connection gateways include one or more virtual multi-way connections between at least one remote user device and at least one enterprise backend.


Step 706 includes processing, via the one or more user-connection gateways, a response from the at least one user device approving the request for automated remote action. Step 708 includes outputting the at least one manifest file to the user environment associated with the at least one user device. Step 710 includes initiating, in accordance with the at least one manifest file, automated implementation of the at least one application update package to the at least one application within the user environment. In at least one embodiment, initiating automated implementation of the at least one application update package includes initiating automated implementation of one or more of at least one artificial intelligence-machine learning model, at least one virtual application, and at least one container application.


The techniques depicted in FIG. 7 can also include obtaining, from the user environment, one or more of telemetry data and configuration information, as well as determining, for inclusion in the at least one application update package and based at least in part on the obtained telemetry data and/or obtained configuration information, at least one of one or more cloud native application patches and one or more cloud native application updates. Additionally or alternatively, one or more embodiments can include outputting, to the at least one user device, at least one unique access key and one or more credentials for use in establishing connectivity via the one or more user-connection gateways. Also, at least one embodiment can include caching one or more container images related to one or more cloud native application updates common across one or more applications implemented within the user environment.


Accordingly, the particular processing operations and other functionality described in conjunction with the flow diagram of FIG. 7 are presented by way of illustrative example only, and should not be construed as limiting the scope of the disclosure in any way. For example, the ordering of the process steps may be varied in other embodiments, or certain steps may be performed concurrently with one another rather than serially.


The above-described illustrative embodiments provide significant advantages relative to conventional approaches. For example, some embodiments are configured to provide automated delivery of cloud native application updates using one or more user-connection gateways. These and other embodiments can effectively overcome problems associated with error-prone and resource-intensive procedures to provide updates to application deployments on user environments.


It is to be appreciated that the particular advantages described above and elsewhere herein are associated with particular illustrative embodiments and need not be present in other embodiments. Also, the particular types of information processing system features and functionality as illustrated in the drawings and described above are exemplary only, and numerous other arrangements may be used in other embodiments.


As mentioned previously, at least portions of the information processing system 100 can be implemented using one or more processing platforms. A given such processing platform comprises at least one processing device comprising a processor coupled to a memory. The processor and memory in some embodiments comprise respective processor and memory elements of a virtual machine or container provided using one or more underlying physical machines. The term “processing device” as used herein is intended to be broadly construed so as to encompass a wide variety of different arrangements of physical processors, memories and other device components as well as virtual instances of such components. For example, a “processing device” in some embodiments can comprise or be executed across one or more virtual processors. Processing devices can therefore be physical or virtual and can be executed across one or more physical or virtual processors. It should also be noted that a given virtual device can be mapped to a portion of a physical one.


Some illustrative embodiments of a processing platform used to implement at least a portion of an information processing system comprises cloud infrastructure including virtual machines implemented using a hypervisor that runs on physical infrastructure. The cloud infrastructure further comprises sets of applications running on respective ones of the virtual machines under the control of the hypervisor. It is also possible to use multiple hypervisors each providing a set of virtual machines using at least one underlying physical machine. Different sets of virtual machines provided by one or more hypervisors may be utilized in configuring multiple instances of various components of the system.


These and other types of cloud infrastructure can be used to provide what is also referred to herein as a multi-tenant environment. One or more system components, or portions thereof, are illustratively implemented for use by tenants of such a multi-tenant environment.


As mentioned previously, cloud infrastructure as disclosed herein can include cloud-based systems. Virtual machines provided in such systems can be used to implement at least portions of a computer system in illustrative embodiments.


In some embodiments, the cloud infrastructure additionally or alternatively comprises a plurality of containers implemented using container host devices. For example, as detailed herein, a given container of cloud infrastructure illustratively comprises a Docker container or other type of Linux Container (LXC). The containers are run on virtual machines in a multi-tenant environment, although other arrangements are possible. The containers are utilized to implement a variety of different types of functionality within the system 100. For example, containers can be used to implement respective processing devices providing compute and/or storage services of a cloud-based system. Again, containers may be used in combination with other virtualization infrastructure such as virtual machines implemented using a hypervisor.


Illustrative embodiments of processing platforms will now be described in greater detail with reference to FIGS. 8 and 9. Although described in the context of system 100, these platforms may also be used to implement at least portions of other information processing systems in other embodiments.



FIG. 8 shows an example processing platform comprising cloud infrastructure 800. The cloud infrastructure 800 comprises a combination of physical and virtual processing resources that are utilized to implement at least a portion of the information processing system 100. The cloud infrastructure 800 comprises multiple VMs and/or container sets 802-1, 802-2, . . . 802-L implemented using virtualization infrastructure 804. The virtualization infrastructure 804 runs on physical infrastructure 805, and illustratively comprises one or more hypervisors and/or operating system level virtualization infrastructure. The operating system level virtualization infrastructure illustratively comprises kernel control groups of a Linux operating system or other type of operating system.


The cloud infrastructure 800 further comprises sets of applications 810-1, 810-2, . . . 810-L running on respective ones of the VMs/container sets 802-1, 802-2, . . . 802-L under the control of the virtualization infrastructure 804. The VMs/container sets 802 comprise respective VMs, respective sets of one or more containers, or respective sets of one or more containers running in VMs. In some implementations of the FIG. 8 embodiment, the VMs/container sets 802 comprise respective VMs implemented using virtualization infrastructure 804 that comprises at least one hypervisor.


A hypervisor platform may be used to implement a hypervisor within the virtualization infrastructure 804, wherein the hypervisor platform has an associated virtual infrastructure management system. The underlying physical machines comprise one or more distributed processing platforms that include one or more storage systems.


In other implementations of the FIG. 8 embodiment, the VMs/container sets 802 comprise respective containers implemented using virtualization infrastructure 804 that provides operating system level virtualization functionality, such as support for Docker containers running on bare metal hosts, or Docker containers running on VMs. The containers are illustratively implemented using respective kernel control groups of the operating system.


As is apparent from the above, one or more of the processing modules or other components of system 100 may each run on a computer, server, storage device or other processing platform element. A given such element is viewed as an example of what is more generally referred to herein as a “processing device.” The cloud infrastructure 800 shown in FIG. 8 may represent at least a portion of one processing platform. Another example of such a processing platform is processing platform 900 shown in FIG. 9.


The processing platform 900 in this embodiment comprises a portion of system 100 and includes a plurality of processing devices, denoted 902-1, 902-2, 902-3, . . . 902-K, which communicate with one another over a network 904.


The network 904 comprises any type of network, including by way of example a global computer network such as the Internet, a WAN, a LAN, a satellite network, a telephone or cable network, a cellular network, a wireless network such as a Wi-Fi or WiMAX network, or various portions or combinations of these and other types of networks.


The processing device 902-1 in the processing platform 900 comprises a processor 910 coupled to a memory 912.


The processor 910 comprises a microprocessor, a microcontroller, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA) or other type of processing circuitry, as well as portions or combinations of such circuitry elements.


The memory 912 comprises random access memory (RAM), read-only memory (ROM) or other types of memory, in any combination. The memory 912 and other memories disclosed herein should be viewed as illustrative examples of what are more generally referred to as “processor-readable storage media” storing executable program code of one or more software programs.


Articles of manufacture comprising such processor-readable storage media are considered illustrative embodiments. A given such article of manufacture comprises, for example, a storage array, a storage disk or an integrated circuit containing RAM, ROM or other electronic memory, or any of a wide variety of other types of computer program products. The term “article of manufacture” as used herein should be understood to exclude transitory, propagating signals. Numerous other types of computer program products comprising processor-readable storage media can be used.


Also included in the processing device 902-1 is network interface circuitry 914, which is used to interface the processing device with the network 904 and other system components, and may comprise conventional transceivers.


The other processing devices 902 of the processing platform 900 are assumed to be configured in a manner similar to that shown for processing device 902-1 in the figure.


Again, the particular processing platform 900 shown in the figure is presented by way of example only, and system 100 may include additional or alternative processing platforms, as well as numerous distinct processing platforms in any combination, with each such platform comprising one or more computers, servers, storage devices or other processing devices.


For example, other processing platforms used to implement illustrative embodiments can comprise different types of virtualization infrastructure, in place of or in addition to virtualization infrastructure comprising virtual machines. Such virtualization infrastructure illustratively includes container-based virtualization infrastructure configured to provide Docker containers or other types of LXCs.


As another example, portions of a given processing platform in some embodiments can comprise converged infrastructure.


It should therefore be understood that in other embodiments different arrangements of additional or alternative elements may be used. At least a subset of these elements may be collectively implemented on a common processing platform, or each such element may be implemented on a separate processing platform.


Also, numerous other arrangements of computers, servers, storage products or devices, or other components are possible in the information processing system 100. Such components can communicate with other elements of the information processing system 100 over any type of network or other communication media.


For example, particular types of storage products that can be used in implementing a given storage system of a distributed processing system in an illustrative embodiment include all-flash and hybrid flash storage arrays, scale-out all-flash storage arrays, scale-out NAS clusters, or other types of storage arrays. Combinations of multiple ones of these and other storage products can also be used in implementing a given storage system in an illustrative embodiment.


It should again be emphasized that the above-described embodiments are presented for purposes of illustration only. Many variations and other alternative embodiments may be used. Also, the particular configurations of system and device elements and associated processing operations illustratively shown in the drawings can be varied in other embodiments. Thus, for example, the particular types of processing devices, modules, systems and resources deployed in a given embodiment and their respective configurations may be varied. Moreover, the various assumptions made above in the course of describing the illustrative embodiments should also be viewed as exemplary rather than as requirements or limitations of the disclosure. Numerous other alternative embodiments within the scope of the appended claims will be readily apparent to those skilled in the art.

Claims
  • 1. A computer-implemented method comprising: generating at least one application update package pertaining to at least one cloud native application;generating at least one manifest file comprising identifying information for the at least one application update package and metadata pertaining to implementing at least a portion of the at least one application update package, wherein the identifying information comprises one or more of at least one software unique identifier for the at least one cloud native application, at least one service tag for the at least one cloud native application, at least one serial number for the at least one cloud native application, and install base information for the at least one cloud native application;outputting, to at least one user device, at least one unique access key and one or more credentials for use in establishing connectivity via one or more user-connection gateways;outputting, to the at least one user device via the one or more user-connection gateways, (i) a request for automated remote action on at least one version of the at least one cloud native application implemented within at least one on-premise user environment associated with the at least one user device, and (ii) a notice indicating that the at least one manifest file is available, wherein the remote action relates to the at least one application update package, and wherein the request comprises at least one message associated with determining that a connection with the at least one user device is functional;processing, via the one or more user-connection gateways, a response from the at least one user device approving the request for automated remote action;outputting, based at least in part on processing the response, the at least one manifest file to the at least one on-premise user environment associated with the at least one user device; andinitiating, in accordance with the at least one manifest file, automated implementation of the at least one application update package to the at least one version of the at least one cloud native application implemented within the at least one on-premise user environment;wherein the method is performed by at least one processing device comprising a processor coupled to a memory.
  • 2. The computer-implemented method of claim 1, further comprising: obtaining, from the at least one on-premise user environment, one or more of telemetry data and configuration information.
  • 3. The computer-implemented method of claim 2, further comprising: determining, for inclusion in the at least one application update package and based at least in part on the obtained telemetry data and/or obtained configuration information, at least one of one or more cloud native application patches and one or more cloud native application updates.
  • 4. The computer-implemented method of claim 1, further comprising: caching one or more container images related to one or more cloud native application updates common across one or more versions of the at least one cloud native application implemented within the at least one on-premise user environment.
  • 5. The computer-implemented method of claim 4, wherein generating the at least one application update package comprises validating each container image related to a cloud native application update by scanning each container image for one or more security vulnerabilities.
  • 6. The computer-implemented method of claim 1, wherein the metadata associated with the at least one application update package comprise metadata in a JavaScript object notation format.
  • 7. The computer-implemented method of claim 1, wherein the one or more user-connection gateways comprise one or more virtual multi-way connections between at least one remote user device and at least one enterprise backend.
  • 8. The computer-implemented method of claim 1, wherein initiating automated implementation of the at least one application update package comprises initiating automated implementation of one or more of at least one artificial intelligence-machine learning model, at least one virtual application, and at least one container application.
  • 9. A non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device: to generate at least one application update package pertaining to at least one cloud native application;to generate at least one manifest file comprising identifying information for the at least one application update package and metadata pertaining to implementing at least a portion of the at least one application update package, wherein the identifying information comprises one or more of at least one software unique identifier for the at least one cloud native application, at least one service tag for the at least one cloud native application, at least one serial number for the at least one cloud native application, and install base information for the at least one cloud native application;to output, to at least one user device, at least one unique access key and one or more credentials for use in establishing connectivity via one or more user-connection gateways;to output, to the at least one user device via the one or more user-connection gateways, (i) a request for automated remote action on at least one version of the at least one cloud native application implemented within at least one on-premise user environment associated with the at least one user device, and (ii) a notice indicating that the at least one manifest file is available, wherein the remote action relates to the at least one application update package, and wherein the request comprises at least one message associated with determining that a connection with the at least one user device is functional;to process, via the one or more user-connection gateways, a response from the at least one user device approving the request for automated remote action;to output, based at least in part on processing the response, the at least one manifest file to the at least one on-premise user environment associated with the at least one user device; andto initiate, in accordance with the at least one manifest file, automated implementation of the at least one application update package to the at least one version of the at least one cloud native application implemented within the at least one on-premise user environment.
  • 10. The non-transitory processor-readable storage medium of claim 9, wherein the program code when executed by the at least one processing device further causes the at least one processing device: to obtain, from the at least one on-premise user environment, one or more of telemetry data and configuration information.
  • 11. The non-transitory processor-readable storage medium of claim 10, wherein the program code when executed by the at least one processing device further causes the at least one processing device: to determine, for inclusion in the at least one application update package and based at least in part on the obtained telemetry data and/or obtained configuration information, at least one of one or more cloud native application patches and one or more cloud native application updates.
  • 12. The non-transitory processor-readable storage medium of claim 9, wherein the program code when executed by the at least one processing device further causes the at least one processing device: to cache one or more container images related to one or more cloud native application updates common across one or more versions of the at least one cloud native application implemented within the at least one on-premise user environment.
  • 13. An apparatus comprising: at least one processing device comprising a processor coupled to a memory;the at least one processing device being configured: to generate at least one application update package pertaining to at least one cloud native application;to generate at least one manifest file comprising identifying information for the at least one application update package and metadata pertaining to implementing at least a portion of the at least one application update package, wherein the identifying information comprises one or more of at least one software unique identifier for the at least one cloud native application, at least one service tag for the at least one cloud native application, at least one serial number for the at least one cloud native application, and install base information for the at least one cloud native application;to output, to at least one user device, at least one unique access key and one or more credentials for use in establishing connectivity via one or more user-connection gateways;to output, to the at least one user device via the one or more user-connection gateways, (i) a request for automated remote action on at least one version of the at least one cloud native application implemented within at least one on-premise user environment associated with the at least one user device, and (ii) a notice indicating that the at least one manifest file is available, wherein the remote action relates to the at least one application update package, and wherein the request comprises at least one message associated with determining that a connection with the at least one user device is functional;to process, via the one or more user-connection gateways, a response from the at least one user device approving the request for automated remote action;to output, based at least in part on processing the response, the at least one manifest file to the at least one on-premise user environment associated with the at least one user device; andto initiate, in accordance with the at least one manifest file, automated implementation of the at least one application update package to the at least one version of the at least one cloud native application implemented within the at least one on-premise user environment.
  • 14. The apparatus of claim 13, wherein the at least one processing device is further configured: to obtain, from the at least one on-premise user environment, one or more of telemetry data and configuration information.
  • 15. The apparatus of claim 14, wherein the at least one processing device is further configured: to determine, for inclusion in the at least one application update package and based at least in part on the obtained telemetry data and/or obtained configuration information, at least one of one or more cloud native application patches and one or more cloud native application updates.
  • 16. The apparatus of claim 13, wherein the at least one processing device is further configured: to cache one or more container images related to one or more cloud native application updates common across one or more versions of the at least one cloud native application implemented within the at least one on-premise user environment.
  • 17. The apparatus of claim 16, wherein generating the at least one application update package comprises validating each container image related to a cloud native application update by scanning each container image for one or more security vulnerabilities.
  • 18. The apparatus of claim 13, wherein initiating automated implementation of the at least one application update package comprises initiating automated implementation of one or more of at least one artificial intelligence-machine learning model, at least one virtual application, and at least one container application.
  • 19. The apparatus of claim 13, wherein the metadata associated with the at least one application update package comprise metadata in a JavaScript object notation format.
  • 20. The apparatus of claim 13, wherein the one or more user-connection gateways comprise one or more virtual multi-way connections between at least one remote user device and at least one enterprise backend.
US Referenced Citations (385)
Number Name Date Kind
8639921 Sorenson, III Jan 2014 B1
8639989 Sorenson, III Jan 2014 B1
9036509 Addepalli May 2015 B1
9325791 Blahaerath Apr 2016 B1
9590872 Jagtap Mar 2017 B1
9604651 Amireddy Mar 2017 B1
9612815 Jagtap Apr 2017 B1
9626176 Thomas Apr 2017 B2
9635132 Lin Apr 2017 B1
9665359 Thomas May 2017 B2
9680967 Kim Jun 2017 B2
9754303 Jagtap Sep 2017 B1
9781122 Wilson Oct 2017 B1
9830142 Thomas Nov 2017 B2
9891907 Searle Feb 2018 B2
9922322 Flurscheim Mar 2018 B2
9972005 Wong May 2018 B2
10026064 Thomas Jul 2018 B2
10049353 Lopez Aug 2018 B2
10057243 Kumar Aug 2018 B1
10250438 Asenjo Apr 2019 B2
10419540 Arora Sep 2019 B2
10452375 Nightingale Oct 2019 B1
10470059 Annambhotla Nov 2019 B1
10484334 Lee Nov 2019 B1
10503493 Narayanan Dec 2019 B2
10606576 Tung Mar 2020 B1
10635643 Muthuswamy Apr 2020 B2
10705823 Pitre Jul 2020 B2
10831452 Hunter Nov 2020 B1
10841152 Humphreys Nov 2020 B1
10855619 Andrews Dec 2020 B1
10887672 Wu Jan 2021 B1
10922284 Venkatasubramanian Feb 2021 B1
10924275 Kumar Feb 2021 B1
10938954 Lee et al. Mar 2021 B2
10938957 Rajagopalan Mar 2021 B1
10963565 Xu Mar 2021 B1
10990369 Natanzon Apr 2021 B2
11003630 Demaris May 2021 B2
11082361 Laplanche Aug 2021 B2
11119754 Sun Sep 2021 B1
11190589 Ron Nov 2021 B1
11196785 Cenzano Ferret Dec 2021 B2
11218421 Khan Jan 2022 B1
11316794 Savguira Apr 2022 B1
11327992 Batsakis May 2022 B1
11372634 Gabrielson Jun 2022 B1
11409709 Capello Aug 2022 B1
11418851 Gerstl Aug 2022 B1
11431497 Liguori Aug 2022 B1
11435810 Krishnakumar Sep 2022 B1
11487513 Hanson Nov 2022 B1
11522812 Thoppai Dec 2022 B1
11544046 Zhang Jan 2023 B1
11550903 Epstein Jan 2023 B1
11573816 Featonby Feb 2023 B1
11593477 Thimmegowda Feb 2023 B1
11640374 Shaw May 2023 B2
11662928 Kumar May 2023 B1
11665645 Krishnakumar May 2023 B2
11789728 Dasa Oct 2023 B2
20030055985 Corb Mar 2003 A1
20100061250 Nugent Mar 2010 A1
20110145272 Grzybowski Jun 2011 A1
20110145591 Grzybowski Jun 2011 A1
20110145817 Grzybowski Jun 2011 A1
20120110173 Luna May 2012 A1
20120159468 Joshi Jun 2012 A1
20120266156 Spivak Oct 2012 A1
20120266168 Spivak Oct 2012 A1
20120297190 Shen Nov 2012 A1
20130007183 Sorenson, III Jan 2013 A1
20130007854 Sorenson, III Jan 2013 A1
20130054863 Imes Feb 2013 A1
20130097687 Storm Apr 2013 A1
20130144879 Kuehnel Jun 2013 A1
20130227089 McLeod Aug 2013 A1
20130275623 Stoilov Oct 2013 A1
20130283254 Ocher Oct 2013 A1
20130305039 Gauda Nov 2013 A1
20130347094 Bettini Dec 2013 A1
20140025424 Juillard Jan 2014 A1
20140033188 Beavers Jan 2014 A1
20140052330 Mitchell Feb 2014 A1
20140075035 Revanuru Mar 2014 A1
20140075426 West Mar 2014 A1
20140075427 Pallamreddy Mar 2014 A1
20140075520 Subramanian Mar 2014 A1
20140146055 Bala May 2014 A1
20140149492 Ananthanarayanan May 2014 A1
20140149494 Markley May 2014 A1
20140149591 Bhattacharya May 2014 A1
20140149983 Bonilla May 2014 A1
20140195653 Alexander Jul 2014 A1
20140208314 Jeswani Jul 2014 A1
20140245423 Lee Aug 2014 A1
20140274408 Dave Sep 2014 A1
20140351871 Bomfim Nov 2014 A1
20150007094 LaTurner Jan 2015 A1
20150033305 Shear Jan 2015 A1
20150039556 Mackenzie Feb 2015 A1
20150058435 Chumbley Feb 2015 A1
20150088934 Beckman Mar 2015 A1
20150089673 Beckman Mar 2015 A1
20150235042 Salehpour Aug 2015 A1
20150242198 Tobolski Aug 2015 A1
20150242237 Spivak Aug 2015 A1
20150276208 Maturana Oct 2015 A1
20150277399 Maturana Oct 2015 A1
20150277404 Maturana Oct 2015 A1
20150278354 Morrey Oct 2015 A1
20150281233 Asenjo Oct 2015 A1
20150281319 Maturana Oct 2015 A1
20150355895 Giammaria Dec 2015 A1
20150373149 Lyons Dec 2015 A1
20150381662 Nair Dec 2015 A1
20160021197 Pogrebinsky Jan 2016 A1
20160077869 Grueneberg Mar 2016 A1
20160094427 Talat Mar 2016 A1
20160098262 Spivak Apr 2016 A1
20160098263 Spivak Apr 2016 A1
20160117160 Parthasarathy Apr 2016 A1
20160117161 Parthasarathy Apr 2016 A1
20160117162 Searle Apr 2016 A1
20160191509 Bestler Jun 2016 A1
20160196131 Searle Jul 2016 A1
20160196132 Searle Jul 2016 A1
20160212122 Carroll Jul 2016 A1
20160219043 Blanke Jul 2016 A1
20160238272 Imes Aug 2016 A1
20160285904 Ye Sep 2016 A1
20160291940 Searle Oct 2016 A1
20160291959 Searle Oct 2016 A1
20160294605 Searle Oct 2016 A1
20160294614 Searle Oct 2016 A1
20160321455 Deng Nov 2016 A1
20170041296 Ford Feb 2017 A1
20170046146 Jamjoom Feb 2017 A1
20170054760 Barton Feb 2017 A1
20170090912 Fuglsang Mar 2017 A1
20170124340 Chiu May 2017 A1
20170156149 Lin Jun 2017 A1
20170208053 Sanghamitra Jul 2017 A1
20170244754 Kinder Aug 2017 A1
20170244762 Kinder Aug 2017 A1
20170245280 Yi Aug 2017 A1
20170249132 Andrews Aug 2017 A1
20170331791 Wardell Nov 2017 A1
20170331802 Keshava Nov 2017 A1
20170331812 Lander Nov 2017 A1
20170331813 Lander Nov 2017 A1
20170331829 Lander Nov 2017 A1
20170331832 Lander Nov 2017 A1
20170364345 Fontoura Dec 2017 A1
20170364686 Stafford Dec 2017 A1
20180006913 Asenjo Jan 2018 A1
20180007069 Hunt Jan 2018 A1
20180034789 Gaydos Feb 2018 A1
20180039494 Lander Feb 2018 A1
20180039501 Jain Feb 2018 A1
20180041491 Gupta Feb 2018 A1
20180041515 Gupta Feb 2018 A1
20180063143 Wilson Mar 2018 A1
20180063594 Alexander Mar 2018 A1
20180075231 Subramanian Mar 2018 A1
20180077138 Bansal Mar 2018 A1
20180077144 Gangawane Mar 2018 A1
20180077219 Tan Mar 2018 A1
20180081983 Carru Mar 2018 A1
20180083826 Wilson Mar 2018 A1
20180083915 Medam Mar 2018 A1
20180083944 Vats Mar 2018 A1
20180083967 Subramanian Mar 2018 A1
20180083980 Bond Mar 2018 A1
20180089224 Muthuswamy Mar 2018 A1
20180114025 Cui Apr 2018 A1
20180130240 Mall May 2018 A1
20180137299 Porter May 2018 A1
20180167490 Morton Jun 2018 A1
20180181761 Sinha Jun 2018 A1
20180232223 Madrid Aug 2018 A1
20180248915 Beckman Aug 2018 A1
20180262388 Johnson Sep 2018 A1
20180307502 Crasta Oct 2018 A1
20180321934 Chaganti Nov 2018 A1
20180337914 Mohamad Abdul Nov 2018 A1
20180367314 Egner Dec 2018 A1
20180373434 Switzer Dec 2018 A1
20190007354 Bulut Jan 2019 A1
20190018394 Sayyarrodsari Jan 2019 A1
20190042228 Nolan Feb 2019 A1
20190044914 Kleiner Feb 2019 A1
20190050217 Tatourian Feb 2019 A1
20190050414 Maturana Feb 2019 A1
20190052551 Barczynski Feb 2019 A1
20190057218 Bhaskara Feb 2019 A1
20190058718 Pangeni Feb 2019 A1
20190064787 Maturana Feb 2019 A1
20190089809 Theebaprakasam Mar 2019 A1
20190095516 Srinivasan Mar 2019 A1
20190102162 Pitre Apr 2019 A1
20190102797 Yang Apr 2019 A1
20190107830 Duraisingh Apr 2019 A1
20190107831 Duraisingh Apr 2019 A1
20190107832 Strand Apr 2019 A1
20190108013 Duraisingh Apr 2019 A1
20190109725 Duraisingh Apr 2019 A1
20190109907 Duraisingh Apr 2019 A1
20190124144 Isci Apr 2019 A1
20190125361 Shelton, IV May 2019 A1
20190125454 Stokes May 2019 A1
20190125455 Shelton, IV May 2019 A1
20190125456 Shelton, IV May 2019 A1
20190125457 Parihar May 2019 A1
20190125458 Shelton, IV May 2019 A1
20190125459 Shelton, IV May 2019 A1
20190156028 Hay May 2019 A1
20190163912 Kumar May 2019 A1
20190171438 Franchitti Jun 2019 A1
20190188107 Alston Jun 2019 A1
20190197786 Molyneaux Jun 2019 A1
20190200977 Shelton, IV Jul 2019 A1
20190201136 Shelton, IV Jul 2019 A1
20190205317 Tobias Jul 2019 A1
20190206562 Shelton, IV Jul 2019 A1
20190206565 Shelton, IV Jul 2019 A1
20190207866 Pathak Jul 2019 A1
20190213104 Qadri Jul 2019 A1
20190230130 Beckman Jul 2019 A1
20190236282 Hulick, Jr. Aug 2019 A1
20190238598 Mohamad Abdul Aug 2019 A1
20190258782 Lerner Aug 2019 A1
20190265843 Zhao Aug 2019 A1
20190268420 Acharya Aug 2019 A1
20190306010 Medam Oct 2019 A1
20190306138 Carru Oct 2019 A1
20190312857 Lander Oct 2019 A1
20190319785 Kumar Oct 2019 A1
20190349213 Shive Nov 2019 A1
20190356693 Cahana Nov 2019 A1
20190361411 Park Nov 2019 A1
20190361412 Park Nov 2019 A1
20190394204 Bansal Dec 2019 A1
20200007530 Mohamad Abdul Jan 2020 A1
20200019471 Natanzon Jan 2020 A1
20200024047 McNannay Jan 2020 A1
20200074084 Dorrans Mar 2020 A1
20200082094 Mcallister Mar 2020 A1
20200082095 Mcallister Mar 2020 A1
20200097662 Hufsmith Mar 2020 A1
20200125858 Bauer Apr 2020 A1
20200177591 Pogrebinsky Jun 2020 A1
20200177652 Halepovic Jun 2020 A1
20200195525 Fitzer Jun 2020 A1
20200203021 Torrance Jun 2020 A1
20200213357 Levin Jul 2020 A1
20200222010 Howard Jul 2020 A1
20200250664 Kumar Aug 2020 A1
20200257514 Gadgil Aug 2020 A1
20200257518 Liedtke Aug 2020 A1
20200257700 Xu Aug 2020 A1
20200264860 Srinivasan Aug 2020 A1
20200265062 Srinivasan Aug 2020 A1
20200265168 Acun Aug 2020 A1
20200274900 Vaishnavi Aug 2020 A1
20200280568 Bratspiess Sep 2020 A1
20200285457 Meriac Sep 2020 A1
20200285461 Kumar Sep 2020 A1
20200287793 Buck Sep 2020 A1
20200319873 Kaartinen Oct 2020 A1
20200326931 Nadgowda Oct 2020 A1
20200327371 Sharma Oct 2020 A1
20200334027 Kalaskar Oct 2020 A1
20200364953 Simoudis Nov 2020 A1
20200366655 Sun Nov 2020 A1
20200371782 Baierlein Nov 2020 A1
20200372718 Molyneaux Nov 2020 A1
20200374121 Momchilov Nov 2020 A1
20200374136 Momchilov Nov 2020 A1
20200374225 Momchilov Nov 2020 A1
20200374284 Suresh Nov 2020 A1
20200374351 Momchilov Nov 2020 A1
20200379744 Bhupati Dec 2020 A1
20200379746 Shivashankara Dec 2020 A1
20200382365 Verma Dec 2020 A1
20200387357 Mathon Dec 2020 A1
20200405204 Howard Dec 2020 A1
20200410106 Nadgowda Dec 2020 A1
20200410766 Swaminathan Dec 2020 A1
20210020012 Shakedd Jan 2021 A1
20210021609 Smith Jan 2021 A1
20210027608 Shakedd Jan 2021 A1
20210064347 Junior et al. Mar 2021 A1
20210073282 Hunter Mar 2021 A1
20210081188 Rajagopalan Mar 2021 A1
20210081252 Bhargava Mar 2021 A1
20210084031 Lao Mar 2021 A1
20210089662 Muniswamy-Reddy Mar 2021 A1
20210089685 Cheruvu Mar 2021 A1
20210117251 Cristofi Apr 2021 A1
20210117859 Rogers Apr 2021 A1
20210133318 Andrews May 2021 A1
20210133329 Andrews May 2021 A1
20210133607 Stubbs May 2021 A1
20210136002 Chandran May 2021 A1
20210136082 Andrews May 2021 A1
20210138249 Howard May 2021 A1
20210160231 Kumar May 2021 A1
20210174952 Leong Jun 2021 A1
20210176210 Chan Jun 2021 A1
20210192867 Fang Jun 2021 A1
20210226987 Summers Jul 2021 A1
20210232439 Fong Jul 2021 A1
20210256833 Daoura Aug 2021 A1
20210303164 Grunwald Sep 2021 A1
20210334082 Su Oct 2021 A1
20210349706 Spivak Nov 2021 A1
20210351948 Lewis Nov 2021 A1
20210373873 Styles Dec 2021 A1
20210389954 Sommers Dec 2021 A1
20210397712 Gajananan Dec 2021 A1
20220019453 Okada Jan 2022 A1
20220027483 Hetzler Jan 2022 A1
20220036206 Vacchi Feb 2022 A1
20220040534 Imes Feb 2022 A1
20220075782 Hines Mar 2022 A1
20220075825 Helms Mar 2022 A1
20220078149 Hines Mar 2022 A1
20220078209 V Mar 2022 A1
20220078797 Helms Mar 2022 A1
20220083251 Saad Mar 2022 A1
20220091858 Chivukula Mar 2022 A1
20220095079 Volkerink Mar 2022 A1
20220104822 Shelton, IV Apr 2022 A1
20220131852 Sharma Apr 2022 A1
20220165146 Daoura May 2022 A1
20220188172 Gupta Jun 2022 A1
20220197620 Vihar Jun 2022 A1
20220198043 Kozlowski Jun 2022 A1
20220200806 Grobelny Jun 2022 A1
20220200972 Potlapally Jun 2022 A1
20220200989 Andrews Jun 2022 A1
20220210518 Smith Jun 2022 A1
20220261260 Momchilov Aug 2022 A1
20220283805 Dasa Sep 2022 A1
20220291946 Taylor Sep 2022 A1
20220294766 Agarwal Sep 2022 A1
20220303271 Elsherif Sep 2022 A1
20220308650 Krishnakumar Sep 2022 A1
20220309041 Whitechapel Sep 2022 A1
20220312319 Krishnakumar Sep 2022 A1
20220312328 Krishnakumar Sep 2022 A1
20220312329 Krishnakumar Sep 2022 A1
20220326929 Sharma Oct 2022 A1
20220326939 Chen Oct 2022 A1
20220326941 Nelson Oct 2022 A1
20220334725 Mertes Oct 2022 A1
20220334929 Potyraj Oct 2022 A1
20220342899 Harwood Oct 2022 A1
20220358455 Wappler Nov 2022 A1
20220365821 Darji Nov 2022 A1
20220373983 Gupta Nov 2022 A1
20220376946 Gupta Nov 2022 A1
20220377132 Gupta Nov 2022 A1
20220391124 Darji Dec 2022 A1
20220406452 Shelton, IV Dec 2022 A1
20220407907 Cheng Dec 2022 A1
20220414676 Power Dec 2022 A1
20230019729 Karp Jan 2023 A1
20230023597 Shrestha Jan 2023 A1
20230025735 Acharya Jan 2023 A1
20230026540 Shrestha Jan 2023 A1
20230027485 Dasa Jan 2023 A1
20230041806 Singh Feb 2023 A1
20230076669 Acharya Mar 2023 A1
20230098227 Nadeau Mar 2023 A1
20230146947 Shelton, IV May 2023 A1
20230147759 Steinbrücker May 2023 A1
20230165642 Shelton, IV Jun 2023 A1
20230205510 Ramalingam Jun 2023 A1
20230229417 Qian Jul 2023 A1
20230315423 Scheckelhoff Oct 2023 A1
20230327882 Jayaraman Oct 2023 A1
20230336411 Metkar Oct 2023 A1
Foreign Referenced Citations (1)
Number Date Country
110222517 Sep 2019 CN
Non-Patent Literature Citations (8)
Entry
Google Translation of CN-10222517A , pp. 1-9 (Year: 2019).
Zhang et al.“Cloud Storage Oriented Secure Information Gateway,” 2012 International Conference on Cloud Computing and Service Computing, IEEE Computer Society, pp. 119-123 (Year: 2019).
Chen et al.“Multi-Version Execution for the Dynamic Updating of Cloud Applications,” 2015 IEEE 39th Annual International Computers, Software & Applications Conference, IEEE Computer Society, pp. 185-190.
Chen et al “Multi-Version Execution for the Dynamic Updating of Cloud Applications,” 2015 IEEE 39th Annual International Computers, Software and Applications Conference, IEEE Computer Society, pp. 185-190 (Year: 2015).
Kolluru et al “Cloud Integration-Strategy to Connect Applications to Cloud,” 2013 Annual IEEE India Conference (INDICON), pp. 1-6 (Year: 2013).
Schwarzkopf et al “Checking Running and Dormant Virtual Machines for the Necessity of Security Updates in Cloud Environments,” 2011 Third IEEE International Conference on Cloud Computing Technology and Science, IEEE Computer Society, pp. 239-246 ( Year: 2011).
Oliveira et al.“Delivering Software With Agility and Quality in a Cloud Environment,” IBM J. Res & Dev, vol. 60 No 2/3, Paper 10, pp. 1-11 (Year: 2016).
Balalaie et al.“Microservices Architecture Enables DevOps,” IEEE Softwaer, pp. 42-52, (Year: 2016).
Related Publications (1)
Number Date Country
20220326929 A1 Oct 2022 US