Evento Framework
  • Introduction
  • Architecture Overview
    • Distributed Systems & Microservices
    • Recative Manifesto & Reactive Principles
    • State-of-the-art Patterns
      • DDD (Domain Driven Design)
      • CQRS (Command Query Responsability Separation)
      • Event Sourcing
      • Messaging
      • Saga
  • GETTING STARTED
    • Quick Start
    • TodoList - RECQ Tutorial
      • Problem Description and Requirement Gathering
      • RECQ Payload Design
      • RECQ Components Design
      • Set up your Development Environment
      • RECQ Payload Evento Implementation
        • Domain Commands
        • Domain Events
        • Views
        • Queries
      • RECQ Components Evento Implementation with Spring Data
        • TodoListAggregate
        • TodoList Model with Spring Data
        • TodoListProjector
        • TodoListProjection
        • TodoList Invoker
      • Expose the RECQ architecture with Spring Web
      • Test Your App
    • Extend TodoList - Handle Complexity Tutorial
      • Unique identifier generation
      • Extends behaviors with Observer and Services
      • Cross Domain Consistency with Sagas
      • Handle Real time data updates with MQTT and Save-Notify Pattern
  • RECQ Patterns
    • RECQ Patterns
    • RECQ System Pattern
      • Component
      • Message Gateway
      • System State Store
    • RECQ Communication Pattern
      • Component to Component
      • Component to System State Store
      • System State Store to Component
    • RECQ Component Pattern
      • Aggregate
      • Projector
      • Projection
      • Service
      • Invoker
      • Saga
      • Observer
  • Evento Framework
    • Evento Framework Introcution
    • Payload and Messages
      • Command
        • Domain Command
        • Service Command
      • Event
        • Domain and Service Event
      • Query and View
    • @Component
      • @Aggregate
        • Aggregate State
        • @AggregateCommandHandler
        • @EventSourcingHandler
      • @Projector
        • Projector @EventHandler
      • @Projection
        • @QueryHandler
      • @Service
        • @CommandHandler
      • @Invoker
      • @Saga
        • SagaState
        • @SagaEventHandler
      • @Observer
    • Dead Event Queues
    • EventoBundle
      • EventoServerMessageBusConfiguration
      • ConsumerStateStore
        • InMemoryConsumerStateStore
        • PostgresConsumerStateStore
        • MysqlConsumerStateStore
      • Context
      • TracingAgend and @Track
        • SentryTracingAgent
      • Autoscaling Protocol
        • ThreadCountAutoscalingProtocol
      • Injector and @Component
  • Evento Server
    • Evento Server Introduction
    • SetUp Evento Server
      • Advanced Options
      • Evento Event Store Modes: APES and CPES
    • Evento Server Cluster
    • Bundle Deploy Script
  • EVENTO GUI
    • Explore RECQ Systems Visually
    • GUI Auth
    • Payload Catalog
    • Component Catalog
    • Bundle Catalog
    • Cluster Status (Experimental)
    • Flows
      • Performance Evaluation
    • Application Graph
    • System State Store
  • Evento CLI
    • Evento CLI Introduction
    • Update Version
    • Publish
Powered by GitBook
On this page

Architecture Overview

RECQ stands for Reactive, Event-driven, CQRS (Command Query Responsibility Segregation), and Microservices. It's an architectural style designed to build scalable, responsive, and maintainable applications. Here's a breakdown of its key principles:

1. Reactive:

  • Systems built on RECQ principles are responsive to user interactions and data changes.

  • They utilize asynchronous programming techniques to handle events and updates efficiently.

  • This leads to a smoother user experience and better handling of high workloads.

2. Event-driven:

  • Communication between different parts of the application happens through events.

  • Events represent something that happened in the system, carrying relevant data about the change.

  • Components subscribe to specific events, allowing them to react and update their functionalities accordingly.

3. CQRS (Command Query Responsibility Segregation):

  • This principle promotes the separation of concerns by having separate components handle data reads (queries) and writes (commands).

  • Command Service: This service handles user commands for adding, editing, and deleting data. It publishes events representing these actions.

  • Query Service: This service handles user queries for retrieving data. It subscribes to relevant events published by the Command Service to keep its data up-to-date and respond to user requests efficiently.

4. Microservices:

  • The application is broken down into smaller, independent services that communicate with each other.

  • Each microservice has a well-defined purpose and can be developed, deployed, and scaled independently.

  • This modularity improves flexibility, maintainability, and fault tolerance.

Benefits of RECQ Architecture:

  • Scalability: The microservices architecture allows for horizontal scaling of individual services to handle increased load.

  • Resilience: Failure in one microservice is less likely to cascade to others due to independent deployments and event-driven communication.

  • Maintainability: Modular design with clear separation of concerns makes the application easier to understand and manage.

  • Responsiveness: Reactive principles enable the application to react quickly to user interactions and data changes.

Who should use RECQ Architecture?

This architecture is well-suited for building:

  • Modern, large-scale web applications

  • Real-time and data-intensive applications

  • Applications requiring high availability and scalability

Tools for Implementing RECQ:

  • There are several frameworks available that can help implement RECQ principles.

  • Examples include:

    • Akka (Scala)

    • Spring Cloud Stream (Java)

    • Lagom (Java)

    • Axon Framework (Java)

    • Evento Framework (Java) (specifically designed for RECQ with Java)

Conclusion:

RECQ Architecture provides a valuable set of principles for building robust and scalable applications. By leveraging its core principles of reactive programming, event-driven communication, CQRS, and microservices, developers can create applications that can handle high traffic, respond quickly to changes, and are easier to maintain.

PreviousIntroductionNextDistributed Systems & Microservices

Last updated 1 year ago