As a web applications programmer, I’ve been tied to server side technology for a very long time. The benefits of deploying pre-compiled code on a server are:
1) It runs fast.
2) It is easy to secure a server.
3) It’s easy to keep track of with logging, etc.
It’s a very “HERE & MINE (period).” way of doing things. As if the server side application is telling us, “You can not run this code, I do not trust you, only I can run this!” And for a long time, I agreed with this approach.
Slowly but surely though, CSOM (Client Side Object Model) libraries like Angular and Bootstrap are winning me over, liberating both the development and application lifecycles.
The biggest realization I had is related to what any server dev will tell you that their number one concerns when allocating resources are hardware related. How much disk space will be needed? How much RAM and processer power?
Well, we’re not going to get around disk space, but since that’s moving to the cloud, what about processor power and RAM? In 2014 we can begin to estimate that the CSOM will be running on a processor with at least 2 gHz of processing power. That’s a lot! Most CPUs are idling during web browser time and we can easily make use of it. I bought a medium-market laptop recently that came with 8 gigs of RAM! That’s phenomenal.
That being said, our business logic web application software will begin to actually run faster in CSOM than on privatized server clusters! The primary factor there is, of course, related to internet download speeds, which are, like processors, spending most of their time being blazingly fast or in an idle or low capacity state.
Here are some interesting points, some of them borrowed from this article by John Munsch (http://johnmunsch.com/tag/angularjs/).
1) In a Web Application, you are going to have to go back and forth between the server eventually. In the old days, we assumed the worst for CSOM, that they would have little or no capability to store data (M), process it (C) or make it look nice (V). The round-trip of sending data back and forth from the server to the client (and verifying the packets, oh, and verifying that we verified the packets, and of course prioritizing our packets in a router queue, and…)
Now a days we can send the data to the CSOM application, and let the user do what they want with it. At that point of the “data transcation”, the end-users computer is probably better suited at running the MVC application in itself, rather than relying on the internet and bouncing packets back and forth to the server.
This will free the server to do what it does best, safely serving data, and allow for the tailored user experience of an MVC Web Application to occur using the client’s resources.
What happens when you have to move your app, say from a server to the cloud? If most of your app is CSOM, this becomes a non-issue. That’s huge!
You can use a simple tool like WebStorm and Google chrome to do almost the entire development and debug process of your application’s development lifecycle. And deploying it is as easy as copying files.
3) Flexibility. How much time have we spent as Developer’s making interfaces to code injenction libraries just so that we can change our code without having to go through the process of shutting down the application and suffering the loss of downtime? The, “What if this … changes?” question is a killer to web application developments that rely on so many different factors. We have to jump through eleven dozen different hoops just because of Justin. You know, Just-in-case, not Justin Beiber.
With CSOM if you want to release a new version, you release a new version! No injection or interfaces to scalable libraries needed. Plain and simple.
4) We can do more, working together. Since most of the software packages are open source by nature, such as Twitter’s Bootstrap or Google’s Angular, they are opened up to the wide world of web developers. Add-ons, forks and customizations are becoming the way to go as the true spirit of the internet, sharing information, flourishes.
This is exciting.
Instead of “My computer is this big: > <.” we now are using the internet as a sum total, meaning all of the computers together. Our clunky siloed computer with limited, pre-allocated resources is evaporating into a watery, cloud-like atmosphere!