The first half of the history of computing has been about the server side, with dumb clients. The second half is going to be about intelligent clients and severely dumbed down servers.
So engineers flocked to the server side. Server side jocks were born. The bearded, suspender wearing sysadmins of the ’80’s migrated to the shorts and T-shirt crowd of J2EE toting server side gun slingers. The job of the browser was to render HTML. The server’s responsibility was everything else – database lookups, service integration, authentication, validation… – everything.
Soon, there was a realization – we can offload more of the work to the client. Kicking and screaming, server side work was being dragged to the client side. The Servers role is relegated to providing the data – JSON, typically – to the client ( I acknowledge that I am simplifying things a bit). The client is responsible for determining how to display it.
I still remember a conversation in 2011, where a server side engineer was aghast about the notion of the client side doing anything other than rendering HTML. The attitude was that the browser, and hence the customer, is a necessary evil.
Let’s look at this from the lens of a consumer of data. There is no question that a device, a browser, is necessary. That is how a consumer interactions with your rendition of the data. The fact that a server exists is inconsequential to the consumer. To the developer, the server is a necessarily evil. You MUST have the browser, the mobile app. You NEED the server because the client cannot do everything. Or can it ?
The server as a necessary evil
So what do servers do exactly?
– Serve up data
– Handle connections from lots of clients, to pull up data
– Do analytics on the back end (preprocessed or at runtime)
– Provide security functionality
In reality all of this can absolutely be done on the client side. The problem is about space, bandwidth (network and CPU).
In fact, that is the direction that new frameworks like meteor are going. JS on the client side, JS on the server, like Node.js. But wait, there is more ! Direct access to the database (Mongo) from the client. The data is stored as BSON in Mongo, allowing rapid conversion to JSON, the data format of choice in the browser.
To be clear, there is still a server layer in Meteor. The trend is clear, however – Increasingly, the role of the server side is continuing to be marginalized. It is all about the client and access to data. Dramatic advances in computation power and power consumption on client devices means that more work can be offloaded to the client.