1. A method implemented in a programming environment for software development or application management, the method comprising: obtaining a hardware profile that defines a hardware configuration associated with a distributed service, the hardware profile supplying instructions that are used for automated configuration of individual machines utilized to implement the distributed service; obtaining a workload profile that defines a configuration of an software application associated with the distributed service, the workload profile supplying instructions that are used for the automated configuration of the individual machines used to implement the distributed service; and using at least the hardware profile and the workload profile to automate configuration of machines that are deployed according to instructions in the template.