The platform is a combination of Elixir micro services custom built to ingest, normalize, transform, persist, and stream data from numerous sources, orchestrated via Kubernetes in any cloud provider or on-prem Kubernetes deployment. The loosely coupled services pass data across the pipeline via Kafka message queues and persist data to any hyper-scalable object store providing the S3 standard. They coordinate and communicate via a single event bus, also running on top of Kafka. The distributed data files are persisted and retrieved via SQL queries processed by the PrestoDB engine. Finally, user access, discovery, and analysis is facilitated by a ReactJS web application user interface, a RESTful API, or a web socket API for streaming data feeds.
|Application||Short Description||Build Status|
|Andi||Admin Interface for creating/editing datasets to be ingested|
|Discovery API||API to search for and query datasets|
|Discovery Streams||Websocket connection to listen to streaming data|
|Estuary||Microservice to persist event stream events|
|Forklift||Microservice for saving data to Presto DB|
|Odo||Microservice to convert Shapefiles to GeoJSON|
|Reaper||Microservice to retrieve data|
|Valkyrie||Microservice to validate data structure during ingestion|
The microservices written in Elixir use Mix as the build tool.
Each microservice under the apps/ directory has a
Dockerfile that can be used to build that microservice individually by running the following command:
docker build .
Each microservice is released independently and can be found here in the Releases section. All releases will be kept indefinitely.
Released under Apache 2 license.