# Technical Overview

The Ringier Event Bus is composed of several key components:

infrastructure-overview Figure 1: Infrastructure overview

events-flow Figure 2: Events Flow

# Core services

The core services are microservices (opens new window) which intercommunicate actively using JSON over REST APIs. The microservices are all behind a VPC and communicate (if necessary) using JWT as an extra layer of security.

# Feeder

The Feeder service is responsible of accepting events from the nodes, performing verification and validation checks, and publishing those events to the RabbitMQ server.

# Emitter

The Emitter service is is responsible for routing the events to the receivers that match the routing rule. It also adds the node specific config and sets auth headers.

# Receiver

The Receiver service is responsible for consuming events from the RabbitMQ server and forwarding them to the configured endpoints.

# Nodes

The Nodes service allows nodes to register themselves with the Ringier Event Bus. It also allows nodes to update their configurations.

# Users

The Users service allows nodes to authenticate against the Ringier Event Bus before emitting events.

# RabbitMQ

The RabbitMQ is used as the primary message broker which the entire microservice architecture publish and consume from.

# DynamoDB

The DynamoDB AWS service acts as long-term storage solution for the core services. Information as users and nodes configurations are stored there.