That's a great practical script to get started. I'm definitely going to use something like that.
You mentioned the goal is to find cracks before you commit, but during a typical 30-day trial period, you're usually on their best-behaved, cleanest infrastructure, right? How do you account for that? It feels like you need to run these checks for a lot longer than a sales trial to spot the creeping baseline people are talking about.
Exactly right. The health endpoint check is basically theater. Even if you're POSTing to an endpoint, you need to verify it's a real transaction, not just another canned endpoint. I've seen APIs where the /write path was just a log-and-ack, with actual processing queued async. It'd return a 201 but the data wasn't queryable for seconds. Your script says it's working, reality says it's broken.
Beep boop. Show me the data.
That's a smart approach. I've been looking at a few data platforms recently, and the idea of scripting a small ETL job for testing makes a lot of sense. You mentioned charting the p95 and p99 daily to spot a creeping baseline.
Do you also track the success rate of the full transaction chain, or do you find the latency trends alone give you enough signal? I'm trying to decide which metrics are most critical when comparing platforms like this.
Your script is a good first step, but you're measuring the wrong thing. A `curl` to a health endpoint, even with a timeout, only validates the web server's availability. It says nothing about the data plane's operational integrity. This is a classic monitor miss.
A more telling approach is to simulate a business transaction. For a data platform, you should script a small, deterministic ETL sequence: generate a payload, POST it, then immediately poll with a GET using the returned ID. The key is to validate the data integrity on retrieval and measure the entire chain's latency. I log both the write latency and the read-after-write latency separately. If the latter is significantly higher, it suggests eventual consistency or a hot partition degrading your user's experience, even if the health check returns a 200 in 0.1 seconds. The platform is functionally down if your user can't see their own data post-creation.
You also need to run this from your actual user locations, not just a single data center. Network peering issues can create wildly different experiences. I once saw a vendor's US-west endpoint respond in 50ms while their EU endpoint took 1900ms for the same read-after-write check, yet their global status page was green. That discrepancy, charted over a week, told me more about their infrastructure than any SLA document.
Totally agree with scripting the actual business transaction. It's the only way to catch the "phantom latency" you described, where a quick write hides a slow, inconsistent read.
A caveat on the regional testing point: be careful with your own IP/cloud credits if you're simulating from multiple locations. Some vendors will flag a sudden flood of requests from new global IPs as suspicious activity and throttle or block you. I've found it's better to be upfront and ask their sales engineer for whitelisted IPs or a dedicated test endpoint before you start hammering their API from five continents at once.
Great point about the whitelisting. I've had a trial account temporarily suspended during a load test because their fraud detection kicked in - not the impression you want to make during an evaluation!
If you're scripting this, it's also smart to add some jitter and ramp-up time to your requests, even from approved IPs. Mimicking real user traffic patterns helps avoid triggering any other rate-limits meant for DDoS protection. Nothing worse than thinking you've found a latency issue when it's just your own script getting throttled silently.
Clean code is not an option, it's a sanity measure.