1,959 karma · joined December 5, 2012
Strict over Duck typing. Funct over Imp coding.
Async over Blocking. KV over ACID.
Keeps BigData humming.
To solve a new problem space, Carmack would buy a bunch of college text books, then check into a rando motel for a few weeks, and just dissect all the topics and books, until he'd come up with the design of, for instances a new ray tracing engine.
Crazy smart, focuses, and talended.
[1] https://blog.cloudflare.com/cloudflare-investigation-of-the-...
We get alerts when folks are sharing tutorial code with fake keys like DEADBEEF in them. It's nice to know DPL works, if you use it.
Let's say us-central1 is down for some reason (has happened a number of times), but your customer workloads need to keep running uninterrupted, so you fail over to us-west2. Where should your customer files, that need to be read/written for the customer workloads, be written then? If you kept them all in the region that's on the fritz, you've got upset customers, broken SLAs, etc.
And GCF v2 is running on KNative on Cloud Run... turtles all the way down.
Who cares about DR, and having 3x copies of your data 100mi apart from each other? Small startups, or Enterprises? Enterprises can just push those costs to their DR budget.
- Using multi-regional storage (used to be a 30% premium, now much more)
- Making lots of object writes (Class A) vs lots of reads (Class B)
So, if you can:
- Move to regional or dual-region (NAM4) storage
- Snowball your writes into bigger overall objects, <3 immutability
- Keep your data in the same region as access
Then you can reduce the impact here.
They are also closing the Coldline/Nearline loophole, where you could use a bucket lifecycle policy to keep your objects in Standard (cheap access) for a few weeks/months, and then move them to a cheap long term storage tier (Nearline/Coldline), because that move is another Class operation, that just got a lot more expensive. This is inline with two years ago when they quietly moved lifecycle operation pricing from the origin service tier (e.g. cheap Standard storage) to the destination tier (e.g. much more expensive Coldline), cutting down on the savings of tier jockeying.
- Cloud Logging - stores logs
- Google Compute Engine - VMs, compute
- Cloud Monitoring - stores metrics, monitors stuff
- Cloud Storage - stores stuff
- Google Kubernetes Engine - runs Kubernetes clusters
- BigQuery - runs multi-billion row queries with ease
- Cloud Functions - FaaS run time
Now sure, Cloud Spanner is a DB, without DB in the name, so you'll have to read the docs for a few seconds, but let's compare that to Cognito (brains?), X-ray (medical imaging?), Kinesis (something to do with mitosis?).
This is the real impactful change. This is for ALL STORAGE CLASSES, not just Coldline. As someone who manages billions of objects in GCP, I know very well that each of those object write is a Class A operation, so 2x in price.
Also keep in mind that anyone storing objects durably (DR, anyone?), e.g. your customer data, is using multi-region, so this is a notable cost impact.
Note that there is a curious inflection point where, the Class A/B operations on an object cost _more_ than the (bytes) storage cost, depending how long you retain the data. That's where this is very impactful.
Annual multi-regional Standard _storage_ cost for a 19MiB object
e.g. 0.026 $/(GiBmo) 12 mo/yr * 19 MiB/yr = 5.95E-06 $/yr/obj
Annual multi-regional Standard storage cost for an object that you 1x write (A), and 2x read (B).
e.g. 0.05/1e4 $/A req + 2 * 0.004/1e4 $/ B req = 5.80E-06 $/yr/object
Here we see that the old annual "storage" carrying cost for this 19MiB object was less than the "request" cost. Now double the cost of the operations and you should consider storing fewer, bigger objects.
Using, highly available, deterministic artifacts, that can be rapidly deployed or reverted from production is what we do.
You don't need to mess with prefixing all your files. They auto level the cluster for you [1].
[1] https://cloud.google.com/storage/docs/request-rate#redistrib...
You don't peer into a bucket with a billion objects and ask for a complete listing, or accounting of bytes. There are tools and APIs for that.
That's what I do with my thousands of buckets and billions of files (dashboards).
Has been working like a charm for years now. Feel fancy, just BT to connect the Peloton app to the bike if you want to attend an actual class.
Note, that's a nice bike, you can get no name bikes from Amazon for $150.
Oddly, various VC tools I've used with dial in properly map the caller unique pin code to the calling user.
So many PRs people ask, why should we add protective measure X, when we already have protective measure Y? Defense in depth, my friends.
Checkout this list of new JS/Node.js features [0] as an example.
Will a world with the following be an improvement? [1]
• ??=
• ||=
• &&=
And don't forget the strife around the Python "walrus operator" := [2]
Checkout this list of new JS/Node.js features [0] as an example.
Will a world with the following be an improvement? [1]
- ??=
- ||=
- &&=
And don't forget the strife around the Python "walrus operator" := [2]
Relish your steady state.