Providing updates for server environments

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for validating and publishing workflows from remote environments. In some implementations, server information is received over a communication network, where the server information indicates at least one of services of a server environment and software versions of the services. A condition that occurred at the server environment is detected. A software update for the server environment is selected based on the detected condition and at least one of (i) the services and (ii) the software versions of the services, the software versions of the services to stop the detected condition from occurring at the server environment. An update package for the server environment is obtained, where the update package is configured to specify a procedure for installing the software update for the server environment. The update package is sent to the server environment over the communication network.

BACKGROUND

Servers and other computers experience a wide variety of conditions. Many computer systems require periodic or ongoing maintenance to ensure proper operation and to deal with errors and limitations.

SUMMARY

In some implementations, a computer system is configured to receive configuration information (e.g., status, diagnostics, logs, etc.) for server environments managed by third parties. The system is configured to detect problems experienced by the server environments and to generate customized updates for the respective server environments that resolve the detected problems. A customized update can be selected or generated based on the individual configuration settings of a server environment, e.g., the set of services that are running, the versions of software installed, settings of the server environment, and so on.

As an example, a management server determines a condition of a third-party server environment and, based on the condition, provides an update package to a third-party server to correct or otherwise address the condition. In order to determine the condition and provide the update package, the management server may receive server environment information (e.g., telemetry to indicate status, configuration, settings, etc.) for the third-party server environment. The management server may analyze the server environment information to identify the condition that the server environment is experiencing. The management server may also determine a likely cause of the condition and select an update package, e.g., a workflow comprising a set of operations for the server to perform, that will remove the condition or make it less likely in the future.

The management server can use a mapping or a lookup table that associates various conditions with their causes to identify one or more potential causes of the identified condition. The management server may remove potential causes from consideration that are not applicable based on the server environment information. The management server may use the mapping or the lookup table to identify potential solutions based on the viable potential causes of the identified condition. The management server may eliminate potential solutions that are not applicable based on the server environment information and/or potential solutions that are unlikely to succeed. The management server may identify a potential solution (e.g., the potential solution with the highest estimated likelihood or history of success, a solution remaining after eliminating incompatible or inapplicable solutions, a solution corresponding to the potential cause(s), a solution corresponding to the identified condition, etc.). With the identified potential solution, the management server may determine whether an update package already exists for the identified potential solution. If no update package exists, the management server may generate an update package including, for example, one or more workflows from a workflow library, one or more software installers, one or more pieces of software, configuration files, instructions to change to settings, and/or agent software.

The server environment information may include, for example, status information, diagnostics, current software version identifiers, an update history for the server environment, etc. The conditions that the management server may be configured to detect can include, for example, server errors, server crashes, poor performance, out-of-date software, etc. The causes that the management server is configured to identify can include, for example, out-of-date software, installation of new software, the interaction of two or more services (e.g., effects when the services are simultaneously), reaching capacity limits, a surge in server load, hardware failure, power outage, data corruption, or a combination thereof. The corrections that the management server may identify can include, for example, updating out-of-date software for the server environment, updating out-of-date software for third-party software or services, reinstalling software, updating server configuration settings, etc.

In some implementations, a method performed by one or more computers includes: receiving, by the one or more computers, server information over a communication network, where the server information indicates at least one of (i) services of a server environment and (ii) software versions of the services; detecting, by the one or more computers, a condition that occurred at the server environment; based on the detected condition and at least one of (i) the services and (ii) the software versions of the services, selecting, by the one or more computers, a software update or configuration change for the server environment to take an action corresponding with the detected condition at the server environment; obtaining, by the one or more computers, an update package for the server environment, where the update package is configured to specify a procedure for installing the software update at the server environment or for making the configuration change at the server environment; and sending, by the one or more computers, the update package to the server environment over the communication network.

Implementations may include one or more of the following features. For example, in some implementations, obtaining the update package includes selecting the update package from among a predetermined set of update packages.

In some implementations, obtaining the update package includes generating a customized update package that is customized for the server environment based on at least one of (i) the services of the server environment and (ii) the software versions of the services.

In some implementations, the update package includes an executable software installer to install the software update.

In some implementations, the update package includes instructions to change configuration settings of the server environment such that the likelihood of the server environment experiencing the condition is reduced.

In some implementations, the update package includes data defining a workflow that specifies multiple alternative sequences of operations to be performed based on conditions present when the one or more workflows are processed.

In some implementations, the update package includes instructions that, when executed by a server providing the server environment, causes the server to shut down and restart the server environment.

In some implementations, the software update in the update package includes an installer for an updated version of one of the services. The update package includes code for a software agent, and the update package includes instructions for a process of installing the software update that includes: installing the software agent; shutting down the server environment; and installing the software update under the control of the software agent.

In some implementations, the instructions for installing the software update further comprise re-starting the server environment under the control of the software agent.

In some implementations, the software update includes software updates for a first subset of the services. The update package includes instructions indicating a sequence of operations including, while maintaining the server environment in operation: stopping a second subset of the services that is larger than the first subset, installing the software update, and restarting the second subset of the services after installing the software update.

In some implementations, the condition includes: a performance decrease of the server environment; unavailability of the server environment or of an application or component of the server environment; a crash of the server environment or an application or component of the server environment; reaching a capacity limit of the server environment; or deviation of the performance or usage of the server environment from a determined pattern of performance or usage of the server environment.

In some implementations, the method includes determining a priority level or preference for the server environment; and obtaining the update package for the server environment includes generating the update package to include a sequence of operations set based on the priority level or preference for the server environment.

In some implementations, the server environment is provided by a server that is operated by a third party and is located remotely from the one or more computers.

In some implementations, detecting the condition that occurred at the server environment includes: periodically obtaining status information from the server environment; evaluating the obtained status information to determine if at least one of a predetermined set of conditions occurred; and based on the evaluation, determining that at least one of the predetermined set of conditions has occurred.

In some implementations, the status information includes at least one of: performance test results for the server environment; log data for the server environment; or traffic data for the server environment.

In some implementations, the method includes: receiving server information from multiple server environments, the server information indicating server configurations for the multiple server environments and conditions that occurred at least some of the multiple server environments; determining, based on analysis of the server information, combinations of configuration settings and/or different versions of services that contribute to the occurrence of the conditions; identifying, based on analysis of the server information, combinations of configuration settings and/or different versions of services that avoid the occurrence of the conditions; and generating mapping data that associates each of multiple conditions that occurred at the multiple server environments with (i) corresponding configuration settings and/or different versions of services that contribute to the occurrence of the condition and (ii) corresponding changes to configuration settings and/or software updates identified as avoiding the condition.

In some implementations, selecting the software update for the server environment includes: accessing mapping data that associates different server environment conditions with different corresponding software updates identified as avoiding the server environment conditions; and selecting, from among the software updates, a particular software update that is for at least one of the services indicated by the server information of the server environment and that is indicated by the mapping data as avoiding the condition that occurred at the server environment.

In some implementations, selecting the software update or configuration change for the server environment includes: selecting the software update or configuration change for the server environment to stop the detected condition at the server environment; or selecting the software update or configuration change for the server environment to pause the detected condition at the server environment.

Other embodiments of these aspects include corresponding systems, apparatus, and computer programs encoded on computer storage devices, configured to perform the actions of the methods. A system of one or more computers can be so configured by virtue of software, firmware, hardware, or a combination of them installed on the system that, in operation, cause the system to perform the actions. One or more computer programs can be so configured by virtue having instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.

DETAILED DESCRIPTION

In some implementations, a set of computing workflows can be defined to facilitate the management or operation of computer systems. A workflow publishing server is configured to distribute computing workflows to third-party servers and users of third-party servers. The workflow publishing server may send a listing of available workflows to other servers. The workflow publishing server may receive requests for one or more workflows indicated in the listing, and, in response, provide the requested workflows. Administrators can select from among the sets of available workflows to enable custom combinations of functionality at the systems they manage.

The workflows can be configured to allow administrators to modify the received workflows. For example, an administrator may modify workflows to better address particular problems or errors experienced by the a server, to customize how the workflows are to be implemented, to select a data source to be used by a workflow, to select a destination to be used by a workflow, to link multiple workflows so the execute together, etc.

In some implementations, the workflow publishing server workflows a remote server based on an analysis of error logs, error reports, and/or server manager logs received from the remote server. In analyzing the error logs, error reports, and/or server manager logs, the workflow publishing server may leverage one or more machine learning to identify conditions present at the remote server and to select relevant workflows.

A workflow can be an executable or interpretable data package that specifies a set of computing operations to be performed, potentially along with logic to adaptively or selectively vary which operations are performed and how the operations are performed depending on conditions at a computer system. For example, a workflow can include instructions for a computer system to perform a sequence of actions or functions. The workflow can specify data to be acquired (e.g., to determine current settings, current performance metrics, etc.) and conditions to be evaluated, which can result in different sets of operations being performed by the computer system. Workflows can have many different uses, such as to install patches, change settings, fix causes of errors, optimize performance, resolve incompatibilities, resolve conflicts (e.g., between configuration settings, software versions, files, etc.) correct dependencies (e.g., by updating references to files or data, or providing files or data that were missing or inadequate), refresh caches, optimize data sets, monitor performance, and more. Frequently, a workflow is designed to cause a specific purpose or result when run. An administrator can select a workflows to be run periodically to automate maintenance, or workflows may be run on-demand.

A workflow can be packaged in a standard, lightweight form that can be interpreted or executed without being compiled. Part of a workflow can be a collection of commands to be performed, similar to a script or batch file. As discussed further below, a workflow can have various types of logic integrated into the workflow that allow the execution of the commands to be varied according to the context of the computer for which it is run. For example, a workflow may include different mutually exclusive branches representing different sets of commands, and the computer that executes the workflow can determine which branch is appropriate when the workflow is run. As another example, the workflow can include parameters (e.g., fields, variables, etc.) that are adaptively set for the particular computer running the workflow. These parameters for execution of the workflow may be edited and customized by an administrator, or may be set by the operation of the workflow based on data collected by the workflow through interaction with elements of the computer system. The commands that a workflow instructs to be performed can be commands to invoke functions of software already installed on a computer system, such as functions of an operating system, applications, tools, and so on that are already installed on the computer system. A workflow may also initiate other types of actions, such as interacting with another system using an application programming interface (API), changing settings of the computer or connected system, and so on. In some implementations, the workflow itself may include executable code to be run.

The workflow can be packaged as a module that is redistributable, and so does not need an installation process to be used. Additionally, the module can be editable so that users can tailor the operation for their respective needs. In some implementations, the workflow may designate fields that are customizable by a user. For example, the workflow can include fields for time periods to take actions, resources (e.g., files, folders, devices, etc.) that operations of the workflow act on, values for settings, and so on. Further, the workflow can be editable to add, remove, and modify operations of the workflow.

