CLARA and Service Oriented Architectures

From GlueXWiki
Jump to: navigation, search

CLARA is the CLAS12 framework for implementing a Service Oriented Architecture, or SOA. SOA's are typically client/server based software systems that employ a number of servers distributed on the network, where more than one server can provide the same service. Servers are listed in a central registry so clients can choose which server to use based on various criteria, including how busy they are. In order to perform their work servers may also act as clients and request services of other servers. Execution of the algorithm the system implements is thus distributed among many servers, similar to how an algorithm is distributed among many functions or methods in a traditional program.

In any SOA-based system it is important to balance the granularity of the service, i.e. how much work each server performs, with the overhead needed to supply the server with whatever information it needs and how long it takes to receive the result. For example, it probably does not make sense to implement a "square root" service.

Currently CLAS12 and Hall D's thinking differs on the optimal level of service granularity. CLAS12 tends towards breaking up their reconstruction algorithm among many servers (tracking service, cluster finder service, etc). Hall D leans towards much coarser services (supply magnetic field, supply calibration constants, perform full event reconstruction, etc). CLAS12 and Hall D are currently implementing test services to learn more about this. The Hall D service will use CLARA but internally will use the JANA framework.