Good to see you again. Your proposed ADR for a durable event log made the decision and its consequences explicit. Before that ADR becomes accepted, however, reviewers need a transparent way to compare the alternatives rather than relying on “this feels more scalable” or a preferred vendor.
This lesson adds that comparison tool: the weighted trade-off matrix. You will use the workload assumptions from the capacity model, especially the events-per-second attack peak and three-day replay horizon, to compare direct delivery, a durable work queue, and a retained event log. The result is not a mathematically ordained architecture; it is a defensible record of how stated priorities led to a choice.
A matrix makes priorities inspectable
Every meaningful architecture option has benefits and costs. A direct path from a Telemetry Connector to a Detection Worker can minimize latency and infrastructure, but couples collection to downstream availability. A durable queue can absorb a worker outage, but may not make long-lived replay or independent consumer progress a first-class capability. A retained event log supports replay and multiple consumers, but adds a substantial operational and security surface.
The crucial move is to start with business and product drivers, then translate them into architectural criteria. “We need reliable behavioral detection during an attack” is not yet a criterion. It needs to become specific properties such as:
- durable buffering while workers are unavailable;
- bounded replay after a detection defect;
- independently deployable connector and worker fleets;
- acceptable first-detection latency;
- an operational model the platform team can actually sustain.
Lesson 145 - Analyzing Tradeoffs
Watch “Lesson 145 - Analyzing Tradeoffs” from Software Architecture Monday. It shows how an architect converts business drivers into architectural characteristics, then evaluates alternatives through concrete scenarios rather than abstract technology claims.
Begin with business mapping, where the presenter connects a time-to-market goal to maintainability, testability, and deployability. Then watch scenario comparison, which examines how two payment-service designs behave when change, extension, and multi-payment workflows occur. Finish with the decision, focusing on the principle that the prioritized business driver determines which trade-off is acceptable.
A weighted matrix does three useful things:
- It separates importance from performance. A weight says how much the system values a criterion. A score says how well a particular option satisfies it.
- It exposes disagreement. Reviewers can challenge a weight, a score, or the evidence behind either, rather than arguing vaguely about the proposed technology.
- It leaves an audit trail. The resulting table can become evidence in the ADR’s rationale, alongside the qualitative consequences and confirmation plan.
It does not replace engineering judgment. A low-confidence benchmark estimate, a legal constraint, or a missing operational capability should not be concealed behind a weighted total.
The mechanics: weights, scores, and direction
The restaurant example below illustrates the basic arithmetic. Each customer-waiting problem is assessed against criteria such as customer pain and ease to solve. Each criterion has a weight, each problem receives a score, and the weighted values are added.