A server system may provide a configuration interface (e.g., through an application on a client device, a web page, a web application, etc.) that allows an administrator to configure the operation of the server system. The management interface can be configured to communicate with a remote management server to request and receive workflow modules, or have workflow modules and workflow lists pushed from the management server. Once a workflow is received, the configuration interface can include features to request, review, edit, activate, and deactivate workflow modules. For example, the configuration interface can enable a user to view the properties of a specific workflow module, view the operations the workflow module is configured to perform, edit those operations and/or resources the operations use or act on, and save any changes to the customized workflow module. The configuration interface can enable the user to initiate running the workflow, for example, by manually initiating execution, by setting the workflow to be run at a scheduled time (e.g., once or on a recurring schedule), or by setting the workflow to be run in response to detecting one or more conditions (e.g., to run a workflow when load exceeds a threshold, or when a particular type of error occurs, or for another condition).

Each workflow may include or otherwise be associated with a set of metadata that specifies the applicability of the workflow to different systems. For example, the metadata may indicate a type of result achieved by the workflow, a set or range of version codes for software that the workflow is compatible with, a type of error or condition that the workflow is configured to address, user permissions or security credentials needed to run the workflow, dependencies needed by the workflow, a set of applications used by the workflow, a set of settings changed by the workflow, and so on. This metadata can enable computer systems to determine the applicability of different workflows to particular systems.

FIGS. 1A-1Bare diagrams that illustrate an example system100for providing workflows to remote environments, such as third-party servers. The system100includes a workflow publishing server110and an administrator device102. The system100is able to transmit one or more workflows to servers120and130over a network140, so that the servers120and130can customize and run the received workflows.

The system100allows the workflow publishing server110to push one or more workflows to the third-party servers120and130. The system100also allows one of the third-party servers120and130to pull one or more workflows from the workflow publishing server110. The workflow publishing server110may provide various different systems with a listing of workflows that are available. When a system receives a workflow from the workflow publishing server110, the workflow can be customized before it is run. In general, workflows each specify a set of operations to be performed. The workflow can designate the performance of operations to be conditional on the occurrence of particular events or conditions. A workflow may contain mutually exclusive alternatives or branching sets of operations, where one set of operations is performed instead of another set based on the conditions that are satisfied.

FIGS. 1A-1Balso illustrate a flow of data, shown as stages (A) to (I), with each representing a step in an example process. Stages (A) to (I) may occur in the illustrated sequence, or in a sequence that is different from the illustrated sequence. For example, some of the stages may occur concurrently.

The administrator device102can be a computing device, such as a desktop computer, a laptop computer, a mobile phone, a smart phone, a personal digital assistants (PDA), a tablet computer, or other computing devices. The administrator device102can communicate with the workflow publishing server110over, for example, the network140.

The network140can include public and/or private networks and can include the Internet.

The workflow publishing server110has associated data storage112storing one or more workflow libraries106. The workflow publishing server110may include one or more computing devices. The workflow publishing server110communicates with servers120and130over the network140. In some implementations, one or more computers of the workflow publishing server110may communicate with the administrator device102and one or more other computers may perform other tasks, such as communicating with the servers120and130. The workflow publishing server110may communicate with the servers120and130through one or more application programming interfaces (APIs).

The servers120and130may each include one or more computing devices. The servers120and130are remote with respect to the workflow publishing server110. The servers120and130may each be part of a cloud computing platform (e.g., Amazon Web Services (AWS), Microsoft Azure, and so on).

In the example ofFIGS. 1A-1B, the workflow publishing server110provides workflows for the management of a computing platform that includes software run by the servers120and130. For example, the platform may be a data analytics software platform that includes one or more applications or services, e.g., web server functionality, functionality to access data repositories, query response functionality, functionality to generate visualizations, and so on. The servers120and130may each run the software of the platform in independently managed systems, for example, for different companies and organizations. As a result, the servers120and130represent systems that are managed and operated independently from each other and from the workflow publishing system110. The workflow publishing server110can make the workflows available so that the administrators of third-party systems, e.g., servers120and130, can separately select and run the workflows to enhance the maintenance and operation of the software platform. In some implementations, the workflow publishing server110is operated by or is affiliated with the provider of the software platform. The workflows may be created, tested, and/or validated before being made available to other systems by the workflow publishing server110. For example, the workflows can be trusted or certified sets of operations for maintaining or optimizing the software platform.

The techniques disclosed in this document can increase the efficiency and accuracy of server system management. One or more workflows can be accessed, implemented, and processed in order to automate many tasks that would otherwise require significant manual input. In addition, by reducing the amount of manual input needed, server system management using the disclosed techniques is less prone to errors and/or reaction inconsistencies. The disclosed techniques further improve the efficiency and accuracy of server system management by, in some implementations, recommending specific workflows for a particular system based on of their server system and/or their determined needs. The recommended workflows may be determined based on an analysis of one or more error reports or error logs for a system. The recommended workflows may be determined based on analysis of previous actions taken, such as a log of actions that an administrator took to maintain or adjust a server. The recommended workflows may be selected by leveraging one or more machine learning. The disclosed techniques further improve the efficiency and accuracy of server system management by allowing the customization of workflows to the specific needs of a particular administrator or system.

The techniques disclosed in this document can increase the reliability of server systems. Workflow operations may be created and/or customized such that they are performed automatically when certain conditions are satisfied. These operations may include, for example, updating software, installing patches, importing new data, or removing old data that can increase and maintain the reliability of server systems. Conditions which may trigger the performance of these operations may include, for example, a determination that a software update or patch has come available, if a certain amount of time has passed since the operation was last performed, or a determination that new data has come available. Accordingly, server system reliability is improved by ensuring, for example, that the server system is using the latest software, has the latest patches installed, is using the newest available data, etc. In some implementations, the disclosed system is able to recommend one or more workflows to be implemented in a particular server system. The disclosed system may recommend workflows when it determines that the workflow may increase the reliability of the server system or increase the efficiency of the server system, e.g., through an analysis of the server system's error reports or server manager logs.

As shown inFIG. 1A, in stage (A), a workflow library106is created or updated. This can involve creating, modifying, testing, and/or validating workflows to be included in the workflow library106.106As shown, a first workflow library106includes five workflows: a first workflow for patching software (“Workflow1”), a second workflow for updating a cache of a computer system (“Workflow2”), a third workflow for emptying a trash folder of a file system (“Workflow3”), a fourth workflow for reloading an online analytical processing (OLAP) data cube (“Workflow4”), and a fifth workflow for importing a data source (“Workflow5”). The administrator104may upload the new or modified workflow library106to the workflow publishing server110over the network140or over a different network

Validating or testing a workflow of a workflow library may involve performing one or more of the operations within a workflow (or all operations within a workflow) on a testing environment. The testing environment may be a computer, a computing system, a server environment, a virtual machine, etc. During validation, the operation of the workflow can be tested to ensure proper results are achieved, that security is maintained, compatibility is achieved with an appropriate set of software versions or system configurations, etc.

The workflows in the workflow library106can be created on the device102or any of various other devices and uploaded to the workflow publishing server110for storage and distribution.

In stage (B), the workflow publishing server110adds the new or modified workflows to the library106, which is stored in the data storage112. This may involve replacing a previous version of the workflow library106or updating a previous version of the workflow library106.

When the workflow publishing server110adds the new or modified workflow library106to the workflow libraries106, it may also generate or update a workflow listing114. The workflow listing114may list all workflows included in the workflow libraries106. The workflow listing114may list all workflows from a particular workflow library. For example, there may be separate workflow listings for each workflow library.

The workflow listing114may include information about each of the workflows within the workflow listing114as is discussed in more detail below with respect toFIG. 2. This information may include metadata, such as a name of the workflow, a purpose of the workflow or an error that the workflow addresses, a description of the operations within the workflow (e.g., which may also include required conditions for the workflow to be performed), a list of persons who can initiate running of the workflow, security permissions for the workflow, and software versions that the workflow is compatible with.

In stage (C), the workflow publishing server110sends workflow listings114aand114bto the servers120and130respectively. The workflow listings114aand114bcan represent a catalog of the available workflows that can be obtained from the workflow publishing server110. In some cases, the workflow listings114aand114binclude all workflows, and in other cases they may represent customized subsets of the total set of workflows, e.g., subsets determined to have appropriate compatibility with or relevance to the servers120and130.

The workflow listings114aand114bmay be sent by the workflow publishing server110to the servers120and130respectively over the network140. Here, the workflow publishing server110pushes the workflow listings114ato the server120, and the workflow listing114bto the server130. The workflow publishing server110may push the workflow listings114aand114bif they have been recently updated (e.g., new workflows have been added, a workflow library which corresponds with the workflow listing has been updated or added, etc.). The workflow publishing server110may push these workflow listings114aand114bperiodically. For example, the workflow publishing server110may have scheduled to send the server120a workflow listing every two days. The schedule for the server130may be different than the schedule of the server120. For example, the workflow publishing server110may have scheduled to send the server130a workflow listing every week as opposed to every two days for the server120.

In some implementations, a server, such as the server120or130, requests a workflow listing from the workflow publishing server110. The third-party server may schedule workflow listing requests so that they are sent periodically.

In some implementations, different workflow listings114aand114bare provided to the servers120and130. For example, the servers120and130may run different versions of software or have different configurations, so that different sets of workflows are applicable to each. The workflow publishing server112can select a customized subset of the workflows in the workflow library106for each server, based on known characteristics of the servers. For example, the servers120and130can periodically provide configuration data indicating software installed, versions of the software, configuration settings, load levels, usage logs, error logs, and so on. From this information, the workflow publishing server can filter the workflow listing114so that each workflow listing114a,114bhas a customized, filtered subset of the workflows.

In some implementations, the workflow listings114aand114bare listings of recommended workflows that the workflow publishing server110selects as being recommended for the servers120and130. In these implementations, the workflow publishing server110may receive (e.g., periodically) error reports or error logs experienced by the server120and/or the server130, and server manager logs from the server120and/or130. The workflow publishing server110may analyze these error reports, error logs, and/or server manager logs, and recommend one or more workflows to the respective third-party server.

An analysis of these error reports, error logs, and/or server manager logs may be used to identify workflows that solve specific problems experienced by the respective third-party server and/or workflows that solve similar problems experienced by the respective third-party server. For example, an analysis of an error report of the server120may reveal that a number of errors are occurring because the software is out of date. In this example, the workflow publishing server110may search through the metadata of the workflows in the workflow libraries106to identify any workflows that are related to updating server software or patching server software, and provide the identified workflows to the server120. A recommended workflow does not need to solve the exact same problem to be recommended because, as will be discussed in more detail below with respect toFIG. 1B, the workflow can be customized for the particular server that it is to be implemented in.

