I am working on some platform, that support multiple modules implementing single SPI. I have 2 implementations of backend - cloud and standalone. Cloud is used for production and standalone is used for development on modules. Cloud implementation has dependencies on DB, JMS, etc... while standalone version keeps everything in memory. I recommend keeping free/enterprise variants as separate modules or even projects with shared core.
Regarding staging/debug I am not sure what you mean.