Markdown Editor

Architecture Decision Record Template (Tyree-Akerman, Y-Statement)

Detailed ADR – Tyree & Akerman fields (assumptions, constraints, positions, argument, implications, related items) plus Y-statement

アーキテクチャ・システム設計標準Tyree & Akerman decision template; Y-statement (Zimmermann)adrfull

使い方: Decisions that are costly to reverse or affect several teams; use the short ADR or MADR for everyday choices. Record at least two positions and the argument first, then write the Y-statement summary last. Never edit an accepted record – supersede it.

プレビュー

ADR-[NNN]: [Short decision title in active voice]

Detailed architecture decision record combining the decision description fields proposed by Jeff Tyree and Art Akerman (IEEE Software, 2005) with Olaf Zimmermann's Y-statement summary. Use it for decisions that are costly to reverse or that several teams depend on. For everyday decisions, the shorter ADR or MADR templates are enough.

FieldValue
IDADR-[NNN]
Title[Short decision title]
Status[Proposed / Accepted / Rejected / Deprecated / Superseded by ADR-NNN]
Group[Architecture area, for example Integration, Data, Security, Platform]
Decision owner[@name]
Deciders[@name, @name]
Consulted[@team-a, @security]
Informed[@team-b, @operations]
Date proposedYYYY-MM-DD
Date decidedYYYY-MM-DD
Review by[YYYY-MM-DD or trigger, for example "when traffic exceeds 2,000 requests/s"]

1. Summary (Y-statement)

In the context of [functional or architectural context, for example "the order service publishing events to five downstream consumers"], facing [the concern or non-functional requirement, for example "the need for at-least-once delivery without coupling release cycles"], we decided for [the chosen option, for example "a transactional outbox with a managed message broker"] and neglected [the rejected options, for example "direct synchronous calls and a distributed two-phase commit"], to achieve [the benefits, for example "independent deployability and no lost events"], accepting that [the drawbacks, for example "consumers must be idempotent and events arrive up to 5 s late"].

2. Issue

[Describe the issue. Example: "The order service currently calls the invoicing, shipping and loyalty services synchronously. Any outage of a downstream service blocks checkout; three incidents in Q2 caused 4.5 hours of checkout downtime. Two new consumers are planned for next quarter, which would make the coupling worse."]

3. Decision

[Example: "The order service will write domain events to an outbox table in the same transaction as the order change. A relay process publishes outbox rows to the managed message broker topic orders.v1. Downstream services consume from their own subscriptions and must handle duplicate events."]

4. Assumptions

IDAssumptionHow it could be checked
AS-1Example: Peak event volume stays below 500 events/s for two yearsMonthly capacity report
AS-2Example: The managed broker meets our 99.95% availability targetProvider SLA and incident history
AS-3Example: Consumers can tolerate up to 5 s delivery delayConfirmed with consumer teams
[AS-n][Assumption][Check]

5. Constraints

IDConstraintSource
CO-1Example: Only managed services approved by the platform team may be usedPlatform policy
CO-2Example: Order data must not leave the EUData protection policy
[CO-n][Constraint][Source]

6. Positions

PositionDescriptionProsCons
P1Example: Keep synchronous REST calls, add retries and circuit breakersNo new infrastructure; familiarCheckout still depends on downstream availability; retries amplify load
P2Example: Transactional outbox and managed broker (chosen)No lost events; consumers decoupled; new consumers need no producer changeNew component to operate; eventual consistency; idempotent consumers required
P3Example: Distributed transaction across servicesStrong consistencyNot supported by managed databases; poor availability; high complexity
[Pn][Description][Pros][Cons]

7. Argument

[Example: "Availability of checkout is the top quality goal (see quality scenario QS-03). P1 cannot meet it because any downstream outage still blocks the request path. P3 conflicts with constraint CO-1 and reduces availability further. P2 removes downstream services from the checkout path, satisfies CO-1 and CO-2 with the EU-hosted managed broker, and makes adding consumers a change on the consumer side only. Its costs, operating a relay and making consumers idempotent, are lower than one more hour of checkout downtime per quarter."]

CriterionWeightP1P2P3
Checkout availability3131
Delivery guarantee2233
Operational effort2321
Fit with platform policy2330
Weighted score192511

8. Implications

  • [Example: Every consumer must deduplicate by event ID; the platform team publishes a shared library for this by YYYY-MM-DD.]
  • [Example: Operations adds alerts on outbox backlog older than 60 s.]
  • [Example: The event schema orders.v1 becomes a public contract; breaking changes require a new topic version.]
  • [Example: Reporting that relied on synchronous invoicing must accept a delay of up to 5 s.]

9. Related decisions

DecisionRelationship
Example: ADR-012 Adopt managed message brokerDepends on
Example: ADR-019 Event schema versioningConstrains
[ADR-NNN][Depends on / Constrains / Supersedes / Superseded by / Related]

10. Related requirements

RequirementHow the decision addresses it
Example: QS-03 Checkout available during downstream outageDownstream calls removed from checkout path
Example: NFR-07 No lost order eventsOutbox written in the same transaction
[ID][How addressed]

11. Related artifacts

ArtifactLocationChange needed
Example: Container diagramArchitecture document section 4Add broker and relay
Example: Order service codeservices/orders/outboxNew module
[Artifact][Location][Change]

12. Related principles

PrincipleApplied or deviatedNote
Example: Prefer asynchronous integration between domainsApplied
Example: Use managed services before self-hostingAppliedBroker is a managed service
[Principle][Applied / Deviated, waiver ID][Note]

13. Notes

DateNoteBy
YYYY-MM-DDExample: Security asked whether events contain personal data; confirmed only customer ID is included@name
YYYY-MM-DD[Note][@name]

Standard and licence note

Based on the architecture decision description template by Jeff Tyree and Art Akerman ("Architecture Decisions: Demystifying Architecture", IEEE Software 22(2), 2005) and the Y-statement format by Olaf Zimmermann. This template is original text written for this collection and reproduces no text from those publications. Template licence: MIT.

関連テンプレート