An analysis of these error reports, error logs, and/or server manager logs may reveal workflows that can increase system stability (e.g., if it is determined that one or more errors are due to a high server load, or a high degree of fluctuation in server load, etc.). An analysis of these error reports, error logs, and/or server manager logs may reveal workflows that can reduce user input (e.g., if it is determined that server managers or users are repeatedly doing tasks that could be automated by a workflow, if it is determined that the one or more errors are due to human input error, or if it is determined that the one or more errors are due to inconsistent human oversight). The workflow publishing server110may filter out workflows from the recommended workflows if they are incompatible with the respective third-party server, e.g., the workflow requires a different software version than what is installed on the server. The workflow publishing server110may provide these recommended workflows to the respective third-party servers as part or all of the workflow listings114aand114b.

In some implementations, the administrator104may select the one or more workflows to recommend to the servers120and130based on the results of analysis performed by the workflow publishing server110on the respective error reports, error logs, critical log files (e.g., logs for an application server, logs for an intelligence server, logs for queue producers, logs for queue consumers, etc.), core files, crash dumps, and/or server manager logs.

In some implementations, the workflow publishing server110leverages one or more machine learning in order to analyze the respective error reports, error logs, critical log files (e.g., logs for an application server, logs for an intelligence server, logs for queue producers, logs for queue consumers, etc.), core files, crash dumps, and/or server manager logs associated with, for example, the servers120and130. In these implementations, the workflow publishing server110may capture other attributes and/or characteristics of the servers120and130such as, for example, the operating system (OS) used, the version of the OS used, applications or services run, versions of applications or services run, hardware characteristics, etc. These attributes and/or characteristics may be made available to and used by the one or more machine learning. In these implementations, the workflow publishing server110may feed the error reports, error logs, critical log files, core files, crash dumps, server manager logs monitor, attributes, and/or characteristics associated with, for example, the servers120and130to the one or more machine learning to see if the server conditions matched known defects. Using this information, the one or more machine learning may determine one or more server conditions. The one or more machine learning may represent the one or more server conditions as a pattern.

The output of the one or more machine learning may be used by the workflow publishing server110or the administrator104to select one or more workflows for recommendation. For example, if the observed server conditions/pattern matched a previously known defect, the one or more machine learning may recommend a known workflow associated with those conditions. If the observed server conditions/pattern did not match a known defect, then an analysis would be done for these new conditions/new pattern, and a new workflow may be generated to address these new conditions/new pattern. The analysis may be performed by a user of the workflow publishing server110. The new workflow may be generated by a user of the workflow publishing server110. The analysis may be performed automatically by the workflow publishing server110through, for example, trial and error and/or leveraging one or more machine learning to determine which workflows are likely work based on, for example, what workflows are associated with conditions similar to the observed conditions, what workflows have a high rate of success, etc. For example, the workflow publishing server110may attempt to use existing workflows to see if any have a beneficial effect on the server conditions. The workflow publishing server110may test the existing workflows in the order of which are determined to have the highest likelihood of success based on, for example, leveraging the one or more machine learning. If one or more workflows are determined to have a beneficial effect on the observed server conditions (e.g., less defects, less severe defects, better performance, etc.), the workflow publishing server110may associate those one or more workflows with the observed conditions/pattern, e.g. associate those one or more workflows with the specific defect detected.

The one or more machine learning may include one or more machine learning models. The one or more machine learning models may include an unsupervised learning model.

The workflow listing114amay be the same or different from the workflow listing114. The workflow listing114may be modified for the server120in order to generate the workflow listing114a. For example, the workflow listing114amay contain the workflows found in the workflow listing114that are compatible with the software of server120. Similarly, the workflow listing114bmay be the same or different from the workflow listing114. The workflow listing114may be modified for the server130in order to generate the workflow listing114b. For example, the workflow listing114bmay contain the workflows found in the workflow listing114that are compatible with the software of server130.

In stage (D), after having received the workflow listing114a, a user124of the client device122may select one or more workflows from the workflow listing114afor download from the workflow publishing server110. In selecting one or more workflows from the workflow listing114a, one or more workflow requests116are generated by the server120and sent to the workflow publishing server110. The one or more workflow requests116may contain a name or other indication of the one or more selected workflows, and/or a name or other indication of the source of the one or more workflows, such as a name or other indication of the one or more workflow libraries that correspond with the one or more selected workflows.

The one or more workflow requests116may contain additional information, such as information about the server120. This additional information may contain, for example, the software version(s) used by the third-party server, error logs or reports related to the third-party server, server manager logs, storage capacity of the third-party server, remaining storage space of the third-party server, performance information related to all or part of the third-party server (e.g., bandwidth, load experienced, amount of memory, number of processors, type of processors, etc.), The one or more workflow requests116may be sent to the workflow publishing server110over the network140.

In some implementations, the one or more workflow requests116do not specifically name or identify one or more workflows. In these implementations, the workflow requests116may contain a query for workflows for the workflow publishing server110. The query may include information naming or describing a specific error, condition, or other issue experienced by the server120. The workflow publishing server110may access the workflow libraries106through the data storage112, and compare the query information to the metadata for each of the workflows. In comparing the query information to the workflow metadata, the workflow publishing server110may identify one or more workflows that specifically address the error, condition, or other issue experienced by the server120, and/or one or more workflows that are related to the error, condition, or other issue experienced by the server120. The workflow publishing server110may leverage one or more machine learning in identifying the one or more workflows.

In stage (E), in response to receiving the one or more workflow requests116, the workflow publishing server110sends the requested workflows118(or a subset of the requested workflows) to the server120. The workflow publishing server110may first analyze the received one or more workflow requests116to determine which workflows are being requested. The workflow publishing server110may access the data storage112to obtain the requested workflows118in preparation of sending the requested workflows118to the server120. Here, the user124had requested three workflows: including Workflow1, Workflow2, and Workflow3. These three workflows make up the requested workflows118and are sent to the server120. In addition to sending the workflows, the workflow publishing server110may provide instructions for installing and running each of the workflows in the requested workflows118.

In some implementations, the workflow publishing server110removes one or more workflows from the requested workflows118due to a determination that one or more workflows are incompatible with the server120. This subset of the requested workflows118may be sent to the server120in place of the requested workflows118. In these implementations, a notification may be provided to the server120indicating that one or more workflows were not sent due to incompatibility.

In some implementations, the workflow publishing server110pushes one or more workflows to the server120or the server130without the need for any workflow requests, such as the one or more workflow requests116. In these implementations, the workflow publishing server110may push recommended workflows in response to analysis of a third-party server's error reports, error logs, and/or server manager logs. The workflow publishing server110or the administrator104may identify which workflows to recommend in accordance with the methods described above with respect to stage (C).

As shown inFIG. 1B, in stage (F), the user124, through an interface126of the client device122, inspects the requested workflows118and generates a set of modified workflows128from the requested workflows118. Here, the user124has selected Workflow1in the interface126, allowing the user124to inspect Workflow1and modify it. The user124has selected the option to “View the Workflow,” revealing the operations contained within Workflow1. These operations include a first operation to check the software version of the server, a second operation to compare the software version with a current software version, a third operation to download a software patch if the checked software version does not match the current software patch, and a fourth operation to install the software patch if the checked software version does not match the current software patch. Other options that the user124has not selected include an option to download the workflow, an option to add workflow steps (e.g., add additional operations to Workflow1that may or may not be conditional, or add alternative operations to the workflow), and an option to remove workflow steps (e.g., remove an operation from Workflow1).

An option that the user124has selected is an option to download, install, and run the workflow. By selecting this option, the user124is presented a field to select or enter a run time, and a field to select or enter the specific servers or server environments that Workflow1should be installed on or otherwise implemented in. In the run time field, the user124has selected to run Workflow1every 48 hours. The user124may have been able to select or enter other options, such as every 12 hours, every 24 hours, every week, every month, every year, once—immediately, once—with a delay (e.g., a delay of 1 hour, 2 hours, 12 hours, 1 day, 1 week, etc.), etc. In the server or server environment field, the user124has selected or entered “all.” Accordingly, the user124has chosen for Workflow1to be installed and run on all of server120's servers and/or server environments, or on all of server120's compatible servers and/or server environments.

An option the user124has selected is an option to modify workflow steps. By selecting this option, the user124is presented a field to select or enter a step, e.g., an operation, to modify and a field to enter the modification(s). Here, the user124has selected or entered the fourth operation, the operation to install the software patch if the checked software version does not match the current software patch. The user124has modified the fourth operation so that it now includes an additional condition that the installation of the patch must also be authorized by a server manager or admin.

The user124may be able to modify the workflows in other ways. For example, the user124may be able to select from a list of recommended or frequently used operations. This list may be presented to the user124on the interface126. When the user selects an operation from the list, the operation may replace a currently selected operation or may be added to the operations of the corresponding workflow. The user124may be able to drag one or more operations from the list into the workflow. The user124may be able to rearrange operations in the workflow by, for example, dragging them into different positions. The user124may be able to modify a workflow by entering code that is then added to the computer code corresponding with the workflow, e.g., in order to add one or more new operations to the workflow, add one or more conditions to the workflow or to individual operations in the workflow, etc. The user124may be able to modify a workflow by modifying the computer code corresponding with the workflow, e.g., in order to modify existing operations or conditions, remove existing operations or conditions, etc.

The operations of the workflow may be conditional on one or more events being satisfied. These conditions may be temporal conditions, e.g., a date, an elapse of a certain amount of time, etc. These conditions may be satisfied through a triggering event, e.g., the occurrence of an error or a particular error, an instruction or action by a server manager or administrator, a state of the server system, a server load threshold being met, etc. These conditions may be satisfied through the successful performance of one or more higher order operations in the set of operations, e.g., operations that are to be performed before the operation at issue. These conditions may be predetermined. These conditions may be set by the user124through the interface126.

Similarly, the workflow itself may be conditional on one more events being satisfied before it is processed. These conditions may be temporal conditions, e.g., a date, an elapse of a certain amount of time, etc. These conditions may be satisfied through a triggering event, e.g., the occurrence of an error or a particular error, an instruction or action by a server manager or administrator, a state of the server, a server load threshold being met, etc. These conditions may be satisfied through the successful performance of an operation of another workflow or of the successful processing of another workflow. These conditions may be predetermined. These conditions may be set by the user124through the interface126. These conditions may include the occurrence of an event, the nonoccurrence of an event, particular data being identified, particular data not being identified, particular data being matched, particular data not being matched, the time of day, the day of the week, the time of year, a status of a server, the load on a server reaching a threshold level, the security permissions of a user, etc.

The workflows may each contain branching or alternative operations. For example, Workflow1may contain a set of alternative operations where a match is found between the checked software version and the current software version. In this example, Workflow1's alternative operations may include an operation to schedule a check for updates one week from now, an operation to generate a notification indicating that the server is currently running the most up-to-date software, and an operation to generate a notification indicating the scheduled software check if the software check is successfully scheduled. As demonstrated in the example, the branch or path of operations that is performed during the processing of a workflow, such as during the processing of Workflow1, may depend on the particular conditions satisfied and/or on the successful performance of a higher order operation.

