# 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.
The Feeder service is responsible of accepting events from the nodes, performing verification and validation checks, and publishing those events to the RabbitMQ server.
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.
The Nodes service allows for operations on the various nodes' configurations.
The Users service allows nodes to authenticate against the Ringier Event Bus before emitting events.
The RabbitMQ is used as the primary message broker which the Feeder and Worker services publish events to and consume events from respectively.
The DynamoDB AWS service acts as long-term storage solution for the core services. Information as users and nodes configurations are stored there.