In a few words CLARA is a data-in-motion platform to build streaming scientific-data analytics applications. It enables scientist to collect, process, analyze and act on streaming data-quanta (user defined and framework agnostic) across data centers and clouds.

CLARA framework presents three core components: Data Processing Station (we call it a service, which is a container for a user data processing engine), Data-stream Pipe (a data bus based on xMsg messaging system, that supports protocols, such as MPI, pub-sub, p2p, inproc, and shared memory), and Data-flow Orchestrator (process level workflow management systems).

Figure 1. CLARA core components

The idea is that the stream of data-quanta are flowing through data processing stations and getting changed/processed along the line of a flow. Data processing stations are the place where user data-quanta processing algorithms and programs are dropped in and presented as data processing CLARA services.

Figure 1. CLARA service

Services are reactive computing units. They react on a data-quantum at the input and present processed data-quantum at the output. So, they are free of dealing with data stream organization, networking, data serialization/deserialization, data-quantum transport optimizations, etc. This makes data processing algorithm development, testing, optimization and debugging completely independent. Another important feature of CLARA is that the data stream processing station, will vertically auto-scale user data processing engine based on the load and/or user request, freeing user algorithm developers to worry about creating and managing thread pools, mutex locks and other scaling technical details. So, Having variety of services and pipes to connect them together, CLARA presents a software LEGO system to design and deploy scientific data processing applications without writing a single line of code.

Figure 1. CLARA data processing application example

Get Started

Through this page service engine developers can find the necessary reference materials to develop service engines in all supported languages. Visit Quick Start for an introduction to writing services in your preferred language. Application developers can learn how to use CLARA orchestration layer to compose services into a streaming data-processing applications. Visit Guides for more details. A complete working example to to develop multi-lingual application can be useful for advanced users.