By modifying (e.g., customizing) the requested workflows118for the server120, or for particular servers or server environments within or part of the server120, the user124generates the set of modified workflows128. In some implementations, the modified workflows128are generated in response to the user saving or submitting their modifications to the requested workflows118.

The user124may be able to modify the requested workflows118in other ways. For example, the user124may be able to select a source to be used by a particular workflow, such as a data source. For example, the user124may be able to select a destination to be used by a particular workflow. For example, the user124may be able to string multiple workflows together. For example the user124may be able to select a script to be used by or with a particular workflow.

At stage (G), the user124implements the modified workflows128into the server120. Implementing the modified workflows128in the server120may involve installing the modified workflows on the server120, on one or more particular servers part of the server120, or one or more particular server environments within or part of the server120. Implementing the modified workflows128in the server120may involve running (e.g., processing) the modified workflows128, scheduling one or more times to run each of the modified workflows128, or setting one or more other conditions (e.g., triggering events) for each of the modified workflows128that when satisfied result in running the modified workflows128. Implementing the modified workflows128in the server120may involve stringing a workflow from the modified workflows128to another workflow, such that the processing of one of the strung workflows is a precondition to the processing of the other strung workflow.

FIG. 2is a diagram that illustrates example interface202displaying the workflow listing114aas previously shown inFIG. 1ain more detail. As previously mentioned, the workflow listing114amay contain metadata for each of the workflows within the listing. The metadata may include a name of the workflow, a purpose of the workflow or an error that the workflow addresses, a description of the operations within the workflow (e.g., which may also include required conditions for operation performance), a list of persons who can access the workflow, security permissions for the workflow, and software versions that the workflow is compatible with.

As shown, the workflow listing114aincludes a first row204for Workflow1, a second row206for Workflow2, and a final row208for Workflow5. The workflow listing114aalso includes a column210for the names of each of the workflows, a column212for the purpose or error to be addressed by each of the workflows, a column214for the descriptions and/or required conditions of each of the workflows, a column216for the security permissions required for each of the workflows, and a column218for the compatible software versions for each of the workflows.

As shown, different workflows may require different security permissions. For example, as shown in column216of row204, Workflow1requires a higher security permission of “Full Control” or “Modify” in order to install and/or process Workflow1, whereas, as shown in column216or row208, Workflow5allows many more security permissions to install and/or process Workflow5. The reason why Workflow1may require higher security permissions than Workflow5may be due to the operations within each of the workflows. The operations of Workflow1, as can be seen in column214of row204, involve downloading and installing software which may be viewed as high risk operations (or high risk when compared with the operations of Workflow5). The operations of Workflow5, as can be seen in column214of row208, involve identifying and importing data, which may be viewed as low or medium risk operations (or low or medium risk when compared with the operations of Workflow1).

FIG. 3is an example process300for transmitting workflows to remote environments. The process300can be performed, at least in part, using the system100described herein.

The process300includes accessing data storage storing multiple workflows, where each of the workflows indicates a set of computer operations to be performed (302). The computer operations may include downloading software, checking for software updates, updating software, installing software, running software, importing data, exporting data, checking for new or different data, running a script, generating data, generating a notification, sending a notification, etc. The computer operations may be conditional on the satisfaction of one or more requirements. These requirements may include the performance of another operation, the processing of a workflow, a time having elapsed, a triggering event, etc. The data storage may be on-site.

Thee data storage can store metadata associated with the workflows. The metadata for a particular workflow may include information such as a name of the workflow, a purpose of the workflow or an error that the workflow addresses, a description of the operations within the workflow, a list of persons who can access the workflow, security permissions for the workflow, and/or software versions that the workflow is compatible with.

A workflow can indicate a sequence of multiple operations that are to be performed in a predetermined order. Examples of operations include checking a software version of a server, checking the most recent software version, comparing software versions, downloading software, uploading software, identifying data, uploading data, storing data, downloading data, deleting or clearing data, comparing data, determining destinations, and/or determining sources. As an example, a workflow may include an operation to check the version of software currently used by a particular server, to check the most recent version of the software, and to compare the currently used version with the most recent version. In this example, the operations may need to be performed in a predetermined order. For example, the workflow may need to first check the version of software currently used by the server, then check the most recent version of the software once the first check is performed, and, only after both checks are performed, compare the currently used version with the most recent version. The predetermined order may be set when the one or more workflows are initially created, e.g., by the administrator104. The predetermined order may modified at a third party server, e.g., by the user124of the client device122or by a different user of a different client device. The predetermined order may be set at a third party server, e.g., by the user124of the client device122or by a different user of a different client device.

A workflow may include multiple conditional operations that are designated to be performed when corresponding conditions are satisfied. Examples of conditions include the occurrence of an event, the nonoccurrence of an event, particular data being identified, particular data not being identified, particular data being matched, particular data not being matched, the time of day, the day of the week, the time of year, a status of a server, the load on a server, the security permissions of a user, etc.

In some cases, a workflow includes a chain of conditional operations. The chain of conditional operations may include a first operation and a first condition and a second operation and a second condition. Performance of the first operation may be dependent on the first condition being satisfied, and performance of the second operation may be dependent on the second condition and the first condition being satisfied. As an example, when either the first condition or the second condition is not satisfied, the server running the workflow may automatically abort the workflow and/or may automatically restart the workflow, e.g. after a predetermined amount of time. Similarly, when both the first condition and the second condition are not satisfied, the server running the workflow may automatically abort the workflow and/or may automatically restart the workflow, e.g. after a predetermined amount of time. As an example, when the first condition is satisfied but the second condition is not satisfied, the server running the workflow may wait a predetermined amount of time before automatically aborting the workflow or automatically restarting the workflow. During this predetermined amount of time, the server and/or the workflow may check to see if the second condition is satisfied.

A workflow may contain an operation to check a software version used by the server, compare the employed software version with the most recent version of the software, download the most recent software version if the employed version does not match the most recent version, and install the most recent software version if the employed version does not match the most recent version and if the most recent version downloaded successfully. In this example, the first condition may be whether the employed version of the software matches the most recent version of the software. In this example, the second condition may be whether the most recent software version downloaded successfully. A chain of conditional operations may also include additional operations and conditions.

In some cases, one or more workflows specify multiple alternative sequences of operations to be performed based on conditions present when the one or more workflows are processed. The multiple alternative sequences may be mutually exclusive. The computer or server that executes the workflow can determine which sequence of operations is appropriate when the workflow is run. The conditions for determining a sequence of operations to follow may be the same as the conditions for conditional operations. For example, these conditions may include the occurrence of an event, the nonoccurrence of an event, particular data being identified, particular data not being identified, particular data being matched, particular data not being matched, the time of day, the day of the week, the time of year, a status of a server, the load on a server reaching a threshold level, the security permissions of a user, etc. As an example, a workflow may have two alternative sequences of operations, a first sequence to be performed on weekdays and a second sequence to be performed on weekends. When the computer or server runs the workflow, the computer or server may make a determination as to whether it is a weekday or a weekend. If the computer or server determines that it is a weekday, the computer or server will provide for the first sequence of operations in the workflow to be run. Alternatively, if the computer or server determines that it is a weekend, the computer or server will provide for the second sequence of operations in the workflow to be run.

In some cases, one or more workflows specify operations that involve executing one or more scripts or executables. As an example, executables may include programs and certain files, e.g., files that are .BAT, .COM, .EXE, BIN, .DMG, and/or .APP files. As an example, a script may include a series of commands within a file that is capable of being executed without being compiled. The scripts may include Python scripts, PHP scripts, JavaScript scripts, etc.

In some cases, one or more workflows specify operations that include shutting down or restarting a server environment. The operations may include a restart operation. The operations may include a shutdown operation. As an example, the operations for shutting down or restarting a server environment may be for shutting down or restarting one or more particular computers of the server environment.

In some cases, one or more workflows specify operations that involve accessing data from a data repository or data indicating operational characteristics of a data repository. As an example, a data repository may include a server, e.g. an on-premises server or a third-party server, or part of a server. As an example, a data repository may include a database. As an example, a data repository may include cloud storage that is provided by a cloud-computing platform. As an example, operational characteristics of the data repository may include log data for accesses to the data repository, a status of the data repository (e.g., an indication of whether or not it is experiencing an error or has recently experienced an error), a number of requests for data within the data repository, performance characteristics (e.g., an average time to process requests for data within with data repository, a maximum time, etc.), an indication of the specific data requested from the data repository, an indication of data added to the data repository, one or more dates and times associated with a request for data, one or more dates and times associated with data added to the data repository, etc.

In some cases, one or more workflows represent a template of operations to be customized for a particular server environment. For example, a workflow may include one or more fields that can be filed, customized, or modified. In this example, the one or more fields may be empty and may need to be filled in, e.g., by the user124using the user device122. In this example, the one or more fields may have default values that are automatically set, e.g., by the workflow publishing server110, or by are set by a user, e.g., the administrator104through the administrator device102. As another example, one or more fields may be added to the workflow to, for example, add additional operations, further define operations, add conditions to operations, etc. The fields may correspond with an operation, with a condition for a conditional operation, with a condition for a particular sequence of operations, with multiple operations, etc. The fields may allow a user to, for example, specify a run time for the workflow, specify one or more server environment on which to run the workflow, add one or more operations, modify one or more existing operations, remove one or more existing operations, rearrange an order of the operations, set an order of the operations, set a hierarchy of the operations, divide the operations into multiple sequences of operations, assign one or more operations to a specific sequence of operations, remove one or more operations from a sequence of operations, etc.

In some cases, one or more workflows address specific errors or conditions of server environments, and have metadata indicating the errors or conditions they address. As an example, the specific errors or conditions may include the cache allocated to a server environment being full or approaching capacity (e.g., 70% full, 80% full, 90% full, etc.), poor performance of the server environment (e.g., unacceptable load times, render times, reporting times, etc.), a server environment crash, the amount of load on the server environment, hardware failure, etc. As an example, the metadata indicating the errors or conditions may include a purpose of the one or more workflows, an error that the one or more workflows address, a description of the operations within the one or more workflows. In addition, metadata such as security permissions may also provide some indication of the errors or conditions that the one or more workflows address.

The process300includes providing, to a computer system, catalog data identifying workflows, from among the multiple workflows, that are available to the computer system (304). The catalog data may include or be a workflow listing, e.g. workflow listings114aor114bas shown inFIG. 1. The catalog data may identify a set of workflows. The catalog data may contain one or more workflow libraries, e.g. workflow library106as shown inFIG. 1). The catalog data may be a workflow library. The catalog data may contain metadata that corresponds to one or more workflows. The metadata may include a name of the one or more workflows, a purpose of the one or more workflows or an error that the one or more workflows address, a description of the operations within the one or more workflows (e.g., which may also include required conditions for operation performance), a list of persons who can access the one or more workflows, security permissions for the one or more workflows, and software versions that the one or more workflows are compatible with. In some implementations, the identified workflows are those workflows that are compatible with the computer system. The computer system may be a server, a group of servers, a server system, or a server environment (e.g., the server120as shown inFIGS. 1A-1B). The computer system may be part of a cloud-computing service or environment.

