SUS06-BP03 Increase utilization of build environments - AWS Well-Architected Framework

SUS06-BP03 Increase utilization of build environments

Increase the utilization of resources to develop, test, and build your workloads.

Common anti-patterns:

  • You manually provision or terminate your build environments.

  • You keep your build environments running independent of test, build, or release activities (for example, running an environment outside of the working hours of your development team members).

  • You over-provision resources for your build environments.

Benefits of establishing this best practice: By increasing the utilization of build environments, you can improve the overall efficiency of your cloud workload while allocating the resources to builders to develop, test, and build efficiently.

Level of risk exposed if this best practice is not established: Low

Implementation guidance

Use automation and infrastructure-as-code to bring build environments up when needed and take them down when not used. A common pattern is to schedule periods of availability that coincide with the working hours of your development team members. Your test environments should closely resemble the production configuration. However, look for opportunities to use instance types with burst capacity, Amazon EC2 Spot Instances, automatic scaling database services, containers, and serverless technologies to align development and test capacity with use. Limit data volume to just meet the test requirements. If using production data in test, explore possibilities of sharing data from production and not moving data across.

Implementation steps

  • Use infrastructure-as-code to provision your build environments.

  • Use automation to manage the lifecycle of your development and test environments and maximize the efficiency of your build resources.

  • Use strategies to maximize the utilization of development and test environments.

    • Use minimum viable representative environments to develop and test potential improvements.

    • Use serverless technologies if possible.

    • Use On-Demand Instances to supplement your developer devices.

    • Use instance types with burst capacity, Spot Instances, and other technologies to align build capacity with use.

    • Adopt native cloud services for secure instance shell access rather than deploying fleets of bastion hosts.

    • Automatically scale your build resources depending on your build jobs.

Resources

Related documents:

Related videos: