Apprenda accepts composite applications – an “app” on Apprenda is a zipped collection of one or more related, but independently deployable, app components (UI, services, database, etc.). When an application is pushed to an Apprenda cluster, Apprenda registers the composite application for decomposition and scanning. Decomposition is a step wherein the composite application package supplied in the push request is broken down into its constituent parts (separate tiers and components, configuration artifacts, etc.). After decomposition, Apprenda scans all configuration files and, in the case of Windows applications, managed binaries. These scans produce a set of artifacts that are flagged for architecture patterns that Apprenda can enhance for better compatibility with cloud-style application behavior. Apprenda focuses on enhancing commonly used patterns by using the artifacts to inform modification of configuration and to redirect framework abstractions to use Apprenda implementations that are cloud-capable (e.g. local cache requests being re-routed to a Redis based distributed cache cluster). Once modifications are executed, Apprenda stores the modified application artifacts in Apprenda’s own application image repository and maintains a model of the application’s runtime requirements prior to deployment. For simplicity, the Apprenda repository is implemented as a network share. This system is easily extensible by Apprenda as new cloud remediation patterns are discovered through customer interactions.