diff --git a/docs/architecture/c4/ttl/create-ttl.md b/docs/architecture/c4/ttl/create-ttl.md new file mode 100644 index 00000000..62bf04b8 --- /dev/null +++ b/docs/architecture/c4/ttl/create-ttl.md @@ -0,0 +1,26 @@ +--- +layout: page +title: Digital Letters - Printed Letter TTL Creation +parent: Architecture +nav_order: 1 +has_children: false +is_not_draft: false +last_modified_date: 2025-10-09 +owner: Tom D'Roza +author: Tom D'Roza +--- + +```mermaid + architecture-beta + group createTtl(cloud)[Time_To_Live] + + service db(logos:aws-dynamodb)[DynamoDB] in createTtl + service createLambda(logos:aws-lambda)[Create print ttl] in createTtl + service queue(logos:aws-sqs)[SQS] in createTtl + service storedEvent(logos:aws-eventbridge)[LetterStored event] + service scheduledEvent(logos:aws-eventbridge)[LetterPrintingScheduled event] + + storedEvent:R --> L:queue + queue:R --> L:createLambda + createLambda:R --> L:db + db:R --> L:scheduledEvent diff --git a/docs/architecture/c4/ttl/manage-ttl.md b/docs/architecture/c4/ttl/manage-ttl.md new file mode 100644 index 00000000..d1f73edf --- /dev/null +++ b/docs/architecture/c4/ttl/manage-ttl.md @@ -0,0 +1,25 @@ +--- +layout: page +title: Digital Letters - Printed Letter TTL Management +parent: Architecture +nav_order: 2 +has_children: false +is_not_draft: false +last_modified_date: 2025-10-09 +owner: Tom D'Roza +author: Tom D'Roza +--- + +```mermaid +architecture-beta + group manageTTL(cloud)[ManageTTL] + service manageLambda(logos:aws-lambda)[Poll TTL] in manageTTL + service manageDb(logos:aws-dynamodb)[DynamoDB] in manageTTL + service ttlStream(logos:aws-stream)[Stream] in manageTTL + service manageTtlExpiry(logos:aws-lambda)[handleTTLExpiry] in manageTTL + service printTTLExpired(logos:aws-eventbridge)[PrintTTLExpired] in manageTTL + + manageLambda:R -- L:manageDb + manageDb:B -- T:ttlStream + ttlStream:R -- L:manageTtlExpiry + manageTtlExpiry:R -- L:printTTLExpired diff --git a/docs/diagrams/create-print-ttl-sequence.md b/docs/diagrams/create-print-ttl-sequence.md new file mode 100644 index 00000000..8d54d605 --- /dev/null +++ b/docs/diagrams/create-print-ttl-sequence.md @@ -0,0 +1,25 @@ +--- +layout: page +title: Fallback to Printing Sequence Diagram +nav_order: 3 +parent: Diagrams +has_children: false +child_nav_order: reversed +is_not_draft: false +last_modified_date: 2025-10-08 +owner: Tom D'Roza +author: Tom D'Roza +--- + +```mermaid +sequenceDiagram + participant eb as Event Bridge + participant sqs as SQS + participant createTTL as Create TTL Lambda + participant dynamo as DynamoDB + + + eb ->> sqs: LetterStored event + sqs ->> createTTL: + createTTL ->> dynamo: Insert (24h TTL) +``` diff --git a/docs/diagrams/digital-letters-flow.md b/docs/diagrams/digital-letters-flow.md index 41e356d2..66b0046c 100644 --- a/docs/diagrams/digital-letters-flow.md +++ b/docs/diagrams/digital-letters-flow.md @@ -1,7 +1,7 @@ --- layout: page title: Flow diagram -nav_order: 2 +nav_order: 1 parent: Diagrams has_children: false child_nav_order: reversed diff --git a/docs/diagrams/digital-letters-sequence.md b/docs/diagrams/digital-letters-sequence.md index 1978ee52..221579e7 100644 --- a/docs/diagrams/digital-letters-sequence.md +++ b/docs/diagrams/digital-letters-sequence.md @@ -1,6 +1,6 @@ --- layout: page -title: Sequence diagram +title: Digital Letters Sequence diagram nav_order: 2 parent: Diagrams has_children: false diff --git a/docs/diagrams/expire-print-ttl-sequence.md b/docs/diagrams/expire-print-ttl-sequence.md new file mode 100644 index 00000000..255ab711 --- /dev/null +++ b/docs/diagrams/expire-print-ttl-sequence.md @@ -0,0 +1,32 @@ +--- +layout: page +title: Fallback to Printing Sequence Diagram +nav_order: 3 +parent: Diagrams +has_children: false +child_nav_order: reversed +is_not_draft: false +last_modified_date: 2025-10-08 +owner: Tom D'Roza +author: Tom D'Roza +--- + +```mermaid +sequenceDiagram + participant dynamo as DynamoDB + participant stream as DynamoDB Stream + participant expireTTL as Expire TTL Lambda + participant processTTLExpiry as Process TTL Expiry Lambda + participant eb as Event Bridge + + alt Dynamo auto-expires after TTL + dynamo ->> dynamo: TTL expires + dynamo ->> stream: TTL expired + stream ->> processTTLExpiry: + processTTLExpiry ->> eb: PrintTTLExpired Event + else Polling Lamba expires after TTL + expireTTL ->> dynamo: + dynamo ->> stream: TTL expired + processTTLExpiry ->> eb: PrintTTLExpired Event + end +```