There are a number of changes to do to accomplish what you are referring to:
- Use Solr instead of embedded Lucene for searches.
- Use distributed cache for Hibrernate and Spring instead of in local memory.
- Configure to store http session information in distributed cache.
- Identify places in code that do caching by other means such as HashMaps and use distributed cache instead if relevant across all instances (applicable to user moving between instances).
- Identify places in code that store files in the file system and use a distributed file system instead.
4 and 5 require changes not only in openmrs-core, but also in modules. We need best practices and migration instructions for them.
1, 2 and 3 are already listed in the roadmap. 4 and 5 are under Future phases in 3b.