We leaned heavily on composition that spans build, test and production. You can define assets that yield code-level infrastructure definitions and also are automatically configured based on environment (dev vs test vs prod).
It was great building it, and we use it to build Namespace (namespace.so); our development-focused platform.