This is particularly true in the tools found in the support layer.
The end product in the short infrastructure envisioning exercise should include a high-level infrastructure stack list of technologies within their respective layers as it relates to the architecture framework. While you should not expect to fill in all layers, there are some layers you cannot ignore. An example of this is the platform layer where servers and desktop live. However, tools in other layers can be identified over time after it is clear what best agile processes and practices suit the needs of the team. Then a tool may be considered.
Adjust and Implement Incrementally
It is important for infrastructure to emerge based on the needs of the product and the business. Applying an iterative and incremental model with continuous adjustments (as applicable) helps lead us in this direction. This allows us to limit infrastructure debt. Borrowed from the concepts of design debt and technical debt by James Shore, the newly coined term “infrastructure debt” refers to building beyond our need such that when functionality evolves, any incorrect infrastructure becomes a constraint to the functionality the customer wants, ergo a business problem. By applying a more evolutionary approach, it allows the needs to drive the infrastructure while minimizing the constraints.
What are some strategies that can help with establishing infrastructure in an iterative and incremental manner? Some include utilizing risk assessment, applying prioritization, working in parallel between the project team and infrastructure team, and applying retrospectives. Within a project timeframe, you may not be in a position to iteratively build a fully functional and automated infrastructure. Instead, focus on the areas that reduce risk and are perceived to be of high value (priority) to the project team using Agile (the customer of the infrastructure).