Patent Publication Number: US-2023161579-A1

Title: Systems and methods to control configurations of customer-specific deployments of sets of enterprise software applications

Description:
FIELD OF THE DISCLOSURE 
     The present disclosure relates to systems and methods to control configurations of deployments of sets of enterprise software applications to users. 
     BACKGROUND 
     Distributing consumer software is known. Manually distributing or deploying suites or sets of software applications is known. Manually updating a deployment of a set of software applications is known, and both error prone and inefficient. 
     SUMMARY 
     One aspect of the present disclosure relates to a system configured to control configurations of deployments of sets of enterprise software applications to users. A set of enterprise software applications is configured to be executed on client computing platforms that are associated with the users. The system may include electronic storage, one or more hardware processors configured by machine-readable instructions, a first deployment server, and/or other components. The electronic storage may be configured to store information for the set of enterprise software applications, the set of enterprise software applications including at least a first software application, a second software application, and a third software application. The information may include (i) executable code of the set of enterprise software applications, and (ii) a configuration database that may include a set of deployment-specific configuration settings and corresponding setting values that define a deployment on the first deployment server of the set of enterprise software applications. The set of deployment-specific configuration settings may include one or more of (a) connection parameters to control connections between the configuration database and the set of enterprise software applications, (b) environment variables, and (c) resource parameters to control available computational resources and available storage resources. 
     The system may be configured to effectuate the deployment of the set of enterprise software applications on the first deployment server in accordance with the set of deployment-specific configuration settings and the corresponding setting values. Subsequent to the deployment, the first deployment server is accessible by the client computing platforms associated with the users. Subsequent to the deployment, the first deployment server is configured such that the client computing platforms execute the set of enterprise software applications through the first deployment server. The system may be configured to obtain multiple modification databases including a first modification database and a second modification database. Individual ones of the multiple modification databases may include one or more modification-specific configuration settings and one or more corresponding setting values. The multiple modification databases are organized in a particular order such that the first modification database is ahead of the second modification database in the particular order. The system may be configured to modify, for individual ones of the multiple modification databases according to the particular order, the deployment of the set of software applications on the first deployment server by modifying individual ones of the set of deployment-specific configuration settings that match individual ones of the one or more modification-specific settings to individual ones of the one or more corresponding setting values. Modifications of the individual ones of the set of deployment-specific configuration settings are made while the deployment on the first deployment server continues to be accessible by the client computing platforms. The modifications are made according to the particular order such that individual modification-specific configuration settings included in the first modification database are modified ahead of individual modification-specific configuration settings included in the second modification database. 
     Another aspect of the present disclosure related to a method of controlling configurations of deployments of sets of enterprise software applications to users, wherein a set of enterprise software applications is executed on client computing platforms that are associated with the users. The method may include storing information for the set of enterprise software applications, the set of enterprise software applications including at least a first software application, a second software application, and a third software application. The information may include (i) executable code of the set of enterprise software applications, and (ii) a configuration database that may include a set of deployment-specific configuration settings and corresponding setting values that define a deployment on a first deployment server of the set of enterprise software applications. The set of deployment-specific configuration settings may include one or more of (a) connection parameters to control connections between the configuration database and the set of enterprise software applications, (b) environment variables, and (c) resource parameters to control available computational resources and available storage resources. 
     The method may include effectuating the deployment of the set of enterprise software applications on the first deployment server in accordance with the set of deployment-specific configuration settings and the corresponding setting values. Subsequent to the deployment, the first deployment server is accessible by the client computing platforms associated with the users. The first deployment server is configured, subsequent to the deployment, such that to the client computing platforms execute the set of enterprise software applications through the first deployment server. The method may include obtaining multiple modification databases including a first modification database and a second modification database. Individual ones of the multiple modification databases may include one or more modification-specific configuration settings and one or more corresponding setting values. The multiple modification databases are organized in a particular order such that the first modification database is ahead of the second modification database in the particular order. The method may include modifying, for individual ones of the multiple modification databases according to the particular order, the deployment of the set of software applications on the first deployment server by modifying individual ones of the set of deployment-specific configuration settings that match individual ones of the one or more modification-specific settings to individual ones of the one or more corresponding setting values. Modifications of the individual ones of the set of deployment-specific configuration settings are made while the deployment on the first deployment server continues to be accessible by the client computing platforms. The modifications are made according to the particular order such that individual modification-specific configuration settings included in the first modification database are modified ahead of individual modification-specific configuration settings included in the second modification database. 
     As used herein, any association (or relation, or reflection, or indication, or correspondency) involving servers, processors, client computing platforms, software applications, deployments, databases, modifications, settings, setting values, pipelines, versions, steps, tasks, selections, determinations, comparisons, analyses, improvements, reductions, presentations, notifications, user interfaces, user interface elements, portions, fields, character sequences, and/or another entity or object that interacts with any part of the system and/or plays a part in the operation of the system, may be a one-to-one association, a one-to-many association, a many-to-one association, and/or a many-to-many association or “N”-to-“M” association (note that “N” and “M” may be different numbers greater than 1). 
     As used herein, the term “obtain” (and derivatives thereof) may include active and/or passive retrieval, determination, derivation, transfer, upload, download, submission, and/or exchange of information, and/or any combination thereof. As used herein, the term “effectuate” (and derivatives thereof) may include active and/or passive causation of any effect, both local and remote. As used herein, the term “determine” (and derivatives thereof) may include measure, calculate, compute, estimate, approximate, extract, generate, and/or otherwise derive, and/or any combination thereof. 
     These and other features, and characteristics of the present technology, as well as the methods of operation and functions of the related elements of structure and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals designate corresponding parts in the various figures. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only and are not intended as a definition of the limits of the invention. As used in the specification and in the claims, the singular form of “a”, “an”, and “the” include plural referents unless the context clearly dictates otherwise. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG.  1    illustrates a system configured to control configurations of deployments of sets of enterprise software applications to users, in accordance with one or more implementations. 
         FIG.  2    illustrates a method for controlling configurations of deployments of sets of enterprise software applications to users, in accordance with one or more implementations. 
         FIGS.  3 A- 3 B  illustrate exemplary software pipelines including multiple software applications, as may be used in a system configured to control configurations of deployments of sets of enterprise software applications to users, in accordance with one or more implementations. 
         FIG.  4    illustrates exemplary software pipelines including multiple software applications, as may be used in a system configured to control configurations of deployments of sets of enterprise software applications, in accordance with one or more implementations. 
     
    
    
     DETAILED DESCRIPTION 
       FIG.  1    illustrates a system  100  configured to control configurations of deployments of sets of enterprise software applications  135  to users. For consumer software, an individual installation of a specific version of a software application, installed on one or more particular computing devices, may be common, but this model and/or mechanism of distribution and/or installation may not work well, or may not be adequate and/or flexible enough for sets of enterprise software applications  135 . Enterprise software applications  135  may be distributed among enterprises, corporate clients, and/or other groups of employees or other people interacting and/or working together. As used herein, a corporate client may refer to a group of people working together and/or sharing some responsibilities and/or goals as a group. For example, a corporate client may refer to a corporation, a company, a business, an enterprise, a government entity, a partnership, an organization, and/or another group of people working together and/or sharing some responsibilities and/or goals as a group. In some implementations, a corporate client may include and/or form a legal entity, or be associated with a legal entity. 
     As used herein, an instance of an enterprise software application may simply be referred to as an enterprise software application (or software application). Enterprise software applications  135  may include executable code of (machine-readable) instructions that form a program. In some implementations, executable code and/or instructions may be executed by a processor to perform one or more particular features, tasks, and/or functionality. As used here, a processor is a machine and not a person. In some implementations, execution by a processor may include execution by a machine that is assisted, helped, controlled, managed, and/or otherwise jointly operated by a person. Enterprise software applications  135  may include a first software application  135   a , a second software application  135   b , a third software application  135   c , a fourth software application  135   d , and so forth. In some implementations, multiple enterprise software applications may be interconnected and/or otherwise combined to form more elaborate software applications or perform more elaborate functions than the individual software applications. For example, in some implementations, multiple software applications may be combined to form one or more pipelines of software applications. For example, in a software pipeline, the output and/or result produced and/or generated by first software application  135   a  may subsequently be used as input and/or source for second software application  135   b , and so forth. 
     Referring to  FIG.  1   , in some implementations, system  100  may include one or more servers  102 , deployment server(s)  134 , client computing platform(s)  104 , user interface(s)  128 , and/or external resources  132 . Server(s)  102  may be configured to communicate with one or more client computing platforms  104  or deployment servers  134  according to a client/server architecture and/or other architectures. Client computing platform(s)  104  may be configured to communicate with other client computing platforms via server(s)  102  and/or according to a peer-to-peer architecture and/or other architectures. In some implementations, users  127  may access system  100  via client computing platform(s)  104  and/or user interface(s)  128 . In some implementations, users  127  may access system  100  via user interfaces  128 . Users  127  may include a first user, a second user, a third user, a fourth user, and/or other users. One or more of users  127  may be administrative users, such as a first administrative user, a second administrative user, a third administrative user, and so forth. An administrative user may deploy a particular set of enterprise software applications  135  (also referred to as a “suite”) on one or more deployment servers  134 . By virtue of the systems and methods described in this disclosure, the administrative user may configure such a deployment, modify the configuration of a deployment, and/or perform other tasks related to the use of a deployment or a deployment server  134 . 
     In some implementations, one or more sets of users may be organized under one or more corporate clients. For example, a first set of users may be organized under a first corporate client, e.g., as the employees of the first corporate client. In some implementations, one or more sets of users may be organized under one or more organizational subdivisions of an individual corporate client. For example, a second set of users may be organized under a first subdivision of the first corporate client. As used herein, organizational subdivisions may be (based on) groups of employees (e.g., a research group, or the junior associates), departments (e.g., a compliance department), locations (e.g., the San Francisco office), and/or other entities within corporate clients or legal entities. In some implementations, an administrative user may be associated with one or more corporate clients and/or one or more organizational subdivisions of a corporate client. In some implementations, a particular deployment of a suite may be specific to a particular corporate client, a particular organization subdivision of an individual corporate client, or to a group of people. 
     In some implementations, individual ones of users  127  may be associated with individual client computing platforms  104 . For example, a first user may be associated with a first client computing platform  104 , a second user may be associated with a second client computing platform  104 , and so forth. In some implementations, individual user interfaces  128  may be associated with individual client computing platforms  104 . For example, a first user interface  128  may be associated with a first client computing platform  104 , a second user interface  128  may be associated with a second client computing platform  104 , and so forth. 
     Server(s)  102  may be configured by machine-readable instructions  106 . Machine-readable instructions  106  may include one or more instruction components. The instruction components may include computer program components. The instruction components may include one or more of a storage component  108 , a deployment component  110 , a patch component  112 , a modification component  114 , a notification component  116 , a monitoring component  118 , a presentation component  120 , and/or other instruction components. 
     Storage component  108  may be configured to electronically store information. In some implementations, storage component  108  may be configured to electronically store information in electronic storage  130 . Stored information may include one or more sets of software applications  135 , including but not limited to a particular set of enterprise software applications  135 . Stored information may include executable code of software applications. Stored information may include binary code to install software applications. Stored information may include executable code to install software applications. Stored information may include installed software applications that are executable by users  127 . By way of non-limiting example, the software applications may include one or more of first software application  135   a , second software application  135   b , third software application  135   c , fourth software application  135   d , and so forth. In some implementations, the software applications may be organized in different sets and/or subsets, which may in some cases overlap, and in some cases be mutually exclusive. In some implementations, particular sets of interconnected individual software applications may form software pipelines. In some implementations, sets of interoperating individual software applications may form software pipelines. 
     In some implementations, the stored information may include one or more configuration databases  137 , including but not limited to a particular configuration database  137   a . Configuration database  137   a  may include a set of deployment-specific configuration settings and corresponding setting values that define a deployment on a particular deployment server  134  of set of enterprise software applications  135 . As used herein, the term “deployment-specific” may refer to a particular deployment (of software applications) on a particular deployment server  134 . 
     The set of deployment-specific configuration settings include one or more of (a) connection parameters to control connections between configuration database  137   a , set of enterprise software applications  135 , and/or particular deployment server  134 , (b) environment variables, (c) resource parameters to control available computational resources and available storage resources, (d) one or more infrastructure parameters that control one or more of a filesystem, one or more databases, and a cluster of particular deployment server  134 , and/or other deployment-specific configuration settings. In some implementations, the set of deployment-specific configuration settings includes one or more parameters that control individual software applications (e.g., which version is currently the default version, or which version is to be used in a particular type of software pipeline) and/or individual software pipelines (e.g., which particular versions of software applications to include or combine in a particular software pipeline). In some implementations, the set of deployment-specific configuration settings includes one or more parameters that control a Kubernetes-based platform (not depicted in  FIG.  1   ), or other container orchestration platforms. By way of non-limiting example, one or more of these parameters may be related to mounting a file system onto a Kubernetes cluster, e.g., through a volumeMount configuration block. Kubernetes supports different types of volumes for storage, including but not limited to ephemeral volumes, persistent volumes, and/or other types of volumes. By way of non-limiting example, one or more of these parameters may be related to CPU or memory allocation to a container running in a particular Kubernetes cluster, or to the number of replicas of a particular container to run in the particular Kubernetes cluster. 
     Deployment component  110  may be configured to effectuate the deployment of set of enterprise software applications  135  on one or more deployment servers  134  (e.g., on a first deployment server  134 ). In some implementations, deployment component  110  may deploy set of enterprise software applications  135  on a particular deployment server  134 . In some implementations, deployment may include storing and/or installing software applications such that users can access and/or execute the software applications on their client computing platforms  104  (in other words, the particular deployment server  134  is accessible by client computing platforms  104  that are associated with the users). Deployment may include installing, setting up, and/or configuring the particular deployment server  134  such that client computing platforms  104  execute the software applications through the particular deployment server  134  (e.g., the front-end and/or user interaction for a particular software application may be executed on a client computing platform  104 , while the back-end and/or resource-intensive operations (e.g., in terms of one or more of memory or storage usage, computation, bandwidth, file handles, network sockets, etc.) may be executed on the particular deployment server  134 ). The users may interact with the software applications through user interfaces  128  associated with client computing platforms  104 . Deployment by deployment component  110  may be based on a set of deployment-specific configuration settings and corresponding setting values, e.g., as included in configuration database  137   a . A particular deployment on particular deployment server  134  may be in accordance with the set of deployment-specific configuration settings and corresponding setting values that are included in configuration database  137   a . In some implementations, the configuration settings that control operation of a particular deployment are part of that deployment, and may be not only included in the deployment, but accessible and modifiable as well. 
     Note that set of enterprise software applications  135  may include multiple versions of the same software application. By way of non-limiting example,  FIG.  4    depicts multiple exemplary software pipelines  40  including multiple software applications, as may be used by system  100 . As depicted, software pipelines  40  include software applications  41   a ,  41   b ,  41   c ,  41   d ,  41   e ,  41   f ,  41   g ,  41   h ,  41   i ,  41 J,  41 K, and  41 L, labeled “A1”, “A2”, “A3”, “B1”, “B2”, “B3”, “C1”, “C2”, “C3”, “D1”, “D2”, and “D3” as shown, respectively. Software application  41   a  (labeled “A1”), software application  41   b  (labeled “A2”), and software application  41   c  (labeled “A3”) may be different versions of the same software application, such that A1 is the oldest version, A2 is newer than A1, and A3 is newer than A2. Similarly, software applications  41   d ,  41   e ,  41   f  may be different versions of a different software application, software applications  41   g ,  41   h ,  41   i  may be different versions of yet another software application, and software applications  41 J,  41 K,  41 L may be different versions of a fourth software application. Accordingly,  FIG.  4    may depict 81 distinct software pipelines (or at least possible software pipelines). In some implementations, a set of software pipelines as depicted may be included in the same stored executable code, so that all distinct software pipelines are available at the same time, to multiple users, without requiring installations or re-installations of any software applications. In some implementations, a single deployment of the stored executable code supports execution of all distinct software pipelines at the same time. For example, the same user may launch different pipelines at the same time (say, a first software pipeline and a second software pipeline) such that output generated by each of the different pipelines is presented to the same user at the same time. 
     Referring to  FIG.  1   , patch component  112  may be configured to obtain and/or otherwise retrieve one or more databases, including but not limited to configuration databases, modification databases, and/or other databases. As used herein, a modification database may be referred to as a patch or as a “configuration-modification database”. For example, as depicted in  FIG.  1   , configuration databases  137  may include, by way of non-limiting example, a first modification database  137   b , a second modification database  137   c , and/or other configuration databases. In some implementations, patch component  112  may obtain multiple modification databases (e.g., first modification database  137   b  and second modification database  137   c ). Individual ones of the multiple modification databases include one or more modification-specific configuration settings and one or more corresponding setting values. The multiple modification databases may be organized in a particular order. For example, according to the particular order, first modification database  137   b  may be ahead of second modification database  137   c  (for modifications by modification component  114 ). 
     Modification component  114  may be configured to modify deployments of sets of software applications, including but not limited to set of enterprise software applications  135 . In some implementations, modification component  144  may modify one or more deployment servers  134  (e.g., a particular deployment server  134 ). For example, modification component  114  may add a deployment-specific configuration setting (and set it to a corresponding setting value) that was previously unknown and/or otherwise not set or used for a particular deployment. For example, modification component  114  may modify a deployment-specific configuration setting that was previously set and/or otherwise used by deployment component  110  for a particular deployment. By way of non-limiting example, assume a particular deployment (as deployed by deployment component  110 ) uses (i) a first connection parameter that controls connections between set of enterprise software applications  135  and particular deployment server  134 , (ii) a first environment variable for using cloud-based services, (iii) a first resource parameter that controls storage resources available to set of enterprise software applications  135 , and (iv) a first infrastructure parameter that controls a particular filesystem available to set of enterprise software applications  135 . In some implementations, modification component  114  may modify one or more of these four parameters and/or variables for the particular deployment. In some implementations, modification component  114  may modify all of these four parameters and/or variables for the particular deployment. 
     Modification component  114  may be configured to use individual ones of multiple modification databases according to a particular order, i.e., the particular order in which the multiple modification databases are organized as described in relation to patch component  112 . For example, modification component may modify a deployment (e.g., as deployed by deployment component  110 ) based on configuration database  137   a  by first making modifications based on first modification database  137   b , followed by making modifications based on second modification database  137   c . The particular order of the multiple modifications databases is maintained by modification component  114 . For example, assume configuration database  137   a  includes a first environment variable for using cloud-based services, which is set according to its corresponding setting value (e.g., a first Uniform Resource Locator or URL) to link to a first particular cloud-based server. Assume first modification database  137   b  includes the same first environment variable for using cloud-based services, but with a second setting value of a second URL. Assume second modification database  137   c  includes the same first environment variable for using cloud-based services, but with a third setting value of a third URL. By making modifications in the particular order as described, the first environment variable will be set to the third URL after these available modifications are finalized. In some implementations, modifications by modification component  114  may be made according to the particular order such that individual modification-specific configuration settings included in first modification database  137   b  are modified ahead of individual modification-specific configuration settings included in second modification database  137   c . 
     In some implementations, a new deployment-specific configuration setting in a modification database (e.g., in first modification database  137   b ) may be added to a deployment. By modifying or adding deployment-specific configuration settings, modification component  114  may create (the state of) a new configuration database that controls and/or defines the current configuration of a particular deployment on particular deployment server  134  (i.e., this controls the operations of the particular deployment). In other words, modification component  114  creates the state of the current configuration of a particular deployment on particular deployment server  134 . This new configuration database or this state may be referred to as the “materialized configuration table” or the “final state of the control plane”. 
     In some implementations, modifications by modification component  114  may be made such that the particular deployment on the particular deployment server  134  continues to be accessible by client computing platforms  104 . In some implementations, modifications by modification component  114  may be made without taking down the deployment or redeploying set of enterprise software applications  135  on the particular deployment server  134 . Alternatively, and/or simultaneously, modifications by modification component  114  may be made without restarting, resetting, or rebooting the particular deployment server  134 . In some cases, only affected software applications may need to be restarted. 
     In some implementations, modification component  114  may be configured to allow the most recent modification of a particular deployment-specific configuration setting to be undone, or “rolled-back”. For example, modification component  114  may modify the same first environment variable for using cloud-based services (as described above) through a third modification database, and undo the most recent change. Accordingly, the first environment variable will be set to the second URL after the modifications included in the third modification database are finalized. This mechanism may be referred to as “preserving” a rollback for the first environment variable. 
     Notification component  116  may be configured to generate, transfer, and/or present notifications to users  127 . For example, notification component  116  may present a notification (or otherwise notify) an administrative user regarding a particular deployment on a particular deployment server  134 . For example, notification component  116  may present a notification (or otherwise notify) an administrative user regarding modifications of a particular deployment based on one or more modification databases. In some implementations, notifications may be triggered by and/or based on operations of other components of system  100 , including but not limited to monitoring component  118 . 
     Monitoring component  118  may be configured to monitor deployment servers  134 , e.g., while being used by users  127 . Monitor component  118  may monitor usage of a particular deployment, including but not limited to rates of usage of different resources, such as memory, storage, computation, bandwidth, file handles, network sockets, etc. In some implementations, monitoring component  118  may determine whether a particular usage (or rate of usage) is outside of a preferred range for a particular resource. In some implementations, determinations by monitoring component  118  may trigger and/or otherwise form the basis for a notification by notification component  116 . 
     Presentation component  120  may be configured to present user interfaces  128  to users  127 , through their client computing platforms  104 . In some implementations, users  127  may access and/or otherwise use set of enterprise software applications  135  through users interfaces  128 . For example, a particular deployment server  134  may be accessible by client computing platforms  104  through a particular URL. In some implementations, all or most of a particular software application may be executed on client computing platforms  104  (including, at least, the front-end). In some implementations, all or most of a particular software application may be executed on particular deployment server  134  (including, at least, the back-end). Users  127  may interact with set of enterprise software applications  135  through users interfaces  128 . 
     By way of non-limiting example,  FIG.  3 A  depicts a set  30   a  of exemplary software pipelines, such that each as depicted includes versions of four applications (labeled “Application A”, “Application B”, “Application C”, and “Application D”, which, in some implementations may correspond to first software application  135   a , second software application  135   b , third software application  135   c , and fourth software application  135   d  as depicted in  FIG.  1   ). The columns in  FIG.  3 A  depict different applications, and the rows depict different versions of those applications. The current version may be indicated by a number “n”. As depicted, a first software pipeline  31   a  includes multiple software applications, in particular versions “n-2” of Application A, Application B, Application C, and Application D. In some implementations, first software pipeline  31   a  may be referred to by its components, for example as follows: A(n-2)B(n-2)C(n-2)D(n-2). In some implementations, first software pipeline  31   a  may collectively be referred to by some indicator and/or name (e.g., a release name). For example, first software pipeline  31   a  may be referred to as Software Pipeline X. Variations may be named based on the differences with Software Pipeline X. For example, a variation of Software Pipeline X in which version n-1 of Application A is used could be referred to as Software Pipeline X-A(n-1). A second software pipeline  31   b  may include different versions of these software applications, in particular A(n-1)B(n)C(n-1)D(n-2). In some implementations, second software pipeline  31   b  may collectively be referred to by some indicator and/or name (e.g., a release name). For example, second software pipeline  31   b  may be referred to as Software Pipeline Y. In some implementations, updated versions of Software Pipeline Y may be referred to by some indicator and/or name that references the differences with Software Pipeline Y. 
     In some implementations, numbers such as “n”, “n-1”, “n-2” may include or refer to a particular date (e.g., the release date for that version of an application and/or software pipeline). Alternatively, and/or simultaneously, version indicators of software applications may increase over time, e.g., based on one or more points of origin. For example, the particular versions used for a named software pipeline (such as Software Pipeline X) may be referred to by an indicator or number based on that name, and may serve as a point of origin in the naming scheme. For example, Software Pipeline X may be defined to include A(x)B(x)C(x)D(x). In some implementations, a variation of Software Pipeline X in which version “n-1” of Application A is used could be referred to as Software Pipeline X-A(x+1), or as Software Pipeline X-A1. A third software pipeline  31   c  may include different versions of these software applications, in particular A(n)B(n)C(n+1)D(n). For example, version “n+1” may refer to a beta version of an application. If the software pipeline using the current versions is referred to as Software Pipeline Z, then third software pipeline  31   c  may be referred to as Software Pipeline X-C1. 
     By way of non-limiting example,  FIG.  3 B  depicts a set  30   b  of exemplary software pipelines, such that each as depicted includes versions of four applications (labeled “Application A”, “Application B”, “Application C”, and “Application D”). The columns in  FIG.  3 B  depict different applications, and the rows depict different versions of those applications, such that newer versions are placed below older versions. In other words, time progresses as indicated on the left side of  FIG.  3 B , and the version of Application A used in a first software pipeline  32   a  is older than the version of Application A used in a second software pipeline  32   b , which is older than the version of Application A used in a third software pipeline  32   c . The naming convention for versions of Application A can use one or more of release dates, incremental numbers, major release names, and/or other (alphanumerical) names. As depicted in  FIG.  3 B , the naming convention for versions of Application A may be independent of (or even unrelated to) the naming conventions for versions of Application B, Application C, and/or Application D. For example, development of these software applications may be independent (e.g., by different corporate entities). In some implementations, software pipelines may use a naming convention as well, and this naming convention may be independent of the naming convention for individual software applications. For example, first software pipeline  32   a  may be named “Rosebud”, second software pipeline  32   b  may be named “Nairobi”, and third software pipeline  32   c  may be named “Dragon”. In some implementations, variations of these software pipelines may be named based on the difference with a named software pipeline. 
     Referring to  FIG.  1   , presentation component  120  may be configured to present information to users  127 . Presented information may include output generated by software applications and/or software pipelines. In some implementations, information may be presented on client computing platforms  104 . In some implementations, information may be presented through user interfaces  128 . In some implementations, output generated by a first software pipeline may be presented to a first user at the same time that output generated by a second software pipeline (which may be different from the first software pipeline) is presented to a second user. 
     In some implementations, server(s)  102 , deployment servers  134 , client computing platform(s)  104 , and/or external resources  132  may be operatively linked via one or more electronic communication links. For example, such electronic communication links may be established, at least in part, via one or more networks 13 such as the Internet and/or other networks. It will be appreciated that this is not intended to be limiting, and that the scope of this disclosure includes implementations in which server(s)  102 , client computing platform(s)  104 , and/or external resources  132  may be operatively linked via some other communication media. 
     A given client computing platform  104  may include one or more processors configured to execute computer program components. The computer program components may be configured to enable an expert or user associated with the given client computing platform  104  to interface with system  100  and/or external resources  132 , and/or provide other functionality attributed herein to client computing platform(s)  104 . By way of non-limiting example, the given client computing platform  104  may include one or more of a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, a NetBook, a Smartphone, a gaming console, and/or other computing platforms. 
     User interfaces  128  may be configured to facilitate interaction between users and system  100  and/or between users and client computing platforms  104 . For example, user interfaces  128  may provide an interface through which users may provide information to and/or receive information from system  100 . In some implementations, user interface  128  may include one or more of a display screen, touchscreen, monitor, a keyboard, buttons, switches, knobs, levers, mouse, microphones, sensors to capture voice commands, sensors to capture eye movement and/or body movement, sensors to capture hand and/or finger gestures, and/or other user interface devices configured to receive and/or convey user input. In some implementations, one or more user interfaces  128  may be included in one or more client computing platforms  104 . In some implementations, one or more user interfaces  128  may be included in system  100 . 
     External resources  132  may include sources of information outside of system  100 , external entities participating with system  100 , and/or other resources. In some implementations, external resources  132  may include a provider of modification databases on which system  100  and/or its components may operate. In some implementations, external resources  132  may include a provider of documents, including but not limited to electronic source documents on which system  100  and/or its components may operate. In some implementations, some or all of the functionality attributed herein to external resources  132  may be provided by resources included in system  100 . 
     Server(s)  102  may include electronic storage  130 , one or more processors  124 , and/or other components. Server(s)  102  may include communication lines, or ports to enable the exchange of information with a network and/or other computing platforms. Illustration of server(s)  102  in  FIG.  1    is not intended to be limiting. Server(s)  102  may include a plurality of hardware, software, and/or firmware components operating together to provide the functionality attributed herein to server(s)  102 . For example, server(s)  102  may be implemented by a cloud of computing platforms operating together as server(s)  102 . In some implementations, some or all of the functionality attributed herein to server  102  and/or system  100  may be provided by resources included in one or more client computing platform(s)  104 . 
     Electronic storage  130  may comprise non-transitory storage media that electronically stores information. The electronic storage media of electronic storage  130  may include one or both of system storage that is provided integrally (i.e., substantially non-removable) with server(s)  102  and/or removable storage that is removably connectable to server(s)  102  via, for example, a port (e.g., a USB port, a firewire port, etc.) or a drive (e.g., a disk drive, etc.). Electronic storage  130  may include one or more of optically readable storage media (e.g., optical disks, etc.), magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.), electrical charge-based storage media (e.g., EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive, etc.), and/or other electronically readable storage media. Electronic storage  130  may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and/or other virtual storage resources). Electronic storage  130  may store software algorithms, information determined by processor(s)  124 , information received from server(s)  102 , information received from client computing platform(s)  104 , and/or other information that enables server(s)  102  to function as described herein. 
     Processor(s)  124  may be configured to provide information processing capabilities in server(s)  102 . As such, processor(s)  124  may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information. Although processor(s)  124  is shown in  FIG.  1    as a single entity, this is for illustrative purposes only. In some implementations, processor(s)  124  may include a plurality of processing units. These processing units may be physically located within the same device, or processor(s)  124  may represent processing functionality of a plurality of devices operating in coordination. Processor(s)  124  may be configured to execute components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120 , and/or other components. Processor(s)  124  may be configured to execute components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120 , and/or other components by software; hardware; firmware; some combination of software, hardware, and/or firmware; and/or other mechanisms for configuring processing capabilities on processor(s)  124 . As used herein, the term “component” may refer to any component or set of components that perform the functionality attributed to the component. This may include one or more physical processors during execution of processor readable instructions, the processor readable instructions, circuitry, hardware, storage media, or any other components. 
     It should be appreciated that although components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120  are illustrated in  FIG.  1    as being implemented within a single processing unit, in implementations in which processor(s)  124  includes multiple processing units, one or more of components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120  may be implemented remotely from the other components. The description of the functionality provided by the different components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120  described below is for illustrative purposes, and is not intended to be limiting, as any of components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120  may provide more or less functionality than is described. For example, one or more of components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120  may be eliminated, and some or all of its functionality may be provided by other ones of components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120 . As another example, processor(s)  124  may be configured to execute one or more additional components that may perform some or all of the functionality attributed below to one of components  108 ,  110 ,  112 ,  114 ,  116 ,  118 , and/or  120 . 
       FIG.  2    illustrates a method  200  of controlling configurations of deployments of sets of enterprise software applications to users, in accordance with one or more implementations. The operations of method  200  presented below are intended to be illustrative. In some implementations, method  200  may be accomplished with one or more additional operations not described, and/or without one or more of the operations discussed. Additionally, the order in which the operations of method  200  are illustrated in  FIG.  2    and described below is not intended to be limiting. 
     In some implementations, method  200  may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations of method  200  in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of method  200 . 
     At an operation  202 , information for the set of enterprise software applications is stored in electronic storage. The set of enterprise software applications includes at least a first software application, a second software application, and a third software application. The information includes (i) executable code of the set of enterprise software applications, and (ii) a configuration database that includes a set of deployment-specific configuration settings and corresponding setting values that define a deployment on a first deployment server of the set of enterprise software applications. The set of deployment-specific configuration settings include one or more of (a) connection parameters to control connections between the configuration database and the set of enterprise software applications, (b) environment variables, and (c) resource parameters to control available computational resources and available storage resources. In some embodiments, operation  202  is performed by a storage component the same as or similar to storage component  108  (shown in  FIG.  1    and described herein). 
     At an operation  204 , the deployment of the set of enterprise software applications is effectuated on the first deployment server in accordance with the set of deployment-specific configuration settings and the corresponding setting values. Subsequent to the deployment, the first deployment server is accessible by the client computing platforms associated with the users. The first deployment server is configured, subsequent to the deployment, such that to the client computing platforms execute the set of enterprise software applications through the first deployment server. In some embodiments, operation  204  is performed by a deployment component the same as or similar to deployment component  110  (shown in  FIG.  1    and described herein). 
     At an operation  206 , multiple modification databases are obtained including a first modification database and a second modification database. Individual ones of the multiple modification databases include one or more modification-specific configuration settings and one or more corresponding setting values. The multiple modification databases are organized in a particular order such that the first modification database is ahead of the second modification database in the particular order. In some embodiments, operation  206  is performed by a patch component the same as or similar to patch component  112  (shown in  FIG.  1    and described herein). 
     At an operation  208 , the deployment of the set of software applications on the first deployment server is modified, for individual ones of the multiple modification databases according to the particular order, by modifying individual ones of the set of deployment-specific configuration settings that match individual ones of the one or more modification-specific settings to individual ones of the one or more corresponding setting values. Modifications of the individual ones of the set of deployment-specific configuration settings are made while the deployment on the first deployment server continues to be accessible by the client computing platforms. The modifications are made according to the particular order such that individual modification-specific configuration settings included in the first modification database are modified ahead of individual modification-specific configuration settings included in the second modification database. In some embodiments, operation  208  is performed by a modification component the same as or similar to modification component  114  (shown in  FIG.  1    and described herein). 
     Although the present technology has been described in detail for the purpose of illustration based on what is currently considered to be the most practical and preferred implementations, it is to be understood that such detail is solely for that purpose and that the technology is not limited to the disclosed implementations, but, on the contrary, is intended to cover modifications and equivalent arrangements that are within the spirit and scope of the appended claims. For example, it is to be understood that the present technology contemplates that, to the extent possible, one or more features of any implementation can be combined with one or more features of any other implementation.