As discussed in our last post, we have started working on a mobile cloud. The main idea is to utilize existing mobile hardware and create a virtual (super-)computer. There are some issues that require a lot of thinking and clever concepts. One of the first challenges is obviously how to coordinate this virtual hardware and set up a communication system between peers that are distributed all over the planet. A straightforward approach is to use existing, Internet-scale communication systems like Twitter (or the open source implementation Status.net), for coordinating/bootstrapping the communication between peers. Since Twitter is not exactly designed to support real time communication, this may pose a problem for tasks that are sequentially executed and have communication overhead that cannot be neglected. If this is not the case, then we can safely use Twitter (at least for now). After the bootstrapping phase with Twitter, there are several alternatives for the actual communication between the peers of the virtual computer. A potential approach is to use Socket connections to transfer data between peers. This allows for a low overhead, but requires careful object serialization/deserialization, especially when virtual computer peers run different operating systems like iOS, Android or WebOS. Another possibility is the use of Internet protocols likes HTTP and RESTful Services. We believe that the latter are better suited for our purposes, but need some tweaks for the actual protocol between peers. There is already some work on this topic and an implementation for the iPhone which extends the REST semantic is available.
Still, there is one communication problem left: what happens if the IP address of the peer changes? For this, we need a protocol that is able to handle changes of the peer addresses without breaking the communication between the peers. We will discuss this problem along with some initial thoughts on the architecture in our next post.
your ikangai science team