| # Engineering handbook — data & platform |
|
|
| ## Data retention policy |
| Customer data is retained for the duration of the account plus 90 days |
| after deletion, to allow for accidental-deletion recovery. Application logs |
| are retained for 30 days; security audit logs are retained for 1 year to |
| satisfy compliance requirements. Backups are encrypted at rest and rotated |
| every 24 hours with a 14-day retention window. |
|
|
| ## Database migrations |
| Schema migrations must be backward-compatible with the previous application |
| version to support zero-downtime deploys: add columns as nullable first, |
| backfill, then enforce constraints in a follow-up migration. Migrations |
| affecting tables over 10 million rows require a review from the database |
| team and must run online without locking writes. |
|
|
| ## API versioning |
| Public APIs are versioned in the URL path (/v1/, /v2/) and each version is |
| supported for at least 12 months after the next version ships. Breaking |
| changes require a new major version; additive changes (new optional fields) |
| can ship within the current version. Deprecation notices go out at least 90 |
| days before a version is sunset. |
|
|
| ## Feature flags |
| New user-facing features must ship behind a feature flag unless the change |
| is a pure bugfix. Flags default to off in production and are rolled out |
| gradually: 1% -> 10% -> 50% -> 100%, with at least a 24-hour soak at each |
| stage for risky changes. Stale flags older than 90 days are flagged for |
| cleanup in the quarterly flag audit. |
|
|
| ## Internal dashboards |
| Engineering metrics dashboards refresh every 15 minutes and pull from the |
| same warehouse tables used for the quarterly business review. Dashboard |
| access is open to all engineers; editing dashboard definitions requires the |
| data-platform team's review. |
|
|
| ## Data warehouse costs |
| Ad-hoc warehouse queries over 1TB scanned trigger an automatic Slack alert |
| to the requester and the data-platform on-call, since large ad-hoc queries |
| are the leading cause of unexpected warehouse cost spikes. |
|
|
| ## Team communication norms |
| Teams default to public channels over DMs for anything work-related, so |
| context stays searchable. Cross-team requests go through a dedicated |
| request channel rather than pinging individuals directly, and response-time |
| expectations there are best-effort, not an SLA. |
|
|
| ## Tooling procurement |
| New SaaS tool requests over $500/year go through a lightweight procurement |
| review covering security and data-handling questions before purchase. |
| Renewals under the same terms skip the review and are approved by finance |
| automatically. |
|
|
| ## Internal wiki hygiene |
| Wiki pages without an update in 12 months are flagged stale and surfaced in |
| a quarterly cleanup pass; owners either refresh or archive them. Search |
| ranking on the wiki favors recently-edited pages over older ones. |
|
|