People are responding talking about interfaces changing… I’m going to say that interfaces changing is
the whole point.
You see weird stuff when you scale to Google scale. I know it’s cliché to talk about “Google scale” but bear with me for a moment. If you are just running some little service, maybe you have a local filesystem and a SQLite database and that’s enough. If you grow, maybe you have a few machines, network storage, and a PostgreSQL server with a hot replica. If you grow, maybe you have distributed storage and you shard your database across multiple servers. If you keep growing, maybe you end up with Google’s situation, where you have filesystems like Colossus and databases like Spanner.
These systems didn’t appear overnight. Someone at Google made a distributed database, and after iterations and evolution, we got Spanner, which is now a Google cloud product you can use yourself.
There was a lot of interface breakage on the road to getting something like Spanner. Now that Spanner is a Google cloud offering, you can bet your ass that the interface is stable. It just takes a long time to get there, and the internal customers (Google teams building products) don’t want to wait for the stable, final iteration of some infrastructure to arrive. Nobody knows like that looks like until you suffer through the growing pains of building it.