For architectural use, the rows become alternatives and the columns become decision criteria. The arithmetic is:
where:
- is the total for alternative ;
- is the importance weight of criterion ;
- is alternative 's score for criterion .
A simple -to- scale is generally sufficient:
| Value | Weight meaning | Score meaning |
|---|---|---|
| Minor importance | Poor fit for the criterion | |
| Important, but not decisive | Adequate fit with meaningful limitations | |
| Critical to the decision | Strong fit for the criterion |
The scale is deliberately coarse. Giving an option a suggests a level of measurement precision that architecture decisions rarely have. The supporting note behind a score is often more valuable than the score itself.
Architectural Decisions and Trade-offs — Pratik Dhanave
Read “Architectural Decisions and Trade-offs” by Pratik Dhanave for a compact explanation of why architecture choices have no universal winner and how a matrix makes system-specific priorities visible.
In the section “Trade-off analysis: there is no ‘best’,” read the framing passage. Focus on the distinction between an option that is generally attractive and an option that best serves this system’s prioritized qualities. Then, in “Lightweight methods to get to a decision,” read the decision-matrix discussion beginning with the grid method. Notice that the total is useful precisely because the weights make the underlying priorities inspectable.
Make every criterion directional
A common matrix error is a column with an unclear meaning, such as Complexity, Impact, or Security. A high score might mean “more complexity,” “more impact,” or “more security,” depending on who reads it. That makes totals meaningless.
Name criteria so that a higher score always means better fit:
| Ambiguous criterion | Better directional criterion |
|---|---|
| Complexity | Lower operational burden |
| Impact on other systems | Lower adverse impact on dependent systems |
| Security | Ability to enforce workload authorization and retention controls |
| Scalability | Ability to absorb the modeled attack burst |
| Cost | Better fit within the operating-cost envelope |
This is a small discipline with major payoff during review. If a reviewer sees a , they should never need to ask whether that is good or bad.
Do not use a matrix to waive a hard constraint
Some conditions are not trade-offs. They are gates. Examples for a cybersecurity platform include:
- prohibited data residency;
- inability to authenticate and authorize workloads;
- failure to meet a regulatory retention obligation;
- lack of encryption required by the security baseline;
- a platform capability the team cannot operate or procure.
An option that fails a gate should be eliminated or redesigned. It should not remain in the matrix merely because it scores well on cost or latency.
For this lesson’s telemetry decision, assume each alternative can meet baseline encryption, workload identity, and residency controls. Those requirements remain mandatory. The matrix therefore compares the remaining architectural differences.
Build the matrix from scenarios, not product labels
The previous lessons established why the behavioral-detection platform needs durable handling of a modeled attack burst and a way to recover detection processing. Turn those concerns into concrete scenarios before assigning any scores.
For example:
During a -minute attack burst at normalized events per second, Detection Workers may slow or restart. The architecture should preserve received normalized events, allow workers to recover without losing processing position, and support controlled reprocessing after a detection defect.
This scenario yields criteria that have observable meanings. For the event-buffering decision, use these options:
| Alternative | Definition |
|---|---|
| A. Direct delivery | Each connector sends normalized events directly to active Detection Workers, with connector-side retry for transient failures. |
| B. Durable work queue | Connectors publish messages to a durable, acknowledgement-based queue. A message is normally removed after successful consumer acknowledgement; dead-letter handling supports exceptional failures. |
| C. Retained event log | Connectors append events to a replicated, partitioned log with time-based retention. Consumers manage their own positions and can replay retained events. |
The definitions matter. “Use a queue” is too vague to score. The team must specify whether the queue retains acknowledged events, supports multiple independent consumers, permits resettable consumer positions, and has a bounded retention window. If its answers make it behave like a retained log, it is no longer the same alternative.
Now choose criteria and weights. The following weights reflect the stated behavioral-detection priorities, not universal truth:
| Criterion | Weight | Why it matters here |
|---|---|---|
| Durable burst isolation and worker recovery | Ingestion should not fail simply because detection slows, deploys, or restarts. | |
| Bounded replay and reprocessing | Detection defects and model changes need a controlled way to revisit normalized events. | |
| Independent consumer evolution | Detection, enrichment, and future analytics may need separate progress and deployment schedules. | |
| Lower operational burden and cost | Platform complexity, on-call ownership, and retained-storage costs remain material. | |
| Low publish-to-first-detection latency | Timely detection matters, but this decision is not primarily about shaving a few milliseconds from an individual hop. |
The weights add to . With a maximum score of , the highest possible total is:
That maximum is useful for a rough normalized comparison:
Normalization is optional. It does not add information; it merely makes a total easier to communicate as a fraction of the maximum possible score.
Score the alternatives with evidence
Before filling the table, establish scoring anchors. They prevent the team from inventing a different meaning of “good” for each row.
| Criterion | Score | Score | Score |
|---|---|---|---|
| Burst isolation and recovery | Worker disruption directly threatens ingestion | Durable buffer covers ordinary disruptions | Replicated buffer decouples producers and consumers with explicit recovery behavior |
| Replay and reprocessing | Requires recollection or reconstruction from a separate store | Limited retry or exceptional replay path | Retained events and resettable consumer positions enable controlled replay |
| Independent consumer evolution | One tightly coupled processing path | Additional consumers possible with extra coordination | Multiple consumers progress independently against retained data |
| Lower operational burden and cost | Specialist operational surface and substantial retained infrastructure | A managed or bounded service with moderate ownership | Minimal additional platform operation |
| Low first-detection latency | Extra persistence or coordination significantly delays processing | One asynchronous handoff with acceptable overhead | Direct, low-hop delivery path |
Using those anchors, the team can produce an initial, explicitly provisional matrix:
| Criterion | Weight | A. Direct delivery | B. Durable work queue | C. Retained event log |
|---|---|---|---|---|
| Durable burst isolation and worker recovery | ||||
| Bounded replay and reprocessing | ||||
| Independent consumer evolution | ||||
| Lower operational burden and cost | ||||
| Low publish-to-first-detection latency | ||||
| Weighted total | 39 | 62 | 82 | |
| Normalized result | 41% | 65% | 86% |
The event log leads because the platform has deliberately placed the greatest weight on properties it serves well: retained replay, strong decoupling, and independent consumers. It loses decisively on simplicity and likely loses some latency relative to direct delivery. Those are not defects in the analysis; they are the cost the architecture is choosing to accept.
The scores must be accompanied by rationale. Otherwise, a becomes an unexplained assertion.
| Alternative | Evidence behind the score | Cost or risk that must remain visible |
|---|---|---|
| Direct delivery | Few infrastructure components and minimal handoff latency. | Worker availability becomes part of the ingestion critical path; replay requires a separate reconstruction path. |
| Durable work queue | Durable buffering and acknowledgement handling reduce immediate producer-consumer coupling. | Acknowledged messages are normally no longer available for broad replay; multi-consumer patterns may require duplication or additional routing. |
| Retained event log | Replicated, time-retained records and independent consumer positions support controlled replay and additional consumers. | Storage, partitioning, lag monitoring, access control, encryption, incident response, and replay safety become platform obligations. |
This is why a matrix should live beside narrative analysis rather than replace it. The total is useful, but it cannot explain the security implications of retained telemetry, the effect of a specific partitioning scheme, or whether workers are idempotent enough to tolerate replay.
Test whether the conclusion is robust
A matrix is most valuable when someone can challenge it. The correct response is not “the spreadsheet says so.” It is to ask which assumption changes the outcome?
First, test the weights
The retained log exceeds the durable queue by points. Most of that difference comes from replay, consumer independence, and strong burst isolation. If the product no longer required bounded replay, the replay weight should fall. But that would represent a product and recovery-policy change, not a cosmetic edit to a spreadsheet.
Conversely, if platform operations had no ability to procure or run a retained log safely, “lower operational burden” might become a hard viability gate rather than a weighted criterion. In that case, the log could be infeasible despite its higher total.
Then, test uncertain scores
A score should change when evidence changes. Consider these examples:
- If a queue product demonstrably provides retained, independently replayable messages for the required horizon, its replay score should rise. The option must then be redefined, because it has become closer to a retained log.
- If a benchmark shows the event log cannot ingest representative records at the modeled attack peak with required headroom, its burst-isolation score must fall or the option must be eliminated.
- If the detection path’s latency objective is far tighter than currently assumed, the latency weight may rise and a measurement-backed score becomes essential.
- If the event log is managed with a mature operational model, its burden score could improve from to , though retained-data costs and security responsibilities remain.
A good review records these as sensitivity points and assigns validation work. It does not pretend that all unknowns have already been resolved.
Avoid the common failure modes
| Failure mode | Why it misleads | Better practice |
|---|---|---|
| Selecting criteria after choosing a favorite option | The matrix becomes theater. | Agree on decision drivers before scoring options. |
| Double-counting a priority | “Reliability,” “availability,” and “resilience” may all represent the same underlying concern. | Use distinct criteria with distinct evidence. |
| Treating a total as proof | Scores are judgment calls, not physical measurements. | Record rationale, confidence, and validation evidence. |
| Letting one stakeholder assign every weight | A single role may underweight security, operations, cost, or product impact. | Involve Product, Detection Engineering, Security, and SRE. |
| Hiding uncertainty behind precision | A total of is not exact. | Use coarse scales and identify the assumptions most likely to change the result. |
| Scoring a legal or security baseline as optional | A high total could mask an unacceptable design. | Apply non-negotiable gates before the comparison. |
For a principal-level review, it is often useful to have stakeholders score independently first, then reconcile differences in the open. A disagreement such as “SRE assigns the log a for operational burden while Detection Engineering assigns it a ” is productive: it reveals an ownership or capability gap that the architecture must address.
Carry the result into the ADR
The weighted matrix does not replace the ADR written in the previous lesson. It strengthens it.
The ADR’s rationale can now be more precise:
Given the need to preserve normalized telemetry through worker disruptions, support three-day controlled replay, and allow independently evolving consumers, a retained event log scores higher than direct delivery and an acknowledgement-based work queue. We accept its additional operational, storage, and security obligations because the highest-weighted detection-recovery requirements cannot be met as strongly by the simpler alternatives.
The ADR should include or link to:
- the decision question and option definitions;
- the criteria, weights, scores, and scoring rationale;
- the stakeholder roles who reviewed the comparison;
- uncertainty and dissent worth preserving;
- confirmation work, especially a representative events-per-second benchmark, replay test, and access-control validation;
- review triggers, such as a materially different latency objective, retention policy, or operating-cost model.
That linkage keeps the trade-off matrix from becoming an isolated spreadsheet artifact. The matrix explains how alternatives were compared; the ADR states what was decided and what obligations follow.
Key takeaways
A weighted trade-off matrix is a disciplined comparison method, not an automatic decision engine.
- Begin with a narrowly framed decision and concrete, realistic alternatives.
- Derive criteria from business drivers and quality-attribute scenarios.
- Separate weights for importance from scores for option fit.
- Make every criterion directional: higher must always mean better.
- Eliminate options that fail hard security, compliance, or feasibility constraints before comparing totals.
- Pair each score with evidence, an explanation, and a visible downside.
- Perform sensitivity analysis on uncertain weights and scores before treating a result as robust.
- Record the result and the accepted costs in the ADR.
Next, you will turn this kind of analysis into a concise five-minute architecture recommendation tailored to both engineering and business stakeholders.
Can't find a good explanation? Sign up and we'll make it for you
Sign up