So yesterday I was asked for the top-5 reasons that make Crossbar a prime-candidate for the Dynamic Web-server of tomorrow, although I guess that should really that should read "today". The question was partially inspired by the recent sale of Nginx to F5 (for a very large sum of money) which presented the question; "so what is the next generation of technology worth?!".
The bullet point answer in no particular order;
- Communication over Low latency WAMP (10x more efficient than HTTP)
- Real-time two way client-server communication
- Implicit support for modern reactive frameworks like REACT.js and VUE.js
- Routed connections allow data provisioning and consumption anywhere
- Built-in support for new technologies like Block-chain, TOR and Jupyter
Expanding on this "in full" would require many more bullet points (and time) that would probably make this article exceed it's target word-count, but just to clarify some of the above in more detail, from a web developers perspective, this is what Crossbar as a web-server looks like architecturally.
Now this is not an official diagram, nor is it exhaustive in terms of describing the full feature-set, but from my perspective as a full-stack developer it does cover many of the features that are important to me.
Just to expand on a couple of important points;
- Routed connections - this in isolation may not seem to mean much as a feature, but what it really means is that connections between all components are routed (via one or more message routers) which means that any node (anywhere) can talk to any other node connected to the same network. So for example, you could use this feature to allow your web based application to securely access your mobile phone, another machine's web browser, or maybe your home's electricity meter. The latter functionality is supported in depth by Crossbar's support for IoT (the Internet of Things) and it's ability to act as an IoT router.
- Low latency and efficiency - yes, really, 10 times. Why? This is all down to WAMP and is very easy to demonstrate. If you open up the developer tools on your browser and take a look in the network section, then load a web page, you will see that every asset loaded over HTTP includes a whole bunch of HTTP Headers, which, if you do a little math will give you an average header size of between 500 bytes and 1k bytes. This is regardless of payload, so if you want to transmit a single byte, you still have the HTTP packet overhead, call it 600 bytes. Now take a look at a WAMP based site, somewhere in the network section on the developer tools you will see a "ws" line, this is the WAMP websocket connection between your browser and the server. WAMP framing is less than 60 bytes, so sending a single byte over this connection is under 60 bytes of transfer, so this one tenth of the bandwidth usage, one tenth of the data to move around in memory, one tenth of the CPU required to generate the headers .. Ok, so I'm approximating a lot on some points, but in reality the 10x pretty much holds up.
I could go on as there is so much more available, but hopefully this at least gives a flavour of what is possible. A couple of years ago I authored a single page application and implemented this kind of reactivity by hand .. repeating the process now, with this combination of technologies would take a fraction of the time.
So going back to one of the questions that inspired this article, if Nginx is worth half a billion, I'm not sure my calculator has sufficient digits to handle Crossbar's value.