title: grid(1) subtitle: an eventually consistent distributed service manager date: 2018-07-14T23:00:00-07:00 featured: true tags:
eventually consistent sounds bad, and google has spent an awful lot of time talking about how terribly important strong consistency is and betting their money on very nice machines, which you can rent at a very affordable rate. honestly, as far as cloud architecture goes that's probably what you want. big fleets of machines doing computations over mind-bending quantities of data. strong consistency might be a good thing.
so obviously we all need atomic clocks in our computers so we can...
hold on. breathe. think about this for a second. who owns that many computers? or generates a quantity of data that requires hundreds of machines to store and process it?
think about the activities you use your computer for. you fetch data, you do something with it, you send data (or links to data) to people (including yourself). sometimes you do real-time interactions. in cloud world, you have millions of people doing this ''at the same time'' all over the world, but if you break down the ''interactions'' people aren't doing particularly complicated things. the complexity comes out of trying to make it scale.
we do want networked applications, that's why the web is such a big thing these days. we don't have to give that up to have autonomy, we just have to think about how we do these things in a different way. this is kind of a big problem, so lets break it down. a typical web application has a few major parts:
- client application (ui)
- server application (logic)
- database (state)
- message bus (async tasks, events)
grid is a software project designed to put you at the center of a powerful
mesh of computers. modern cloud services provide us with a lot of utility, but
they are often designed around a lot of false assumptions and force you to trust
people and systems you can't audit.
grid enables you to schedule jobs on any device that you have paired to your
user account. in most cases, these jobs will be interactive process that run on
the device you are holding, but for many applications running jobs in the
background (possibly on another, more powerful device) might be expected