# Technical Overview
The Ringier Event Bus is composed of several key components:
- four(4) core services written in Go (opens new window): Feeder, Worker, Nodes and Users.
- a RabbitMQ (opens new window) server.
- a DynamoDB (opens new window) AWS service.
# Core services
The core services are microservices (opens new window) which intercommunicate actively using JSON over REST APIs.
# 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.
# Worker
The Worker service role is to consume from the necessary queues on the RabbitMQ server and, with the help of the Nodes service, send the events to appropriate destination nodes.
# Nodes
The Nodes service allows for operations on the various nodes' 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 Feeder and Worker services publish events to and consume events from respectively.
# DynamoDB
The DynamoDB AWS service acts as long-term storage solution for the core services. Information as users and nodes configurations are stored there.