The engineering bottleneck with assembled stacks
Compliance officers ask where a record changed and receive application logs: unstructured, rotated, missing the actor, missing the before state. The truthful answer “we cannot reconstruct that” ends audits and occasionally companies. Retrofitting auditability later means touching every write path under time pressure, which is why it stays unretrofitted.
Architecture on the Software Lifecycle Cloud
The audit table is keyed by the audited record’s id with time as the sort key, so a record’s whole history is one ordered read. Write paths either emit entries explicitly — best for business meaning (“discount approved by”) — or lean on a table change stream that invokes a function with batched item changes. Retention windows and legal holds are fields the archiving worker respects.
Before-images are the difference between a log and evidence
An entry that says “record updated” is a rumour; an entry carrying the before and after values is evidence. Storing both costs storage at 0.04 credits per GB-hour and buys the only audit answers that matter: what the world looked like before this person acted, and after. Queries by actor run the other direction — everything this id touched this quarter — from the same rows.
- One ordered read returns a record’s complete change history
- Change streams can generate entries automatically for tables whose writes should never be silent
- Holds and retention are enforced by the archiving job reading the same fields auditors query
What an audit log cannot fix
It records changes made through the system; it cannot see changes made around it. The discipline that makes it evidence-grade is boring: all writes flow through functions and workers that emit entries, and direct data surgery is treated as an incident. The platform gives the pattern a home; the team gives it completeness.
Frequently asked questions
Both, for different tables. Business-critical writes deserve explicit entries with business language. High-volume tables can rely on a change stream invoking a function with batched before/after changes — automatic coverage with no per-call-site effort.
As long as your retention fields say — the archiving worker enforces per-table windows and legal holds, moving cold history to bucket files with checksums. Storage is 0.04 credits per GB-hour, so retention length is a visible, priced decision.
They can be given a read surface over exactly these tables: by record, by actor, by window. Because entries are structured rows with before/after images, auditor questions are queries, not engineering tickets.
Related capabilities, architectures, and comparisons
Ship your stack on the Software Lifecycle Cloud.
Closed preview on dedicated European infrastructure. Bring a repository or start from a blueprint.