Distributed STM: A new programming model for the cloud
Imagine developing an application using the equivalent of source control for your data. Some STM (MVCC) enable this model for threads: a thread can take a snapshot of memory, run totally in isolation, and commit atomically.
Distributed STM are a recent development which enables this model for threads in different processes. In the same way a developer can check out a project on his local machine, an app. can replicate an object graph from a cloud, have local threads update it, and commit changes back to the cloud. The cloud can then broadcast changes to other clients’ replicas.
Developers can use this technology for scenarios like real-time collaboration, pub/sub, market quotes broadcasting, MMO game-state synchronization between players, or simply storing data in a cloud. The amount of code required on both client and server is an order of magnitude lower than models like REST, and performance can be much higher.
Many implementations are emerging, like the Fénix framework which is successfully running a large university campus portal, the JCell project, D²STM, Multiverse, or the EU-funded CloudTM initiative.
Our own implementation, xstm.org, started in the financial software industry for high performance price transfer and trading. It is open source (Apache 2), and has been integrated in several commercial projects over the past two years, each time adding new functionalities and tools.
We now have SDKs for Java, Android, GWT and .NET which can interoperate with each other for multi-platform apps, a high-performance store to make replicated objects persistent either locally (with offline sync to the server) or in a NoSQL store. Data can be exchanged over a socket, http (polling) or comet, and WebSocket.
We offer tools to deploy and debug a server in Amazon EC2, create secure connections and handle data versioning. We are also developing a cloud back-end, objectfabric.com, which developers will be able to use as a highly available auto-scaling service.
Cyprien Noel developed high performance financial software for about seven years at software publishers in France and in the US. He founded the xstm.org open source project to simplify concurrent and distributed programming, and more recently ObjectFabric Inc., which develops a new generation of cloud platform. He lives in Silicon Valley, and thinks he is a chicken for not having tried kite surfing yet.
He is a regular conference speaker, talking about concurrent and distributed software development at venues like C3S2E10, JavaOne 2010, CloudSlam11, and more recently about mobile development at specialized events in Silicon Valley.