Releases: socialsoftware/microservices-simulator
Releases · socialsoftware/microservices-simulator
Modularization of the Simulator, Benchmarking, Documentation and Daniel Pereira's MSc Dissertation release
Modularization of the Simulator, Benchmarking, Documentation and Daniel Pereira's MSc Dissertation release
Latest
MSc Dissertation Release: This release serves as the official version for Daniel Pereira's MSc Dissertation.
What's New Since v3.1.3
Breaking Changes & Modular Architecture
- Modularization of the Simulator: Refactored the simulator core from a monolithic structure into distinct, decoupled modules: Aggregate, Coordination, Transaction, Notification, Messaging, Impairment, Monitoring, and Versioning.
- Package Renames: Renamed core modules for architectural clarity (
eventis nownotification,behaviouris nowimpairment, andtracingis nowmonitoring).
Benchmarking
- Benchmarking Pipeline: Introduced
benchmark-deployments.sh, an automated JMeter benchmark script to profile, stress-test, and compare the execution latency of Sagas and Transactional Causal Consistency (TCC) across all centralized and distributed topologies.
Documentation & Visuals
- Updated README and Guides: Comprehensively updated the
README.mdandguides/directory to reflect the new architecture, deployment modes, and configurations. - New Architecture Diagrams: Added and updated structural, topological, and layer-specific diagrams in the
data/figs/architecture/directory to visually map the decoupled system.
Nebula DSL & Code Generation (by @LourencoPonces )
- DSL Integration: Integrated the Nebula Domain Specific Language (DSL) under the
dsl/directory for the automated generation of aggregates, events, functionalities, and repositories. - Tooling: Added a VS Code extension for Nebula DSL with syntax highlighting and validation, alongside comprehensive user guides and tutorials.
AI-Assisted Development Support (by @kikoleitao )
- Introduced a comprehensive 'Agent Context' system (via
CLAUDE.mdand specialized.claude/skills) to provide structured, repository-aware guidance for LLMs and AI agents working on the codebase.
Command Refactoring and Infrastructure Optimization
What's New
- Command: Introduced
SagaCommandandCausalCommandclasses to decouple transactional logic from base commands. Implemented specialized handlers (SagaCommandHandlerandCausalCommandHandler) to unify command processing across different workflow types. - Dynamic Event Registration: Stream event subscribers now auto-register based on the application name, removing the need for manual
Aggregate EventSubscriberServiceconfiguration. - Standardized Configuration: Introduced
application.yamltemplates and updated services to use${spring.application.name}for consistent property management and discovery.
API Gateway Migration and Docker Optimization
What's New
- API Gateway Restructuring: Moved the API Gateway into the
simulatorlibrary, changing it from a Reactive application to an MVC application. Updated routing to be handled within the application microservice configuration. - Unified Docker Image: Reconfigured
docker-composeand Kubernetes deployments to use a single shared image for all microservices, significantly saving space, and updated configurations to use runtime profile support. - Gateway Profiles: Added specific Maven profiles for running the
version-serviceandgateway. - Reliability Improvements: Added command timeouts to
CommandGateway. - Documentation & Configurations: Updated the README, system architecture diagrams, and IntelliJ run configurations to accurately reflect the new API Gateway and Docker/Kubernetes deployment changes.
Distributed Versioning and Command Handler Unification
What's New
- Distributed Version Service: Added Snowflake ID-based distributed versioning option for sagas.
- Unified Command Handlers: Eliminated per-microservice gRPC and Stream CommandHandler classes in favor of a generic, auto-registering handler.
- Improved Command Gateways: Stream and gRPC gateways now support local calls when sender and destination match. Added retry fixes and a new Circuit Breaker test.
- Simplified Docker Compose: Refactored configuration with runtime profile support (SPRING_PROFILES_ACTIVE), removing unnecessary shared configs.
- Cleanup: Removed deprecated AsyncStep and SagaAsyncStep workflow classes.
- Updated README & diagrams to reflect the new architecture.
Kubernetes, gRPC and Distributed Tracing Support
This release adds Kubernetes deployment support, gRPC as an alternative inter-service communication layer, and distributed tracing with Jaeger across all execution modes.
Distributed Application Support
Introduction of the Command Gateway pattern for inter-service communication, support for independently deployable microservices, and addition of RabbitMQ-based messaging via Spring Cloud Stream.
Saga support
Saga transactional management is added to the microservices simulator