Irradiated with cheeky programmer fervor!

De-Emphasizing the Server (Preface)

Only as a little introduction and to prove I still pay attention to things, I’ll offer a breif commentary on a fascinating area of web engineering.

Being a little guy in this business, I have only the level of resources that entitles me to complain that AWS is too expensive (Read: web hosting budget is $30 monthly.) The engineer’s mindset, however, is free (as in beer, it takes a long time to learn). You know what else is free? Your visitor’s browsers.

Even in the case of this little website, my readers point browsers over here that are backed with enough CPU cores to do the work of a large Amazon EC2 instance. For higher traffic sites, there might be thousands of cores and terabytes of memory in play.

Of course, I’d never hoover up all of a browser’s resources. Technical constraints notwithstanding, it’s a shitty thing to do. But what if I could just take an extra sliver of CPU and RAM from each of my users and combine it into something powerful?

Enter Web Workers, WebRTC, and their bretheren. Asynchronous tasks and peer-to-peer connectivity in the browser. The implications here are huge. It gives me spine shivers.

I can spin off little Web Workers to, say, create a keyword index for a new status update or get link previews without my server fetching them first, or even help distribute static assets. Hell, I could have browsers run a site themselves just by seeding a JavaScript file and some images via a CDN. Just imagine what a completely decentralized infrastructure would look like. Web browsers do the work, the backend just keeps shit straightened up.

Is your mind not as blown as mine is?

I’ll be attending a meetup to discuss these very topics. I’m excited enough to write about it beforehand. The ideas themselves warrant some deep thought and admiration, so I’ll be researching these topics heavily. If this technology can be packaged up in an accesible way, then exceeding bandwidth may be a thing of the past. Perhaps I’ll never have to toss thousands of dollars to a hosting company or black-out my apps if a server gets gimped. It’s a topic I intend to research, test, and report on further. I’d love to do an in-depth write up of potential implementations and features achievable with such new capabilities.

To think that my users can one day share the computational love and in the process shave down my hosting bill… That kind of thing keeps me up at night.