According to the 12-factor-app dev/prod parity principle, the developers' local environments and production should be similar.
For developers working on a system with a complex microservice-based architecture, my understanding is that, this would mean that they need to build and deploy dozens of components to their local cluster (minikube for e.g.) -- even if they work only on a small part of the overall application. I see some problems with this approach:
- Developer machines are obviously not as powerful as the cloud staging/prod environments. Plus they need to be able to run development software (IDE etc) on top of the cluster (including data stores).
- Time lag before the developers can start contributing. Though this can be somewhat managed with a sufficiently automated deploy process.
- Time spent keeping the local cluster up-to-date constantly. While cloud environments can be kept up-to-date automatically through commit hooks etc, this has to be done manually for local environment.
- In effect, doesn't this make it similar to working on a monolithic system where to touch one part of the application, you need to build and run the entire thing.
Is there a better way to handle this? Or am I misinterpreting the principle?