Hi All,

Airavata is actively migrating to use Thrift API for the RESTless design and to 
facilitate various language bindings from client gateways. The programming 
language support in thrift has been so far very encouraging. The current 
architecture is looking like Figure 1 at [1]. 

Language specific clients will be released as thrift SDK’s (similar to evernote 
sdk’s [1]). These clients will be integrated into gateway portals which connect 
to the API Server. The API operations brokers he simple calls into one or more 
backend CPI calls (Airavata internal component interfaces).  An example set of 
mappings are illustrated in Figure 2 at [1]. The current draft of thrift API 
for version 0.12 is at [3], please pay attention to experiment model at [4]. 

For the persistent store, we had few iterations of Airavata Registry shifting 
from a legacy XRegistry to JackRabbit to now a OpenJPA based registry. To allow 
the API and the associated data models to evolve, it will be useful to explore 
object databases so we can store the serialized version of thrift objects 
directly. But it will be nice to have all (or most) of the fields queriable. 
This calls for a more column-family design of any NoSQL approaches. 

Any recommendations for a registry architecture? 

Quickly hacking through I find the following approach a viable one: ZombieDB[5] 
over astyanax[6] which talks to Cassandra. Airavata can benefit immediately 
from the replication and reliability of cassandra and scalability in near 
future. Some of the model objects like experiment creation will need to have 
strong consistency and most of the monitoring can live with eventual 
consistency. 

Critical comments please? 

Thanks for your time,
Suresh

[1] - 
https://cwiki.apache.org/confluence/display/AIRAVATA/2014/02/23/Brainstorming+Diagrams
[2] - https://dev.evernote.com/doc/
[3] - 
https://git-wip-us.apache.org/repos/asf?p=airavata.git;a=tree;f=airavata-api/thrift-interface-descriptions;hb=HEAD
[4] - 
https://git-wip-us.apache.org/repos/asf?p=airavata.git;a=blob_plain;f=airavata-api/thrift-interface-descriptions/experimentModel.thrift;hb=HEAD
[5] - https://github.com/MisterTea/ZombieDB
[6] - https://github.com/Netflix/astyanax

Reply via email to