1. A computer-implemented method for generating a software configuration, comprising: receiving, by one or more processors, a plurality of software modules from one or more software module providers, the plurality of software modules being deployed upon a standardized template of virtual machine images and being configured with a plurality of features respectively selected by the one or more software providers; receiving, by the one or more processors, a first selection of a first software module from the plurality of software modules for performing a first step of an application flow; receiving, by the one or more processors, a second selection of a plurality of second software modules from the plurality of software modules for performing a second step of an application flow; executing, by the one or more processors, the first software module to perform the first step of the application flow and to generate a first output; providing, by the one or more processors, the first output as an input to each of the plurality of second software modules; executing, by the one or more processors and based on the first output, each of the plurality of second software modules in parallel and in separate, respective cloud computing environments to separately perform the second step of the application flow and to respectively generate a plurality of second outputs; and determining, by the one or more processors and based on the plurality of second outputs, an optimal software configuration comprising the first software module and a selected second software module of the plurality of second software modules for performing the application flow.