In some cases, providing the catalog data includes publishing the catalog data to multiple systems. As an example, the multiple systems may include one or more server systems, server environments, computer systems, etc. For example, the multiple systems may include the server120and the server130shown inFIG. 1. As an example, the catalog data may be published over a public or private network such as the Internet.

In some cases, providing the catalog data includes pushing the catalog data to one or more systems. For example, the catalog data may be pushed by the workflow publishing server110shown inFIG. 1. As an example, the one or more systems may include one or more server systems, server environments, computer systems, etc. In this example, the one or more computer systems may include or be part of one or more server systems or server environments. For example, the one or more systems may include the server120and/or the server130shown inFIG. 1.

In some cases, the catalog data includes metadata associated with each of the workflows. The metadata may indicate software the associated workflow applies to, conditions the associated workflow applies to, permissions needed for the associated workflow, a description for the associated workflow, and/or an error addressed by the associated workflow. As an example, conditions that a workflow applies to or errors addressed by the workflow may include conditions or errors experienced by a server system or environment running the workflow. In this example, the conditions may include the cache allocated to a server environment being full or approaching capacity (e.g., 70% full, 80% full, 90% full, etc.), poor performance of the server system or environment (e.g., unacceptable load times, render times, reporting times, etc.), a server system or environment crash, the amount of load on the server system or environment, hardware failure, etc. As an example, the permissions needed for the associated workflow may include security permissions. In this example, security permissions may include a full control permission, a modify permission, a read and execute permission, a write permission, etc. As an example, a user of the server system or server environment may be assigned one or more permissions, e.g. by an administrator of the server system or server environment.

The metadata of the workflows may be used by the computer system in performing actions or in preventing actions from being performed. For example, the metadata associated with a workflow may be used by the computer system to prevent some users from running the workflow on the computer system if they do not have the requisite permission level as indicated by the metadata. As another example, the metadata indicating a software associated with a workflow may be used by the computer system to prevent the workflow from being run if the workflow is no longer compatible with the computer system, e.g. where the software on the computer system has been updated or upgraded since the workflow was downloaded from the workflow publishing server110shown inFIG. 1. Similarly, a user of the computer system may use the metadata indicating the software to ensure that the workflow is compatible. A user of the computer system may adjust or modify the metadata of a workflow. For example, a user may change the conditions, permissions, description, and/or error addressed of a particular workflow.

The process300includes receiving, from the computer system, a request for a workflow from among the workflows identified by the catalog data (306). The request may specifically name or otherwise identify one or more workflows from the workflows identified by the catalog data. In some implementations, the request does not specifically name or specifically identify one or more workflows. In these implementations, the request may contain a query. The query may include information naming or describing a specific error, condition, or other issue experienced by the computer system. The query information may be compared to metadata corresponding to the multiple workflows. In comparing the query information to the workflow metadata, the system (e.g., the system100as shown inFIGS. 1A-1B) or a part of the system (e.g., the workflow publishing server110as shown inFIGS. 1A-1B) may identify one or more workflows of the multiple workflows that specifically address the error, condition, or other issue experienced by the computer system, and/or one or more workflows that are related to the error, condition, or other issue experienced by the computer system. The system (e.g., the system100as shown inFIGS. 1A-1B) or a part of the system (e.g., the workflow publishing server110as shown inFIGS. 1A-1B) may leverage one or more machine learning in identifying the one or more workflows of the multiple workflows.

The process300includes sending, to the computer system, the requested workflow in response to the request (step308). The requested workflow may be sent to the computer system over a network. The system (e.g., the system100as shown inFIGS. 1A-1B) or a part of the system (e.g., the workflow publishing server110as shown inFIGS. 1A-1B) may check to confirm that the workflow requested is compatible with the computer system before sending.

The process300optionally includes receiving a request for catalog data. In these cases, providing the catalog data includes providing the catalog data in response to receiving the request for catalog data. For example, the catalog data may be provided by the workflow publishing server110shown inFIG. 1to the server120in response to a request for the catalog data being sent by the server120to the workflow publishing server110. The request for the catalog data and the catalog data may be sent over a public or private network such as the internet.

The process300optionally includes identifying a configuration of the computer system, and providing a customized subset of the workflows based on the configuration of the computer system. As an example, the configuration of the computer system may include one or more characteristics of the computer system. As an example, the configuration of the computer system may indicate software installed on the computer system, versions of the software installed, configuration settings of the computer system, load levels experienced by the computer system, usage logs of the computer system, error logs of the computer system, and so on. As an example, in providing a customized subset of workflows, the workflow publishing server110shown inFIG. 1can filter the workflows to identify those that are compatible with the configuration of the computer system, or are compatible with one or more characteristics of the configuration of the computer system.

In some cases, providing a customized subset of the identified workflows is based on a software version for software used by the computer system, a setting of the computer system, a usage pattern of the computer system, an error encountered by the computer system, and/or a limitation encountered by the computer system. For example, each workflow that is compatible with a first version of a particular software, e.g. version 2.1, may be placed in the subset, e.g. by the workflow publishing server110shown inFIG. 1. In this example, the first version of the software may be the version used by the computer system, e.g. a server, requesting the workflows.

As an example, settings may include configuration settings. In this example, all workflows that are compatible with the configuration settings may be placed in the subset. The configuration settings may correspond with the computer system. The configuration settings may include, for example, a cache size of the computer system, memory allocated to the computer system, processors allocated to the computer system, bandwidth of the computer system, software used by computer system, software versions used by the computer system, etc.

As an example, usage patterns may include operation patterns associated with users of the computer system. The usage patterns may be determined by the workflow publishing server110shown inFIG. 1by, for example, leveraging one or more machine learning. The usage patterns may indicate, for example, operations frequently performed by users of the computer system, operations that are frequently performed together, operations that typically follow an earlier operation, operations are typically performed during a particular state of the computer system (e.g., particular date, particular time of the day, particular load level on the computer system or threshold load level being reached, etc.), etc.

As an example, errors encountered by the computer system may include the cache allocated to computer system being full or approaching capacity (e.g., 70% full, 80% full, 90% full, etc.), poor performance of the computer system (e.g., unacceptable load times, render times, reporting times, etc.), the computer system experiencing a crash, the amount of load on the computer system reaching a threshold level, hardware failure, etc. In determining whether the computer system has encountered an error, as an example, the workflow publishing server110may analyze error reports, error logs, and/or server manager logs of the computer system in order to identify errors encountered by the computer system. In analyzing error reports, error logs, and/or server manager logs, the workflow publishing server110may, for example, leverage one or more machine learning.

The process300optionally includes receiving information, from the computer system, indicating a log of actions performed by the computer system, determining a level of similarity of actions in the log with operations in a workflow of the multiple workflows, determining that the level of similarity satisfies a threshold; and providing, to the computer system, the workflow or a recommendation for the workflow based on determining that the level of similarity satisfies the threshold. As an example, the information may include usage logs or server manager logs. As an example, determining a level of similarity may include determining whether a first operation performed by the computer system is found in a workflow, determining whether one or more operations performed by the computer system before or after performing the first operation are also found in the workflow, determining whether the workflow includes any operations that are not performed by the computer system, determining whether the workflow does not include any operations that are performed by the computer system, determining whether the workflow does not include any operations within a subset of operations performed by the computer system (e.g., those operations surrounding the first operations, a group of operations that are frequently performed together on the computer system, etc.), determining if the conditions for an operation performed by the computer system are the same or similar to the conditions for performing a corresponding operation found in a workflow, etc. In determining a level of similarity, as an example, the workflow publishing server110shown inFIG. 1may leverage one or more machine learning. The threshold may be set by a user. The threshold may be set to, for example, 60%, 70%, 80%, or 90% similarity.

The process300optionally includes receiving data, from the computer system, indicating errors or conditions of a server system, identifying one or more workflows of the multiple workflows that are configured to address the errors or conditions, and providing, to the computer system, the workflow or a recommendation for the workflow. As an example, the data may include usage logs, error reports, error logs, and/or server manager logs. In identifying one or more workflows, as an example, the workflow publishing server110may leverage one or more machine learning.

The process300optionally includes receiving a query from the computer system, determining a workflow of the multiple workflows based on the query, and providing, to the computer system, the workflow or a recommendation for the workflow in response to receiving the query. As an example, a query may be or include a request for a catalog of available workflows, a request for one or more identified workflows, a request for compatible or recommended workflows, etc. The query may include, for example, an indication of one or more specific workflows. The query may include, for example, one or more criteria for workflows that are to be used in identifying one or more workflows to be sent to the computer system in response. The query may include information corresponding with the computer system such as, for example, configuration settings of the computer system. In some cases, the query may be include a request for documents, e.g. from the workflow publishing server110shown inFIG. 1. In these cases, the workflow publishing server110may identify one or more workflows that correspond with the requested documents, and may send the identified one or more workflows to the computer system or may send a recommendation including an indication of the identified workflows to the computer system.

FIG. 4depicts a diagram that illustrates an example system400for providing updates for server environments. The updates can be customized for the server environments, to address the particular problems and configuration of each. The system400includes a management server410having a data storage412. The system400is configured to receive server environment information408from a third-party server402over a network440. The system400may analyze the server environment information408to identify server environment conditions422, one or more potential causes424responsible for the server environment conditions422, and, based the identified one or more potential causes424, a potential correction426to address the server environment conditions422. The system400may look up or generate an update package434for the identified potential correction426. The update package434may contain software, an installer, one or more workflows, a software agent (e.g., agent software discussed below), etc. The system400may transmit the update package434to the third-party server402. The update package434can be deployed on the third-party server402by a user having an adequate permission level.

In general, a workflow refers to a series of computer operations that can be performed on a server system. Workflows can be included in update packages that are to be transmitted to a third-party server. Performance of one or more operations in the set of workflow operations may be conditional on the occurrence of particular events such as, for example, a state of a server environment, the services or software running on a server environment, the load on a server environment, the configuration of a server environment, etc. A workflow may contain alternative or branching sets of operations, where one set of operations is performed over another set based on the conditions that were satisfied.

FIG. 4also illustrates a flow of data, shown as stages (A) to (I), with each representing a step in an example process. Stages (A) to (I) may occur in the illustrated sequence, or in a sequence that is different from the illustrated sequence. For example, some of the stages may occur concurrently.

A user device404can be a computing device, such as a desktop computer, a laptop computer, a mobile phone, a smart phone, a personal digital assistants (PDA), a tablet computer, or other computing devices. The user device404can communicate with the third-party server402over, for example, the network440. The network440can include public and/or private networks and can include the Internet.

The management server410may contain one or more computing devices. The management server410communicates with the third-party server402over the network440. The management server410may communicate with the third-party servers402through an application programming interfaces (API).

