RECQ (Reactive, Event-Driven Commands and Queries) is a set of principles and architectural, methodological, behavioral, structural patterns aimed at the creation of softwares with Event-driven Microservices architectures compliant to the Reactive Manifesto and the more recent Reactive Principles.
Distributed systems are networks of interconnected computers that work together to achieve a common goal. They distribute tasks and data across multiple machines for improved performance, fault tolerance, and scalability. Distributed systems require careful coordination and communication to ensure consistency and synchronization of data. They provide a robust framework for efficient resource utilization and support the demands of modern computing environments.
Microservices architecture is an approach to building applications as a collection of small, loosely coupled, and independently deployable services. Each service in a microservices architecture focuses on a specific business capability, and they communicate with each other through well-defined APIs.
The Reactive Manifesto outlines principles for building responsive, resilient, elastic, and message-driven systems. It emphasizes timely feedback, fault tolerance, dynamic scalability, and efficient communication. By following these principles, developers can create applications capable of handling high concurrency, adapting to changing conditions, and delivering reliable user experiences.
The Reactive Principles is a document that provides guidance and techniques established among experienced Reactive practitioners for building individual services, applications, and whole systems. As a companion to the Reactive Manifesto it incorporates the ideas, paradigms, methods, and patterns from both Reactive Programming and Reactive Systems into a set of practical principles that software architects and developers can apply in their transformative work.
DDD (Domain Driven Design) is a design approach based on the domain model to analize, design and implement systems for scalability and maintainability.
CQRS (Command Query Responsability Separation) is a design pattern that separates the read and write operations of an application, optimizing performance, scalability, and flexibility.
Event Sourcing is a pattern where the state of an application is derived by replaying events. Events are stored as a log, enabling auditability, temporal queries, and reconstructing state at any point in time.
Messaging pattern involves communication between microservices through asynchronous message passing using message queues or event-driven systems, promoting loose coupling, scalability, and fault tolerance in distributed systems.
Saga is a design pattern for handling long-lived transactions in distributed systems. It ensures eventual consistency by coordinating a sequence of local transactional steps across multiple services.
This is a methodological pattern that defines seven types of components. For each component, the applicable semantics and set of capabilities have been defined.