> For the complete documentation index, see [llms.txt](https://docs.eventoframework.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eventoframework.com/evento-server/evento-server-introduction.md).

# Evento Server Introduction

In the intricate world of distributed applications, seamless communication and coordinated action are essential for success. Evento Server emerges as a maestro, orchestrating message flow, event processing, and resource management within a cluster of applications. This chapter introduces the key responsibilities of Evento Server, highlighting its role in building robust and scalable distributed systems.

#### Message Gateway: The Heart of Communication

Evento Server acts as a central message gateway, facilitating the exchange of messages (payloads) between various components within a distributed system. Applications can:

* **Publish Messages:** Send messages containing data or representing events to specific topics. These topics act as designated channels for message routing.
* **Subscribe to Topics:** Register interest in specific topics, enabling them to receive messages published on those channels.

This publish-subscribe pattern decouples applications, promoting loose coupling. Applications don't need to be aware of each other's location or implementation details, simplifying development and deployment.

#### Bundle Registration: The Foundation for Execution

Evento Server acts as the central registry for the units that make up your distributed system. These units are known as **bundles**. In Evento v2, a bundle **registers itself at runtime** when it connects to the server over the message bus — there is no JAR upload or static descriptor file. At startup each bundle scans its own bytecode (ASM-based self-discovery) and publishes its discovery metadata to the server, including:

* **Description:** A short and long-form explanation of the bundle's purpose and functionality (from the bundle configuration and `@EventoDescription` annotations).
* **RECQ Components and Invocations:** The specific RECQ components encapsulated within the bundle and the commands/queries they invoke, discovered automatically from the code — no separate CLI publish step.

By connecting to Evento Server, a bundle makes its components discoverable and routable within the cluster. The server uses this self-reported metadata to build the application graph and route commands, queries, and events. Deploying and scaling the bundle's processes is owned by your orchestrator (e.g. Kubernetes or Nomad).

#### Beyond Messaging: Event Store and the Power of History

Evento Server goes beyond basic message routing by offering an Event Store. This functionality is particularly valuable in the context of the REQQ architecture. The Event Store acts as a central repository for a chronologically ordered sequence of events captured by running bundles. This enables applications to:

* **Record Events:** Capture significant changes in the system state as events.
* **Replay Events:** Re-execute a sequence of events to recreate a specific system state or for debugging purposes.

This ability to record and replay events empowers developers to build robust and auditable applications.

#### Cluster Management: Keeping Track of the Ensemble

Evento Server acts as the central registry for all running application bundles within the cluster. It maintains critical information about each bundle, including its:

* **Status:** Monitors the health and operational state of each bundle instance.
* **Configuration:** Stores bundle-specific configuration details.
* **Location:** Tracks where each bundle instance is currently running within the cluster.

This centralized management simplifies monitoring and troubleshooting within the distributed system.

#### Telemetry Server: Understanding Application Behavior

Evento Server serves as a Telemetry Server, collecting and storing telemetry data generated by applications using the Evento framework. This data might include metrics like:

* Message processing times
* Resource utilization
* Error rates

By analyzing this data, developers gain valuable insights into application behavior, enabling them to identify bottlenecks, optimize performance, and make informed decisions for continuous improvement.

#### Scaling: An External Concern

{% hint style="info" %}
**Changed in Evento v2.** The built-in autoscaling protocol was removed. Evento Server no longer spawns or kills bundle instances and bundles no longer send "bored"/"suffering" scaling signals. Instead, the framework **emits performance metrics only** (via the telemetry server and Micrometer/Prometheus), and the decision to scale up or down is delegated to your orchestrator — for example Horizontal Pod Autoscaling in Kubernetes, or Nomad — driven by those metrics.
{% endhint %}

By exposing detailed performance telemetry rather than owning the lifecycle itself, Evento Server stays focused on routing and coordination while leaving elasticity to the platform best suited to it.

#### In Conclusion

Evento Server acts as the central nervous system of a distributed system built with the Evento framework. It facilitates communication between applications, provides a mechanism for recording and replaying events, manages the cluster of running bundles (which register themselves with their discovery metadata), and gathers telemetry data that external orchestrators can use for scaling. By leveraging these functionalities, developers can build robust, scalable, and maintainable distributed applications. As you delve deeper into the Evento framework, you'll discover how each component interacts with Evento Server to create a coordinated and responsive application ecosystem.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.eventoframework.com/evento-server/evento-server-introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
