Decision Library

Patterns

Reusable decision frameworks, implementation notes, and system breakdowns from production delivery work.

An alert is not a notification

A notification says something happened. An operational alert identifies a business situation, assigns ownership, carries enough context to act, records the response, and becomes workflow state.

Last updated: Sep 1, 2026

Data-Driven Alerts: System Breakdown

Data-driven alerts turn agreed business conditions into assigned, stateful work. The useful part is the loop: detection, queueing, enrichment, routing, response, writeback, audit, and rule tuning.

Last updated: Sep 1, 2026

Deduplication, cooldowns, and expiry in operational alerting

An alerting system without state is a scheduled spam machine. It needs durable identity, cooldowns, expiry, reminders, suppression, and reopening rules to stay useful.

Last updated: Sep 1, 2026

Why alert feedback should be structured first

Free text helps, but structured alert feedback lets the system measure relevance, timing, duplicates, bad data, and rule quality. Human response becomes evidence the rules can learn from.

Last updated: Sep 1, 2026

Safe scaling defaults for Cloud Run + Postgres

Cloud Run autoscaling is not a database strategy. Safe defaults keep the application from scaling itself into a Postgres incident before the team understands the workload.

Last updated: Sep 1, 2026

Why Cloud Run + Postgres needs a connection budget

Cloud Run and Postgres get fragile when connection growth is left implicit. We treat connections as a finite runtime budget, not as plumbing the app can multiply without consequence.

Last updated: Sep 1, 2026

AlloyDB managed connection pooling: when we'd trust it over PgBouncer

AlloyDB managed pooling is attractive because it removes a moving part, but the useful decision is whether the managed path gives enough semantic confidence, observability, and migration predictability to replace PgBouncer.

Last updated: Sep 1, 2026

BI Engine: when it matters, when it's a trap

BI Engine can be useful, but only after you prove it is actually accelerating the workload you care about. Otherwise it turns into configuration thrashing around the wrong problem.

Last updated: Sep 1, 2026

BigQuery cost guardrails that won't break your teams

BigQuery cost control works when guardrails are designed around workload shape and blast radius, not around shaming whoever happened to run the last expensive query.

Last updated: Sep 1, 2026

On-demand vs slots: the SME decision boundary

For SMEs, the question is not which BigQuery pricing model is more sophisticated. The question is when workload classes have become distinct enough to deserve different compute lanes.

Last updated: Sep 1, 2026

Partitioning defaults for event tables that don't lie

Partitioning is not just a performance tweak. It is one of the cheapest ways to control scan blast radius, but only if the partition contract matches how the table is actually queried.

Last updated: Sep 1, 2026

Reservations for workload isolation: the minimal setup

Reservation design for SMEs is usually not an enterprise org chart. It is a small blast-radius pattern that keeps BI, batch, and sandbox work from bullying each other.

Last updated: Sep 1, 2026

Streaming buffer is your hidden constraint

When BigQuery streaming pain shows up as a DML error, the real problem is usually workload shape. Streaming wants append-and-reconcile thinking, not row-by-row sync fantasies.

Last updated: Sep 1, 2026

Why your BI dashboards melt BigQuery

Dashboards do not passively read data. They generate repeated, variable workload, and that behavior is often the real source of BigQuery cost and latency pain.

Last updated: Sep 1, 2026

Constraints without enforcement: still worth it?

Non-enforced constraints are useful when they tell the truth. They act as semantic contracts and optimizer hints, but they become actively dangerous the moment the warehouse is asked to trust a lie.

Last updated: Sep 1, 2026

A dashboard is not an operating system

Dashboards are good at showing state. They are bad at routing action, assigning ownership, and closing operational loops once a metric requires intervention.

Last updated: Sep 1, 2026

What makes a KPI trustworthy enough to automate around

A KPI is not ready to drive action just because it exists on a dashboard. It needs stable meaning, reliable updates, and failure behavior that will not create new chaos.

Last updated: Sep 1, 2026

Cloud Run scaling from zero is a feature until it isn't

Scale to zero is a good default for request-driven services, until startup delay, warm-capacity needs, or instance caps turn it into user-visible reliability behavior instead of a pricing feature.

Last updated: Sep 1, 2026

GKE Autopilot as the escape hatch from Cloud Run

When Cloud Run stops fitting, the next move is usually GKE Autopilot: more Kubernetes-shaped control without immediately taking on the full burden of Standard clusters.

Last updated: Sep 1, 2026

"Internal-only" Cloud Run isn't just a checkbox

Making a Cloud Run service private is not one toggle. It is a decision about ingress, routing, caller path, and IAM working together as one access model.

Last updated: Sep 1, 2026

Why we default to Cloud Run for SME internal platforms

For SME internal platforms, Cloud Run is our default because it covers a large share of useful workload shapes without forcing teams to own cluster operations before they have earned that surface area.

Last updated: Sep 1, 2026

How we prevent stale rows in incremental fact models

Incremental fact models stay trustworthy only when record identity, reprocessing rules, and cleanup boundaries are designed on purpose instead of patched after drift shows up.

Last updated: Sep 1, 2026

Reviewability is a data platform feature

Reviewability is not decoration for data work. It is part of whether a shared platform can change safely once more than one person has to reason about the same models and workflows.

Last updated: Sep 1, 2026

Unique keys are not optional in analytical incrementals

Incremental analytical models need an explicit notion of row identity. Without it, merges drift, updates go missing, and review of correctness turns into guesswork.

Last updated: Sep 1, 2026

What we keep out of orchestration in data platforms

We use orchestration to sequence work, not to become the real home of model semantics, cleanup logic, or hidden branching behavior in the data platform.

Last updated: Sep 1, 2026

Why we model around decision boundaries, not source cleanup

We shape analytical models around the business decision or entity they need to represent, not around the temporary cleanup steps needed to tame source data on the way in.

Last updated: Sep 1, 2026

When repeated Pulumi code earns abstraction and when it doesn't

We don't abstract repeated Pulumi code just because it shows up more than once. We do it when the shared shape is real, the behavior is stable enough to deserve a boundary, and the result is easier to read than the duplication it replaces.

Last updated: Sep 1, 2026

How we treat Terraform state in team environments

Terraform starts feeling fragile in teams when state is treated like a backend setting instead of a shared dependency for safe change.

Last updated: Sep 1, 2026

Why we usually choose Pulumi over Terraform

Pulumi is our default when infrastructure starts behaving like software. Existing Terraform estates can still be the better decision when the migration cost is higher than the operational gain.

Last updated: Sep 1, 2026