Matthew pointed out that we should clarify something.
Today the word "node" has a simple meaning - it's the thing that starts when you run Corda.
In a post-MAXIMUS world we will be redefining what the word "node" means slightly. The new definition will be something like, "the installation of Corda for your organisation". A node may be composed of multiple servers working together. This is already happening with the float/bridge/separate database server etc setup found in enterprise setups.
As part of this, apps will see what amounts to a virtualised node. The APIs can't change, so instead the current identity the node is acting as will change between runs of the app. Because of things like @CordaService this implies that apps may need slight adjustments to work efficiently on multi-identity nodes.
As we provide backwards compatibility, MAXIMUS nodes will be able to run existing apps. However not all the efficiency gains may be obtained in that case (it's a bit early to tell). If necessary the targetVersion mechanism will be used to let apps label themselves as having been tested against multi-identity nodes. Apps that target newer versions of the platform may need to provide a bit more info like whether a service is scoped to identity or process lifetime, things like that.
More info will be provided as this capability is developed.