3 ms·
> Googles infrastructure evolves reasonably quickly - so most reasonably large services will need quite a few code changes every year just to keep up with the f
by brigandish 2y ago
> Googles infrastructure evolves reasonably quickly - so most reasonably large services will need quite a few code changes every year just to keep up with the fact that internal database type X is going away and everyone needs to migrate to database Y which might have subtly different semantics requiring bits of your service be rewritten.
I find this an unsatisfying explanation (to be clear, I'm not criticising you but the effect you're describing), if we develop to interfaces as a principle, then underlying implementations shouldn't matter.
- Tyr42 2y agoWe have interfaces. They have one implementation. Then next year we have different interfaces with a different implementation.
- karatinversion 2y agoOnly if the interfaces the underlying implementations provide remain stable
- cbhl 2y agoGoogle is where Titus Winters and Hyrum Wright coined "Hyrum's Law". Loosely paraphrased: given enough users, people start depending on the "implicit interface" rather than the defined one. https://www.hyrumslaw.com/ https://www.hyrumslaw.com/
- klodolph 2y agoPeople 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.