Extract product-agnostic workflow engine from Ablera.Serdica.Workflow into standalone StellaOps.Workflow.* libraries targeting net10.0. Libraries (14): - Contracts, Abstractions (compiler, decompiler, expression runtime) - Engine (execution, signaling, scheduling, projections, hosted services) - ElkSharp (generic graph layout algorithm) - Renderer.ElkSharp, Renderer.ElkJs, Renderer.Msagl, Renderer.Svg - Signaling.Redis, Signaling.OracleAq - DataStore.MongoDB, DataStore.PostgreSQL, DataStore.Oracle WebService: ASP.NET Core Minimal API with 22 endpoints Tests (8 projects, 109 tests pass): - Engine.Tests (105 pass), WebService.Tests (4 E2E pass) - Renderer.Tests, DataStore.MongoDB/Oracle/PostgreSQL.Tests - Signaling.Redis.Tests, IntegrationTests.Shared Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.3 KiB
Signal Driver / Backend Matrix 2026-03-17
Purpose
This snapshot records the current six-profile synthetic signal round-trip comparison:
OraclePostgreSQLMongoOracle+RedisPostgreSQL+RedisMongo+Redis
The matrix is artifact-driven. Every value comes from measured JSON artifacts under TestResults/workflow-performance/. No hand-entered metric values are used.
The exact generated matrix artifact is:
WorkflowPerfComparison/20260317T210643496-workflow-backend-signal-roundtrip-six-profile-matrix.mdWorkflowPerfComparison/20260317T210643496-workflow-backend-signal-roundtrip-six-profile-matrix.json
Serial Latency
Primary comparison rows in this section are:
Signal to first completion avgDrain-to-idle overhang avg
Signal to completion avg is a mixed number.
It includes both real resume work and the benchmark drain policy.
| Metric | Unit | Oracle | PostgreSQL | Mongo | Oracle+Redis | PostgreSQL+Redis | Mongo+Redis |
|---|---|---|---|---|---|---|---|
| End-to-end avg | ms | 3091.73 | 3101.57 | 151.36 | 3223.22 | 3073.70 | 3099.51 |
| End-to-end p95 | ms | 3492.73 | 3143.39 | 308.90 | 3644.66 | 3090.75 | 3162.04 |
| Start avg | ms | 105.88 | 16.35 | 38.39 | 110.03 | 8.32 | 21.77 |
| Signal publish avg | ms | 23.39 | 11.47 | 14.30 | 23.90 | 7.55 | 10.43 |
| Signal to first completion avg | ms | 76.15 | 37.56 | 55.06 | 81.46 | 31.77 | 40.88 |
| Signal to completion avg | ms | 2985.81 | 3085.21 | 112.92 | 3113.11 | 3065.38 | 3077.73 |
| Drain-to-idle overhang avg | ms | 2909.65 | 3047.65 | 57.86 | 3031.66 | 3033.61 | 3036.85 |
Parallel Throughput
| Metric | Unit | Oracle | PostgreSQL | Mongo | Oracle+Redis | PostgreSQL+Redis | Mongo+Redis |
|---|---|---|---|---|---|---|---|
| Throughput | ops/s | 24.17 | 26.28 | 119.51 | 21.88 | 25.51 | 25.14 |
| End-to-end avg | ms | 3740.84 | 3546.11 | 688.57 | 4147.82 | 3643.70 | 3701.72 |
| End-to-end p95 | ms | 3841.33 | 3554.13 | 701.92 | 4243.83 | 3675.15 | 3721.14 |
| Start avg | ms | 47.44 | 11.32 | 17.89 | 55.82 | 17.07 | 17.04 |
| Signal publish avg | ms | 15.62 | 15.11 | 10.85 | 23.80 | 10.53 | 12.27 |
| Signal to completion avg | ms | 3525.84 | 3469.46 | 590.78 | 3872.54 | 3564.43 | 3598.14 |
Integrity
The comparison test required all six columns to pass these checks on both the serial-latency and parallel-throughput source artifacts:
Failures = 0DeadLetteredSignals = 0RuntimeConflicts = 0StuckInstances = 0WorkflowsStarted = OperationCountSignalsPublished = OperationCountSignalsProcessed = OperationCount
All six columns passed.
Interpretation
The main conclusions from this six-profile matrix are:
- Native Mongo is still the fastest measured profile for the synthetic signal round-trip.
- Native PostgreSQL remains the best-performing relational profile.
- Oracle+Redis is slower than native Oracle in this benchmark.
- PostgreSQL+Redis is very close to native PostgreSQL, but not clearly better.
- Mongo+Redis is dramatically worse than native Mongo because the Redis path reintroduces the empty-wait overhang that native change streams avoid.
The most useful row for actual resume speed is Signal to first completion avg, not the mixed Signal to completion avg, because the latter still includes drain-to-idle policy.