This is the second part of Jeroen’s Architecture series. The first half was fun, but this half promises to be more so as a live, crazy demo has been promised. This one is also covering the Next Generation Information Server (NGIS).
- NGIS is on top of XDB using Spring MVC.
- Remember that NGIS is a project, long way out so nothing is in stone.
- xDB 11
- XACML Security, Tree Compression, Search over history, Distributed Query Execution
- Leveraging Hadoop
- Coming in 2011 (no official timeframe given, just ballpark)
- NGIS: A flexible, distributed information repository for private and public cloud environments.
- Core features are: Salability and Reliability, Performance, Flexibility, Cost of Ownership (low)
- Use Cases: Automate multi-tenancy and elastic deployments, enables continuous upgrades, automate information governance, externalize authorization policies
- Trying to allo developers to focus on the application and not the infrastructure
- Public Cloud Requires: Shared nothing architecture, stateless connections, intelligent brokers, geo location optimization, self configuration of server.
- Multi tenancy requires controlled sharing of: application artifacts, data model artifacts, user data, security data, authentication servers.
- Allow sharing and isolation of spaces (logical organization of types, security, and authentication server)
- XACML is standard around authorization.
- Composite data models that are composed of traits that may refer to different artifacts(e.g. content)
- Content doesn’t have to be in the system. XACML could be applied to proxies to external content
- Traits (conceptually like aspects):
- Objects are empty by default, only have object ID
- Objects contain traits to give them features.
- e.g. A version trait would have some metadata (version number), services (getVersion, getBranch), and events (Checkin)
- There will be out of the box traits but people will be able to create their own
- Only add a payload if you really need it, dynamic behavior, better performance, ability to move to non-Content Management use cases
- Trying to bring down the cost of an object
- Dynamic Provisioning: load increases for a tenant or the number grows, will rebalance and add nodes as needed
- Upgrading an application: allow live upgrade so no down-time.
- Using some OpenID for the NGIS experimental system
- Tenants and Spaces (A tenant is a space)
- Shared when needed, separated when required
- A space is a subset of the content in the cloud
- Spaces can be nested
- A space can have a type system, can override/expand on parent
- Each space can have its own identity provider for authentications
- When you hit a space, you also access the ancestor spaces
- This is related conceptually to what Cornelia Davis discussed, but it is not the same thing
- NGIS is REST based
- Traits are modeled with XML schemas for metadata
- Type versioning, really the modify of the trait. Not a type anymore, it is a trait of an object. The combination of traits is what gives you the current concept of an object. Do not have to update an object to new version of trait
- Demos!
- The demo has two NGIS servers with a Load balancer, both hitting the same xDB server.
- Hospital scenario
- First demo adds a tenant through Hyperic HQ which sends a REST call to NGIS
- Showing authentication to Google and OpenID (two different tenants/spaces/repositories)
- Trait update using Eclipse (worked)
- Showed live update of trait to existing objects
- Thinking about migration path (no promises on final plans)
- One thought is expanding xPlore into NGIS
- Transform ACLs into XACML and metadata model into traits [using XProc]
- Remove XML Store and bring it into xPlore
- [Showing an interesting multi-step evolution into xPlore]
- Nothing decided
- The ~10K DFC calls are funneled into ~400 java methods
- Another model is using CMIS to suck in types from current Content Server and then creating them into new system. CMIS as a layer
- Jeroen is hiring
All very cool stuff. Off to dinner and then the EMC World party. See you there.
Disclaimer
All information in this post was gathered from the presenters and presentation. It does not reflect my opinion unless clearly indicated (Italics in parenthesis). Any errors are most likely from my misunderstanding a statement or imperfectly recording the information. Updates to correct information are reflected in red, but will not be otherwise indicated.