Stationary vs Dynamic infrastructure
"A well-run engineering organization operates much like a well-run city. Cities are complex, with many moving parts that need to be in sync for the to operate optimally." - Bazaarvoice, Engineering Excellence, V1 Oct 2024
Thinking of running cities, there is the notion of moving parts and more stationary parts. This analogy will help us navigate the complexities of maintaining a global platform, just like a large City.
Defining what parts are moving and which are stationary is pivotal to understanding the maintenance methodology and the impact of changing these parts can have on a wider software engineering organisation.
In our case; changing a shared VPC is akin to changing the layout of a bridge in a major city, done wrong; it can lead to catastrophic results, traffic jams, inaccessible areas etc.
So why differentiate between them?
Think of a scenario containing a bus and a bridge, the bus is going to cross the bridge and both have their own maintenance schedules. One is stationary and the other is dynamic, I think you can obviously see which is which.
The bridge is stationary infrastructure, not because it doesn't move (because bridges do move), but because it is a dependency for the traffic that crosses it.
The bus is dynamic infrastructure, there are multiple in active service and their maintenance window should acount for a bus being out of commission.
Now imagine you need to change the foundations of the bridge and you do this at the same cadence as the bus, taking the bridge out of service (of which there is typically one) will cause down stream disrupton to consumers of the stationary infrastructure. This is no different from removing a VPC that has many teams sending network traffic through it.
Ultimately, this is the difference between Stationary and Dynamic infrastructure. Hopefully you can see the value in acknowledging the differences and can plan accordin.