The data storage412stores workflow libraries414and a set of existing update packages432. The data storage412may include memory, such as non-volatile memory.

The third-party server402may include one or more computing devices. The third-party servers402is remote with respect to the management server410. The third-party server402may be part of a cloud computing platform (e.g., Amazon Web Services (AWS), Microsoft Azure, and so on).

The techniques disclosed in this document can increase the efficiency and reliability of server systems. Using server environment information from a third-party server, the management server410can identify server conditions, particular causes of those server conditions, and particular corrections for those conditions and causes. Some or all of these actions may be automatically performed by the management server410. In identifying particular conditions, causes and/or corrections, the management server410can leverage prior information obtained from, for example, other third-party servers or for other server environments. This prior information may include, for example, success rates at which update packages applying a particular correction corrected a problem when deployed in other server environments. Accordingly, the management server410can efficiently diagnose conditions that a server environment is experiencing, and can efficiently identify particular causes of the condition and corrections to address the condition. Additionally, the management server410can look up or generate an update package to carry out the particular correction needed for the particular server environment. The look up or generation of an update package may be automated. By transmitting this update package to the third-party server for deployment, the management server410can improve server system reliability by quickly addressing server conditions with a high probability of success. Accordingly, the system400can improve the efficiency and reliability of server systems. In some implementations, an update package includes a software patch, an installer for a software upgrade, or other software to be installed or run by the server environment. In some implementations, an update package includes a configuration file, a set of configuration settings, or other data that does not upgrade or install software for the server environment.

As shown inFIG. 4, in stage (A), the process for transmitting update packages to server environments starts with the third-party server402sending the server environment information408to the management server410over the network440. The transmission of the server environment information408may be initiated by a third-party user406. The transmission of the server environment information408may be periodic. For example, the third-party server402may send server environment information to the management server410every 30 minutes, every hour, every six hours, every 12 hours, every day, every two days, every week, etc. The transmission of the server environment information408may be in response to a request sent by the management server410to the third-party server402. A request for server environment information sent by the management server410may be periodic. For example, the management server410may send a request for server environment information every 30 minutes, every hour, every six hours, every 12 hours, every day, every two days, every week, etc. A third-party user, such as the third-party user406, may need to confirm a request before sending server environment information to the management server410.

The server environment information408may include information associated with a particular server environment provided by the third-party server402. A “server environment” may refer to a client-server application framework that can be used to exchange application content, data, and/or other information that is necessary to provide business services through the enterprise applications. In one example, a server environment can be provided by servers that are owned or managed by the organization that they serve. For example, these may be “on-premises” servers which may be co-housed or co-located within a particular location associated with an organization. In another example, a server environment can include one or more cloud-based servers that are managed and maintained by a third party at a location that may be separate from offices of the organization. The cloud-based server is generally connected to a network and remotely accessed by one or more computers over a network connection.

As shown, the server environment information408includes server environment status, server environment diagnostics, a current software version of the server environment, an update history of the server environment, etc. The server environment information408may also include configuration settings for the server environment. The server environment information408may also include metadata associated with the server environment.

Server environment status may include, for example, an indication of the software or services currently or recently running on the server environment, a software installation history of the server environment (e.g., history of software updates, history of third-party software installed on the server environment, etc.), CPU utilization, an indication of component temperatures (e.g., CPU temperatures, motherboard temperatures, etc.), power supply status, an indication of errors (e.g., disk errors, power supply errors, thermal errors, capacity limits met, etc.), a cooling system status, etc.

Server environment diagnostics may include, for example, current performance test results (e.g., average response time(s) over the past 24 hours, average response time(s) over the past 12 hours, average response time(s) over the past hour, etc.), history of server environment performance, log data for the server environment (e.g., log data from the past 24 hours, the past 12 hours, the past hour, etc.), current load data (e.g., traffic experienced by the server environment over the past 24 hours, the past 12 hours, the past hour, etc.), history of load data, capacity limitations, hardware (e.g., the type and amount of CPUs allocated to the server environment, the amount of RAM allocated to the server environment, etc.), current software version, history of software updates, etc.

Configuration settings may include, for example, permission levels (e.g., permission level required to change the server environment configuration, permission level required to install software, permission level required to run software or services, permission level required to upload/download data, etc.), cache size, other memory allocation (e.g., RAM), CPU allocation, capacity limits, etc.

In some implementations, server environment status includes server environment diagnostics. In some implementations, server environment status includes configuration settings. In some implementations, server environment status includes server environment diagnostics and configuration settings.

In stage (B), the management server410sends the server environment information408to an analysis module420. The analysis module420will analyze the server environment information408in order to identify (i) one or more conditions that the server environment is currently experiencing, (ii) one or more potential causes of the identified conditions, and (iii) one or more potential corrections to address the identified condition(s). As will be discussed in more detail below, the management system410may automatically identify the one or more conditions, the one or more potential causes, and the one or more potential corrections.

The conditions that the management server410may identify by analyzing the server environment information408can include, for example, server errors, server crashes, poor performance, out-of-date software, etc.

The causes that the management server410may identify can include, for example, out-of-date software, a recently installed third-party software, the running of two or more particular services simultaneously, server reaching capacity limits, surge in server load, hardware failure, power outage, data corruption, or a combination thereof.

The corrections that the management server410may identify can include, for example, updating out-of-date software for the server, updating out-of-date software for the server environment, updating out-of-date software for third-party software or services, reinstalling software, updating server environment settings (e.g., to prevent two or more services from running simultaneously), updating server configuration settings (e.g., to help improve performance), etc.

In stage (C), the analysis module420of the management server410analyzes the server environment information408to determine one or more conditions422experienced by the server environment408. In particular, the analysis module420can determine whether one of predetermined set of conditions representing a problem with the server environment408has occurred. The analysis module420can also identify one or more potential causes424of detected conditions422, and one or more potential corrections426that may remove the conditions422and/or their causes424.

In the example, the identified condition422is that the server environment has experienced three crashes in the past 24 hours. In determining the conditions422, the analysis module420of the management server410may determine a number of errors or crashes that the server environment has recently experienced (e.g., in the past 30 minutes, the past hour, the past 12 hours, the past 24 hours, etc.) based on the server environment information. The analysis module420may deem the errors and/or crashes to be a condition if it determines that any errors and/or crashes occurred. The analysis module420may deem the errors and/or crashes to be a condition based on the type of error and/or crash, or may identify a particular condition based on the type of error and/or crash. The analysis module420may deem the errors and/or crashes to be a condition based on the number of errors and/or crashes that the server environment has experienced within a particular time frame. For example, the analysis module420may compare the number of errors and/or crashes with one or more thresholds. In this example, if the number of errors and/or crashes recently experienced by the server environment exceeds the one or more thresholds, the analysis module420may deem the errors and/or crashes to be a condition, or may identify a particular condition based on the number of errors and/or crashes. The analysis module420may identify a particular condition based on the type of errors and/or crashes, and the number of errors and/or crashes.

In determining the conditions422, the analysis module420of the management server410may use the server environment information408to determine a current software version implemented by the server environment. The analysis module420may compare the current software version implemented by the server environment with the most recent version of the software (or the most recent version of the software that is applicable to the server environment and/or the third-party server402). If the current software version implemented by the server environment does not match the most recent version of the software (or the most recent version of the software that is applicable to the server environment and/or the third-party server402), the analysis module420may determine that the condition is out-of-date software.

In determining the conditions422, the analysis module420of the management server410may use the server environment information408to determine the current performance of the server environment. If the performance of the server environment is below an expected performance level (e.g., one or more thresholds), the analysis module420may identify that poor performance is a condition that the server environment is experiencing. The performance of the server environment may be an overall performance such as, for example, a relative performance index (RPI) for the server environment. The RPI is a normalized performance value that is independent (or nearly independent) of the characteristics of a particular server environment. The RPI may be calculated by the management server410. The performance of the server environment may be the performance for a particular category (e.g., response time). Where the performance of the sever environment in a particular category is below an expected performance for that category, the analysis module420may identify that poor performance in that particular category is a condition that the server environment is experiencing. An expected performance level may be calculated based on past performance results of the server environment and/or the third-party server402, performance results from other server environments having a similar configuration and/or load levels (e.g., similar cache size, same software version, similar capacity, similar average load levels, etc.), and/or estimated performance results based on the configuration of the server environment and expected load levels

Here, the analysis module420determines that the conditions422that the server environment is experiencing are (i) crashes, and (ii) out-of-date software. The analysis module420may identify crashes as an issue because the number of crashes that the server environment experienced (three crashes) is more than an expected number of crashes (e.g., 0, 1, or 2) within a period of time (24 hours).

The analysis module420also determines potential causes424that may have caused the identified conditions422. In determining the potential causes424, the analysis module420may refer to a map or a lookup table as will be discussed in more detail below with respect toFIG. 6. The map or lookup table may associate conditions with specific causes, may associate specific causes with specific corrections, and may associate conditions with specific causes and corrections. The map or lookup table may be stored on the management server410. The map or lookup table may be stored in the data storage412. The map or lookup table may be updated as new information comes available (e.g., information indicating whether a correction was successful).

In determining the potential causes424, the analysis module420may analyze the configuration settings of the server environment within the server environment information408to determine if there are any problematic settings or problematic combination of settings. Again, the problematic settings or problematic combination of settings may be determined by the analysis module420referring to a map or a lookup table.

In determining the potential causes424, the analysis module420may analyze the status of the server environment within the server environment information408to determine if there are any problematic software or services running, or if there are any problematic combinations of software or services running. In determining if there are any problematic software or services running (or combinations thereof), the analysis module420may identify the versions of the software or services running using the server environment information408. In determining if there are any problematic software or services running (or combinations thereof), the analysis module420may determine that an out-of-date service or software is the cause, or that a particular version of a service or software is the cause. The software or services may include server software, or third-party software or services. Again, the problematic software or settings (or combinations thereof) may be determined by the analysis module420referring to a map or a lookup table.

In determining the potential causes424, the analysis module420may analyze the server environment information408to determine recent changes to the server environment. These recent changes may include recent software updates, recently installed software, recent configuration changes, recent changes in average load levels, etc. The analysis module420may analyze the server environment information408to determine if the server environment faced these identified conditions422before the recent changes. If so, the analysis module420may eliminate one or more of the recent changes as a potential cause. For example, a server log within the server environment information408as part of the diagnostics may indicate that the server environment was experiencing crashes prior to the average load levels on the server environment increasing rapidly over the past 24 hours. In this example, the analysis module420may eliminate a recent increase in load level as a potential cause of the crashes of the identified conditions422. Again, the problematic configurations, software, or load levels may be determined by the analysis module420referring to a map or a lookup table.

In the illustrated example, the analysis module420identifies, based on the identified conditions422, two potential causes424. The potential causes424include (i) the server environment using software version 8.10 (out-of-date software), and (ii) a third-party software X being recently installed on the server environment and running on the server environment. The analysis module420identifies that the software version 8.10 as one of the potential causes424because it is the server software that the server environment is currently using but it is not the most recent version of the software. The analysis module420identifies the third-party software X being recently installed and running as one of the potential causes424of the conditions422.

