working after each small refactoring, reducing the chances that an infrastructure can get broken during the restructuring and ergo injuring the ability to support the existing streams of development for the product.
The goal of infrastructure refactoring is to take the existing infrastructure that may be more complex and supports a phased approach and instead streamline and simplify it so that in supports a more incremental and agile approach.
First, let's define what infrastructure means in the context of this article. Infrastructure refers to the technical structures such as environments, tools, and the processes that are used to support the product. Examples of infrastructure related components include the servers, network, and build tools used within the product development context. Infrastructure for a product typically gets defined and established in the first release of the new product. In the past, most project teams have used more traditional methodology approaches that follow a phased approach.
What happens if that product line wants to move away from a phased methodology to a move iterative methodology like Agile? Can the exact same infrastructure be used? To a great extend yes, but what becomes apparent is that many of the processes built into the infrastructure are built to support a more phased or waterfall approach. A refactoring change approach to infrastructure implies small continuous changes in order to reduce the chances of something going wrong, versus attempting to make all infrastructure changes at once with the potential of numerous problems occurring as a result.
What areas of change in the infrastructure must be considered when moving from a phased approach to an Agile approach? In following a project lifecycle, the infrastructure may require changes to the requirements, configuration management (CM), testing, development, architecture, database, release management, and other engineering spaces. In tackling this challenge, an approach that focuses on small continuous changes will be advantageous to ensure that the existing product maintenance and support continues while adjustments are made to the new development model. Infrastructure refactoring applies the Agile approach of continuous change and integration to improve an existing infrastructure while maintaining the integrity of the current support and maintenance line that must occur.