Whilst we were in Antwerp, Manik, Shane, Rodney and I sat down to think a bit about what this means. A few of the salient points we discussed are:
Good clustering support (Pete)
- Ensure we always externalize any application state e.g. store it in the session, CDI supports this beautifully!
- Make sure we can externalize "framework" state i.e. any state we store in the framework that can't be trivially rediscovered when a new node starts. The Weld core works like this, as do portable extensions which are coded well, and use Contextual to store state.
- An idea is to add the ability to generate the class metadata (and perhaps even the bean metadata?) at compile time, and store in some binary format inside the jar. This can then be read in when the app starts, rather than using reflection to study the classes. This may lead to faster boot (needs research!)
- Think about replication when we write the core, extensions and apps, and ensure that we allow for efficient replication
Multi-tennanted apps (Shane is going to lead this effort)
- How are they configured externally from the app itself (e.g. the idea for how to read in properties Gavin blogged about)
- Integrating with distributed datastores such as Infinispan, this is intrusive into your data model as some things which work well in RDBMS don't work so well here
- Mainly infrastructure for us, may be useful for others?
- How do we test in GAE?
- How do we test in EC2/Rackspace (talk to Bob McWhirter)
- Thincrust images e.g. with Weld installed onto Tomcat (useful for getting started?)