Baseline

Technology

This page describes all external components used across JAlgoArena architecture.

Intro

You will be able to see here all meaningful parts of JAlgoArena architecture which are not JAlgoArena microservices.

In case anything important is missing in here, please create a new issue.

Technology

Term Description
Traefik

API Edge service which exposes REST and WebSocket API doing necessary path rewrites and load balancing.

See more details on Traefik page.

Apache Kafka

Stream processing component which controls flow for serving submissions.

Initially when users submits new solution, it goes to Apache Kafka from where it's consumed by Submissions microservice for futher processing. All microservices which takes part in submission process communicate through Apache Kafka topics in asynchronous way.

See more details on Apache Kafka page.

Consul

Consul cluster provides capability of service discovery and distributed configuration. Traefik is using consul to build all API rules based on which destination microservices can be reached.

In production JAlgoArena should be using cluster build from 3 server agents for high availability

See more details on Consul page.

Nomad

Nomad provides scheduling capability. Thanks to it JAlgoArena deployment is automated and using recent version of microservices and external components.

Actual nomad jobs allows to use two drivers:

  • docker - for which you have to have docker up and running on your machines, see official docs
  • raw_docker - which requires to have Java 8 and Node.JS >= 6 available on your machines, see official docs

All nomad job specs can be found in here. See more details on Nomad page.

Cockroach DB

Persistante highly available storage that JAlgoArena is using. Cockroach DB is exposing SQL interface in similar way as Postgres SQL, which makes it very easy to use and operate with.

In production JAlgoArena should be using cluster build from 3 server nodes for high availability

See more details on Cockroach Labs page.

Elastic Stack

JAlgoArena is using Elastic Stack for tracing distributed logging. In particular, we use Logstash, Elasticsearch and Kibana

See more details on Elastic Stack page.