The analysis module420also determines potential corrections426that may address the identified conditions422based on the identified potential causes424. In determining the potential corrections426, the analysis module420may refer to a map or a lookup table as will be discussed in more detail below with respect toFIG. 6.

In determining the potential corrections426, the analysis module420may compare the identified potential causes424with metadata associated with, for example, software updates, workflows (e.g., metadata418for Workflow1), and/or update packages. This metadata may contain, for example, descriptions, an indication of conditions addressed, or an indication of associated causes for the software updates, workflows, and/or update packages. This metadata may be stored by the management server410. This metadata may be stored in the data storage412. For example, the analysis module420may search through the available metadata for “third-party software.” In this example, the results of the search may contain the software update for version 8.20 since the metadata of the software update indicates that it “fixes errors that were arising with some third-party software.”

In some implementations, the analysis module420will generate a notification to send to one or more clients. The notification may contain an indication of the identified conditions422and the potential causes424. The notification may also contain an indication of one or more potential corrections. The analysis module420may wait for a reply from the client. The notification may request from the client an indication or confirmation of a potential correction. The reply may contain the indication or confirmation of the potential correction. For example, the notification may include a field where the client can enter a potential correction and the reply may contain an indication of the potential correction. For example, the notification may include a set of potential corrections (e.g., in the case where the analysis module420identifies multiple potential corrections) and the reply includes an indication of a selection of a potential correction within the set of corrections. For example, the notification may include a single potential correction (e.g., in the case where the analysis module420identifies one potential correction) and may request a client to confirm the potential correction. In this example, the reply may contain an indication of a confirmation or a denial of the potential correction.

In the illustrated example, the analysis module420identifies, the potential correction426. The potential correction426is an update to the server software to version 8.20. The analysis module420may have identified the potential correction426based on the update to the server software being the only correction for out-of-date server software, based on of the metadata associated with the update indicating that it improves system stability and fixes errors arising from third-party software, based on success rates of fixing server crashes for other server environments, and/or based on the potential correction426being the only potential correction suggested by a map or lookup table for the identified conditions422and potential causes424.

In stage (D), the analysis module420sends at least the identified potential correction426to the package look up/generation module430of the management server410. The package look up/generation module430either identifies an existing update package for the potential correction426, or, if no such update package currently exists, generates a update package for the potential correction426.

In stage (E), the package look up/generation module430, in looking up an existing update packages associated with the potential correction426, searches through a set of existing update packages432. The set of existing update packages432is stored in the data storage412. In order to perform a search on the set of existing update packages432, the management server410may first retrieve the set of existing update packages432from the data storage412. Searching through the set of existing update packages432may include, for example, comparing a name, description, or other metadata of the potential correction426(e.g., description of the software update for version 8.20 that is stored as part of the metadata associated with the software update for version 8.20) with metadata associated with each of the update packages in the set of existing update packages432. Searching through the set of existing update packages432may include, for example, comparing a name, description, or other metadata of the potential correction426with metadata associated with contents of each of the update packages in the set of existing update packages432. This metadata may include for example, the metadata associated with workflows within an update package, metadata associated with software within the update package, metadata associated with agent software within the update package, etc.

The metadata associated with each of the update packages within the set of existing update packages432may include a description of the update packages, an indication of the condition they are meant to address, and/or an indication of the correction that they are associated with. For example, as shown, the metadata for a first update package434(Package A) within the set of existing update packages432includes “update software to version 8.20.” The metadata for a second update package (Package B) within the set of existing update packages432includes “improve server performance during high load scenarios.” The metadata for a third update package (Package C) within the set of existing update packages432includes “stop service Y when service Z is running.”

A first workflow (Workflow1) of a workflow library416(Workflow Library Y) is associated with metadata418. This metadata418may include, for example, a general description for the workflow, the services that the workflow affects and/or a description of how the services are affected, and the permission levels required to deploy the workflow. Here, the general description for the first workflow is that the workflow is used to “update software.” The services affected by the first workflow are all server services (e.g., since a shutdown is required). A description of how the services are affected is a shutdown of all services indirectly by agent software.

If the package look up/generation module430is unable to identify an existing update package within the set of existing update packages432for the potential correction426, the package look up/generation module430will generate an update package for the potential correction426.

As will be discussed in more detail with respect toFIG. 5, the update package may contain one or more workflows, one or more pieces of software, one or more installers for each of the pieces of installer, and agent software depending on what server environment services may need to be shut down during deployment of the update package.

In generating an update package, the package look up/generation module430may refer to a map or a lookup table to determine what services may need to be stopped, restarted, updated, or replaced in order to carry out the potential correction426. The map or lookup table may identify not only the services that are directly affected (e.g., the ones that are being updated or replaced), but any services that rely on those services and could be indirectly affected by a change to those services or a change in state of those services. The map or lookup table may identify existing workflows within the workflow libraries414that can be used to stop, restart, update, and/or replace the directly affected and/or indirectly affected services. The package look up/generation module430may be able to use the information provided by the map or lookup table to search through the workflow library414to identify workflows to stop, restart, update, and/or replace the directly affected and/or indirectly affected services. The package look up/generation module430may modify a workflow in order to stop, restart, update, and/or replace a specific directly affected and/or indirectly affected service. For example, the package look up/generation module430may identify a workflow for stopping and restarting a service. In this example, the package look up/generation module430may replicate and modify the workflow for each service it needs to stop and restart, and include the each of the modified workflows in the generated update package (e.g., if three different services may need to be stopped, the package look up/generation module430may create three different versions of a workflow, one for each of the services, and include the three different versions in the update package). If a workflow cannot be identified, the package look up/generation module430may generate a workflow using, for example, the information provided by the map or lookup table.

In generating an update package, the package look up/generation module430may determine one or more workflows from the workflow libraries414in the data storage412to be included in the update package. In determining whether to include a workflow, the package look up/generation module430may compare a name, description, or other metadata of the potential correction426with metadata associated with each of the workflows in the workflow libraries414(e.g., the metadata418associated with Workflow1). For example, the package look up/generation module430may compare the name of the correction426(Update software version to version 8.20) with the metadata associated with each of the workflows in the workflow libraries414. This comparison may reveal a match between the potential correction426and the first workflow since the metadata418contains “update software” as part of the description for the first workflow. In determining whether to include a workflow, the package look up/generation module430may identify workflows that have been included in other update packages for other server environments to address conditions similar to the conditions422, or for corrections that are similar (though not necessarily the same). For example, the correction

In generating an update package, the package look up/generation module430may determine whether agent software should be included. Agent software may be required in situations where all or critical systems need to be shut down on the server environment such that the server environment cannot restart the systems itself. The package look up/generation module430may determine whether agent software is needed based on, for example, the type of potential correction426. For example, by referring to a lookup table, the package look up/generation module430may determine that all server software updates require agent software since a system-wide shut down may be required. The package look up/generation module430may determine whether agent software is needed based on, for example, metadata associated with the potential correction426and/or metadata associated with a workflow to be included in the update package. For example, the package look up/generation module430may identify based on the metadata418of the first workflow that agent software is required since the metadata418indicates that the services are to be shut down “through agent software.”

An update package generated by the package look up/generation module may be added to the set of existing update packages432as a new update package.

In some implementations, the package look up/generation module430modifies an existing update package instead of generating an entirely new update package. In these implementations, a modification to a package may be required based on, for example, the particular configuration of the server environment (e.g., as indicated by the server environment software408), the particular software used by the server environment, the particular hardware available to and/or used by the server environment, new software coming available, etc. For example, the package look up/generation module430may identify an update package for updating server software. However, the update package contains software for an out-of-date version of the server software (e.g., version 8.10). Instead of generating a new update package, the package look up/generation module430may modify the update package by replacing the software update for version 8.10 with a software update for version 8.20, and updating the software installer. In this example, the package look up/generation module430may be able to keep the same workflow (e.g., Workflow1) without modifications, and may be able to keep the same agent software with modifications. A modified update package may be added to the set of existing update packages432as a new update package.

Here, the package look up/generation module430identifies the first update package434while looking up an update package from among the set of existing update packages432for the potential correction426. The package look up/generation module430may identify the first update package based on a map or lookup table associating the potential correction426with the first update package434, based on a comparison of the metadata associated with the software update for version 8.20 with the metadata associated with the first update package434, based on a comparison of the metadata associated with the software update for version 8.20 with metadata for software, workflows, or agent software within the first update package434, etc.

In stage (F), the package look up/generation module430outputs the identified first update package434. As shown, the first update package434contains server software version 8.20, an update installer for the server software version 8.20, the first workflow, and agent software.

The management server410may assign a permission level to the first update package434. This permission level may depend on, for example, the systems or services that the first update package affects (e.g., if critical systems are being affected), whether any software is being updated or replaced, whether any server environment configuration settings are being changed, etc. For example, here, because all services will be shut down upon deployment of the first update package434and/or because the first update package434updates the server software, the management server410may assign an admin permission level to the first update package434. Accordingly, a third-party user would need an admin permission level in order to deploy the first update package434.

In some implementations, the management server410may receive permission level(s) from the third-party server402. The third-party server402may send an indication of the permission level(s) required for particular update packages (e.g., for the update packages in the set of existing update packages432), an indication of the permission level(s) required for a particular type of update package (e.g., based on the actions taken by update package upon deployment), an indication of the permission level(s) required for particular workflows (e.g., for the workflows within the workflow libraries414), and/or an indication of the permission level(s) required for starting, shutting down, and/or restarting particular systems or services. Where an indication of the permission level(s) is provided by the third-party server402for a particular type of update package, for particular workflows, and/or for starting, shutting down, and/or restarting particular systems or services, the management server410may assign a permission level to one or more update packages (e.g., the first update package434) based on the indication of the permission level(s) provided by the third-party server402.

In stage (G), the management server410optionally retrieves the first update package434from the set of existing update packages432. Alternatively, the management server410may have previously retrieved the set of existing update packages432in stage (D) or stage (E).

In stage (H), the management server410sends the first update package434to the third-party server402for deployment over the network440.

In stage (I), the update package434is deployed in the server environment. The deployment may take place on the third-party server402or may take place remotely with respect to the third-party server402when, for example, the server environment is hosted by a cloud computing platform.

The deployment of the first update package434may be automatic upon receipt of the first update package434at the third-party server402in stage (H). The deployment of the first update package434may be automatic based on a requisite permission level associated with the first update package434and/or associated with the one or more contents of the first update package434(e.g., a permission level associated with the first workflow as indicated by the metadata418). As an example, if the third-party server402is configured to automatically deploy any update packages with a permission level of read/write and below and if the first update package434has a requisite permission level of only read, then the first update package434will be automatically deployed upon the third-party server402receiving the first update package434.

