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
  1. Architecture Overview

State-of-the-art Patterns

PreviousRecative Manifesto & Reactive PrinciplesNextQuick Start

Last updated 1 year ago

The ever-growing complexity of modern applications demands innovative approaches to ensure scalability, resilience, and maintainability. Distributed systems, where tasks and data are spread across multiple interconnected computers, have become the de facto standard for tackling these challenges. However, effectively managing distributed systems requires careful consideration of design patterns and architectural best practices.

This guide explores a collection of state-of-the-art patterns that empower developers to construct robust and performant distributed systems. We'll delve into each pattern, highlighting its core concepts, benefits, and how it specifically contributes to the design and implementation of RECQ architectures. RECQ stands for Reactive Event-Driven CQRS, a specific type of architecture that leverages these patterns to create efficient and scalable microservices.

By understanding these core design patterns, developers can leverage the strengths of distributed systems while mitigating their inherent complexities. Let's dive into the essential tools for building the distributed systems of tomorrow:

:

  • Concept: DDD is a strategic design approach that focuses on modeling an application around the core concepts of its business domain. It promotes the creation of a ubiquitous language shared by both technical and domain experts.

  • Benefits: Improved maintainability, better communication between stakeholders, and a system that reflects real-world business processes.

  • RECQ Relevance: DDD plays a crucial role in defining the domain model for RECQ architectures, ensuring services operate on well-defined business concepts.

  • Concept: CQRS separates read (queries) and write (commands) operations into distinct models. This allows for optimization of each model for its specific purpose.

  • Benefits: Improved performance, scalability, and flexibility. Read models can be optimized for retrieval speed, while write models can focus on data consistency.

  • RECQ Relevance: CQRS is a fundamental principle in RECQ architectures. Commands trigger state changes in the system, while queries retrieve data from specialized read models.

  • Concept: Event sourcing stores the history of all state changes in an application as a sequence of events. The current state is derived by replaying these events.

  • Benefits: Improved auditability, easier implementation of temporal queries (e.g., historical data analysis), and the ability to reconstruct the application state at any point in time.

  • RECQ Relevance: Event sourcing is a cornerstone of RECQ architectures. Events published by components represent state changes and are persisted in the System State Store (SSS).

  • Concept: Microservices communicate with each other by asynchronously sending and receiving messages through message queues or event-driven systems.

  • Benefits: Loose coupling between services, improved scalability (services can process messages at their own pace), and fault tolerance (failures in one service don't necessarily block others).

  • RECQ Relevance: RECQ architectures heavily rely on asynchronous messaging for communication between components. This promotes loose coupling and facilitates the flow of events throughout the system.

  • Concept: The saga pattern coordinates a sequence of local transactions across multiple services to handle long-lived business processes. It ensures eventual consistency, meaning the system might have temporary inconsistencies, but they will eventually be resolved.

  • Benefits: Manages complex transactional workflows that involve multiple services, ensuring data consistency across the system.

  • RECQ Relevance: Sagas are often used within RECQ architectures for complex business processes that require coordination across multiple services. The Evento Framework might provide specific features to simplify saga implementation.

Additional Notes:

  • These patterns are often used in conjunction with each other to build robust and scalable distributed systems.

  • The RECQ architecture specifically leverages these patterns to create a specific type of event-driven microservices architecture.

:

:

:

:

Command Query Responsibility Separation (CQRS)
Event Sourcing
Messaging Pattern (Asynchronous Message Passing)
Saga Pattern
Domain-Driven Design (DDD)