Skip to main content

External Services

The following document is an abstract overview of our architecture and how contractors / external businesses can build services to hook ito our platform. An accompanying document will be provided with API calls and events the external contractor/business will be interested in.

Tools

We are a language agnostic team however hold the following preferences.

backend services

  1. Scala
  2. Ruby
  3. Node
  4. PHP

frontend services

  1. React
  2. insert here duane?

data storage

  1. CassandraDB or Postgres.

Integration

Kafka

All our services communicate with each other through Kafka. Services will publish events and each service will consume the events they are interested in. External service being built will also need to publish specific events.

Requirements

Services may broadcast past events at any time for new services to build it's own state.

It is therefore essential when working with an event sourced distributed system that the following criteria is met in order to avoid side effects.

  1. Each service needs to know whether or not it has already processed the event.
  2. Each service needs the ability to replay events from a specific offset time.

API

User management

All users will be logged in to our user service which will return a JWT token. Each external service will be given a secret key in order to decode the JWT token and validate whether it is valid. The service should throw a Forbidden 403 HTTP error. Tokens for reOS staff will include a validSupportStaff Bool.

API calls

Additional API calls will be made available to external services when going through Kafka does not make sense. These calls will be left to the discretion of the devops team.

Devops and deployment

The deployment of external applications will be code reviewed and deployed from our in-house devops team.