Similarly, the third-party server402may be configured to automatically deploy update packages based on, for example, the systems or services that the update package affects, the operations taken by workflows within the update package, the current load on the server environment, and/or the time of day. As an example, if the update package434is determined by the third-party server402to affect critical systems but the current load on the server environment is low and is expected to stay low based on the time of day, then the third-party server402may automatically deploy the update package434. As an example, if an update package is determined to be able to run in the background without affecting critical systems, the third-party server402may automatically deploy the update package despite the current load on the system or the time of day. As an example, if a update package is determined to only affect non-critical systems or services but the current load on this system is high or is anticipated to increase based on the time of day, the third-party system402may either weight to deploy the update package until a time of day when the load is anticipated to be low, until the load dips below a threshold amount (e.g., user capacity on the server environment is below 40%, 30%, 25%, 20%, 15%, 10%, 5%, etc.), and/or until the third-party server receives third-party user approval with a requisite permission level (e.g., approval from a third-part administrator).

The deployment of the first update package434may be initiated by the third-party user406authorizes the deployment. In some implementations, the third-party user406must have a permission level equal to or higher than a requisite permission level for deploying the first update package434. The requisite permission level for deploying the first update package434may be indicated in the metadata associated with the first update package. The requisite permission level for deploying the first update package434may be indicated in the first workflow included in the first update package434.

In some implementations, where an update package includes multiple workflows, the third-party user406may need a permission level as high as the highest permission level between the multiple workflows. For example, if an update package includes a first workflow requiring a permission level of read/write and a second workflow requiring a permission level of admin, then the third-party user406would need a permission level of admin in order to deploy the update package.

In some implementations, the system400may perform testing on the update package434prior to deployment. For example, where the server environment is a cloud computing environment, the management server410or the third-party server402may make a clone of the server environment, deploy the update package434on the clone environment, test the output, and, based on the output, determine if the update package434works as intended. Where the management server410performs the testing, the management server410may, for example, only send the update package434to the third-party server402once the management server410determines that the update package434works as intended. The management server410may also provide a notification to the third-party server402that the update package434has passed testing. This notification may observed by the third-party user406through, for example, a dashboard on the user device404. Where the management server410performs the testing and determines that the update package434does not work as intended, the management server410may modify the update package434, notify a client to modify the update package434, or select/generate a new update package by, for example, repeating stages (B) through (F).

In modifying the update package434, the management server410may use the test results to modify the update package434and/or to identify components of the update package434that may need modification. For example, if testing revealed that a service could not be stopped, the management server410may identify a specific operation of a workflow that is meant to stop the service as having failed during testing. For example, if testing revealed that there was a failure during the installation of server software, the management server410may automatically replace the installer in the update package434with a different installer and repeat testing with the new installer.

FIG. 5is a diagram that illustrates a more detailed view of the update package434. The update package434contains a workflow502, software504(e.g., a patch, upgrade, or other executable code), an installer506for the server software504, and agent software508. When the update package434is deployed on a server environment, the first operation in the workflow502will run. In general, update packages may include more or fewer types of items than shown inFIG. 5.

In some implementations, the update package434contains executable software other than server software504and agent software508. In these implementations, the update package434may also include one or more additional installers for the executable software.

The workflow502is a workflow for updating server environment software. The workflow502includes a number of conditional and branching operations. The workflow502includes a first operation to request authentication from a third-party administrator to install the agent software508. The workflow502includes a second operation to install the agent software508(e.g., on the third-party server402) if the authentication from a third-party administrator is received. The workflow502includes a third operation to run the agent software. The workflow502includes a fourth operation to verify the installation. The workflow502includes a fifth operation to send a successful installation notification to the management server410and to a third-party administrator only if the installation is verified. The workflow502includes a sixth operation, as an alternate operation to the fifth operation, to send a failed installation notification to the management server410.

In some implementations, the branch of operations that the workflow follows is based on for example, the current CPU utilization, the current number of users, the current load, the priority of tasks, the time of day, the anticipated CPU utilization, the anticipated load, etc. For example, if CPU utilization is currently low, the workflow will install and run software X, Y, and Z at the same time. However, if CPU utilization is currently high, the workflow will install and run software X, Y, and Z separately.

In some implementations, one or more operations of a workflow may be conditional on various parameters. For example, an operation to install or update software may wait until authorization from a third-party user having a requisite permission level is received. For example, an operation to install or update software may wait until the current load on the third-party server is low, until the CPU utilization is low, and/or until there are no high-priority users.

When the third operation of the workflow502is run, the agent software508is called to run. The agent software508is third-party software with respect to the management server410and the third-party server402. The agent software508can shut down and restart certain systems and services of the third-party server402that the third-party server402would be unable to restart automatically.

When the agent software508is called to run, the agent software508performs a first operation to shut down the server environment. Next, the agent software508performs a second operation to call the installer506in order to install the server software504. Finally, the agent software208performs a third operation to restart the server environment.

In some implementations, the update package434is customized for the third-party server402and/or the server environment of the third-party server402. Accordingly, the update package434may be different than another update package for a different sever environment of a different server even if the update package434and the other update package are both for the same correction (e.g., the potential correction426), are both for installing the server software204, both include the workflow202(or set of workflows), etc. The update package434may be customized, for example, based on (1) the individualized diagnostics and history for each server, (2) results from testing the update package for clones of the different servers, and (3) other factors. These other factors may include, for example, the configuration of the each of the server environments, the load levels on each of the servers and/or server environments, the user capacity of each of the servers and/or server environments, the hardware and/or hardware limitations of each of the servers, etc.

In some implementations, the update package434may include instructions to change configuration settings of the server environment. These instructions may be part of one or more workflows included in the update package. These instructions may be included in the update package434in order to reduce the likelihood that a condition the server environment is experiencing will continue. These instructions may be included in the update package434in order to reduce the frequency of a condition that the server environment is experiencing. These instructions may be included in the update package434in order to counteract anticipated problems. For example, the server software504may require a minimum RAM amount or else may experience frequent crashes. In this example, if the amount of RAM currently allocated to the server environment is less than this amount, then the update package434will modify the configuration settings of the server environment to allocate it at least the minimum RAM amount.

FIG. 6is an example table602displaying relationships between server conditions, causes, and solutions. The table602may be a lookup table or represent mapping data referred to by the management server410shown inFIG. 4. The table602may be specific to the third-party server402shown inFIG. 4. The table602may be specific to the server environment of the third-party server402.

As shown, the table602includes at least three conditions604, at least eight potential causes606for the conditions604, and at least eleven potential corrections608for the conditions604and the potential causes606.

The first condition in the conditions604is a third-party server (e.g., the third party server402) experiencing errors. For this condition, there are two potential causes of the potential causes606. These two potential causes include (i) out-of-date software, and (ii) running Service A Version 1.0 at the same time as Service B Version 1.0 on the third-party server. For the potential cause related to out-of-date software, there is one potential correction of the potential corrections608. This potential correction is to update the server software. Accordingly, an update package for this potential correction would include at least the updated server software and an installer for the server software. For the potential cause related to running Service A with Service B, there are three potential corrections of the potential corrections608. A first potential correction is to again update the server software. A second potential correction is to update Service A from Version 1.0 to Version 2.0. Accordingly, an update package for this second potential correction would include at least executable software for Service A Version 2.0 and an installer for Service A Version 2.0. A third potential correction is update the configuration settings of the third-party server to prevent Service A and Service B from running at the same time. Accordingly, an update package for this third potential correction would include at least instructions for updating the configuration settings of the third-party server.

The second condition in the conditions604is a third-party server (e.g., the third party server402) experiencing poor performance. For this condition, there are three potential causes of the potential causes606. These three potential causes include (i) out-of-date software, (ii) the third-party server reaching user capacity limits, and (iii) the third-party server experiencing a surge in server load. For the potential cause related to out-of-date software, there is one potential correction of the potential corrections608. This potential correction is to update the server software. Accordingly, an update package for this potential correction would include at least the updated server software and an installer for the server software. For the potential cause related to reaching user capacity limits, there is one potential correction of the potential corrections608. This potential correction is to update the configuration settings of the third-party server in order to, for example, increase the cache size and/or to allocate more RAM to the server environment of the third-party server. Accordingly, an update package for this potential correction would include at least instructions for updating the configuration settings of the third-party server. For the potential cause related to a surge in server load, there is one potential correction of the potential corrections608. This potential correction is to update the configuration settings of the third-party server in order to, for example, increase the cache size and/or to clear the cache.

The third condition in the conditions604is a third-party server (e.g., the third party server402) experiencing server crashes. For this condition, there are three potential causes of the potential causes606. These three potential causes include (i) out-of-date software, (ii) data corruption, and (iii) hardware failure. For the potential cause related to out-of-date software, there is one potential correction of the potential corrections608. This potential correction is to update the server software. Accordingly, an update package for this potential correction would include at least the updated server software and an installer for the server software. For the potential cause related to data corruption, there are two potential corrections of the potential corrections608. The first potential correction is to reinstall the server software. The second potential correction is to update the server software. For the potential cause related to hardware failure, there is one potential correction of the potential corrections608. This potential correction is to update the configuration settings of the third-party server in order to, for example, reallocate resources form other systems to the server environment (e.g., CPUs, RAM, etc.).

In some implementations, a potential correction for a particular condition and cause is preferred over another potential correction for the same condition and cause. A potential correction may be preferred over another potential correction due to having been successfully tested, due to having a higher rate of success, due to not requiring critical systems and services to be shut down (e.g., the corresponding update package can be run in the background), due to the time of day, due to the load on the system, etc. For example, a potential correction has a higher rate of success but affects critical systems of the third-party server. In this example, the current load on the third-party server is high and/or the time of day indicates that there is an anticipated high load. Accordingly, the a potential correction with a lower chance of success, but one that does not affect critical systems or services, may be preferred at this time.

The table602may reflect these preferences. For example, the potential corrections608may be arranged based on preference. For example, for the condition of server crashes and the potential cause of data corruption, reinstalling server software may be preferred over updating the server software.

The table602may be updated over time. For example, the management server410may update the table602based on the success or failure of an update package to correct a condition. For example, the management server410may update the table602based on new conditions being detected. For example, the management server410may update the table602based on new software becoming available. For example, the management server410may update the table602based on new or different hardware of a third-party server, or new or different hardware allocated to a server environment. For example, the management server410may update the table602based on the software or services running on a third-party server or on a server environment.

The table602may also or alternatively be updated by a user of the management server410, such as an administrator. The user of the management server410may update the table602based on the success or failure of one or more update packages to correct a condition, based on new conditions being detected, based on new or different hardware of a third-party server, based on new or different hardware allocated to a server environment, and/or based on the software or services running on a third-party server or on a server environment.

Particular embodiments of the invention have been described. Other embodiments are within the scope of the following claims. For example, the steps recited in the claims can be performed in a different order and still achieve desirable results.