Title: I started thinking about this approach after working on a large-scale project for a major financial company where our group developed a distributed in-house data processing solution. On a regular basis, it ingested a few gigabytes of financial data and, within a tight SLA time limit, produced a lot of enriched&#x2F;aggregated&#x2F;validated data for a number of customers. Sometimes, source data had errors, so operators with domain knowledge had to verify data validity at some checkpoints, immediately make corrections, and re-run parts of the workflow manually. The solution involved complex web service orchestration, custom database and was very demanding on the infrastructure availability.<p>Capillaries is a built from scratch, open-source Go solution that does just that: ingests data and applies user-defined transforms - Go one-liner expressions, Python formulas, joins, aggregations, denormalization - using Cassandra for intermediate data storage and RabbitMQ for task scheduling. End users just have to provide:
- source data in CSV files;
- Capillaries script (JSON file) that defines the workflow and the transforms;
- Python code that performs complex calculations (only if needed).<p>The whole data processing pipeline can be split into separate runs that can be started independently and re-run by the user if needed.<p>The goal is to build a platform that is tolerant to database and processing node failures, and allows users to focus on data transform logic and data quality control.<p>“Getting started” Docker-based demo calculates ARK funds performance, using EOD holdings and transactions data acquired from public sources. There are also integration tests that use non-financial data. There is a test deploy tool that uses Openstack API for provisioning in the cloud.
Upvote: