Building a Hotel Data Lake on AWS That Agrees With the Night Audit

Hotel source data is mutable in the past, so an append-only pipeline drifts away from the PMS without anyone noticing until month close. A practical guide to room-night grain, bitemporal modeling with Apache Iceberg, PMS ingestion, guest data scope, and file physics at hotel volumes.

Continue ReadingBuilding a Hotel Data Lake on AWS That Agrees With the Night Audit

The Real Cost of CloudWatch: Logs, Metrics, Retention and Cardinality

CloudWatch rarely fails loudly, it accumulates. This is a breakdown of the four independent meters behind the bill: ingestion, storage, Logs Insights scans and custom metric cardinality. Why the same log line gets billed three times, why log groups never expire by default, how a single dimension can multiply your metrics bill without your traffic changing, and how to attribute the spend to specific log groups before you start deleting things.

Continue ReadingThe Real Cost of CloudWatch: Logs, Metrics, Retention and Cardinality

Turning External Documents Into Structured Data With Amazon Textract

Amazon Textract almost never fails loudly. A working guide to turning external PDFs and scans into structured data: picking the right operation per document family, parsing the block graph, routing on per-field confidence, and catching the limits that silently truncate your records.

Continue ReadingTurning External Documents Into Structured Data With Amazon Textract

Cloudflare R2 vs Amazon S3 for Media Offloading: Where the Bill Actually Comes From

Free egress is not free serving. R2 still bills every read, S3 does not bill origin transfer to CloudFront, and the variable that decides both bills is cache hit ratio. An evenhanded comparison of Cloudflare R2 vs Amazon S3 for media offloading, with the four levers that move the number and a decision procedure you can run against your own traffic.

Continue ReadingCloudflare R2 vs Amazon S3 for Media Offloading: Where the Bill Actually Comes From

Amazon Macie PII Detection: The Buckets It Never Opened

A Macie bucket labeled "Not sensitive" often just means Macie never read it. Extensionless objects, unsupported storage classes, unreachable KMS keys and quota truncation all produce silence that looks identical to a clean result. Here's how to measure coverage, fix the four gaps, tune identifiers, and keep the bill honest.

Continue ReadingAmazon Macie PII Detection: The Buckets It Never Opened