by Wesley Beary
Cloud computing scared the crap out of me – the quirks and nightmares of provisioning cloud computing, storage, … on AWS, Terremark, Rackspace, … – I mean, where do you even start?
Since I couldn’t find a good answer, I undertook the (probably insane) task of creating one. fog gives you a place to start by creating abstractions that work across many different providers, greatly reducing the barrier to entry (and the cost of switching later). The abstractions are built on top of solid wrappers for each api. So if the high level stuff doesn’t cut it you can dig in and get the job done. On top of that, mocks are available to simulate what clouds will do for development and testing (saving you time and money).
You’ll get a whirlwind tour of basic through advanced as we create the building blocks of a highly distributed (multi-cloud) system with some simple Ruby scripts that work nearly verbatim from provider to provider. Get your feet wet working with cloud resources or just make it easier on yourself as your usage gets more complex, either way fog makes it easy to get what you need from the cloud.
by Cyprien Noel
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.
18th–20th September 2011