Real-time computing is not new. This is the third generation of real-time:
• First generation: was done on a single processor, usually for process control in military systems.
• Second generation: within a Local Area Network, usually for a financial trading room.
• Third generation: applied across the whole Web/Internet, what we call the real-time Web.
In each generation a stack has emerged, and secure messaging has been key to that stack. The names change and the scale of the prize and challenges certainly changes, but the basic issue remains the same: delivering messages reliably and quickly. In this post, we trace the steps from the second generation to the third generation to see how the real-time Web might play out.
I worked with the technology's second generation. My company took on the challenge of delivering market prices from multiple sources to hundreds of traders in a trading room, enabling new apps based on real-time calculation. The solution had to scale to maybe 2,000 traders, which is laughably small by the standards of the real-time Web. But you did not want to face a roomful of furious traders if your system was down for three minutes or delayed prices by 15 seconds. The reliability and latency requirements were very stringent.
The company that emerged as leader, Teknekron, coined the term "Information Bus." It did very well by coining the term, because it established Teknekron as a market leader; it followed the "get mindshare first, and then go for market share" strategy. Vivek Ranadive, the visionary founder and CEO, describes in his 1999 book "The Power Of Now" how the term came to him. He was schooled as a hardware engineer and was appalled by how much more chaotic (i.e. error- and delay-prone) software projects were compared to hardware projects. Looking at why, he realized that the concept of a "bus," which is the device that all hardware components connect to, could be applied to software.
Ranadive understood that real-time, event-driven systems would not be limited to financial trading, and he executed brilliantly on that insight. He sold Teknekron to Reuters, the company's main rival in trading systems, but retained the right to use the technology outside of financial markets. That offshoot became TIBCO (The Information Bus Company), which at the time of writing is a publicly traded company valued at $1.6 billion, with annual revenue of over $600 million.
But TIBCO did not leverage its position to dominate the third generation. Another company tried that and blew a lot of money in the attempt.
KnowNow worked through $50 million in funding before throwing in the towel in July 2008. It was going to update the message bus to the Web using RSS. It was still an enterprise play.
It had a strong management team, top-tier VC (Kleiner Perkins), and strong technology. Why did it fail? Three big reasons stand out:
We have probably missed a few, so please tell us about them in the comments. These are very different types of solutions, but they are working towards a similar objective. First, we will list them and then attempt a bit of categorization:
Here are the categories they fall into:
First, we have to address the question of "What does real time mean?"
In each generation, the gurus of the previous generation get sniffy about the definition of real time ("What do you mean one second is real time? We measure in micro-seconds!").
It depends on the usage case and technical possibilities. Real time within a single processor is obviously faster than real time over a LAN, which is faster than real time over HTTP for the whole Web.
Real time, practically speaking, means "orders of magnitude faster than how data has been delivered in the past, and faster than most people think they need today." So, RSS Cloud is faster than RSS, and Twitter search is faster than Google search, and IM is faster than email.
In generation 2, the thinking evolved through three approaches:
Most current Web HTTP-based real-time systems are still in the polling phase (i.e. subscribers poll publishers to see if they have an update), which clearly won't scale. The newer approaches fundamentally enable a publisher to say, "I will tell you, the subscriber, when I have an update, so you don't need to poll me." It's a geek's way of saying "Don't call us. We'll call you."
For a good technical primer on how this works and a discussion of the differences between RSS Cloud and PubSubHubbub (mercifully shortened to PuSH), check out this post.
Twitter. Why? It has the traffic and is open and transparent enough to win confidence. But two big problems remain:
The winner will likely be the platform that hosts the killer app. Most platforms get traction through a killer app. In the second generation of real time, that killer app was market data for financial traders. What will it be in the third generation? We will explore this in a future post.
"Message/Information Bus" worked for generation 2. It took a key concept from generation 1 - the hardware bus - and applied it to a local area network.
That does not work so well for generation 3, the real-time Web. For now, we talk about a Web-wide real-time message bus because there is no better alternative.
The new term may have something to do with "status," because the status update is a central concept in social media. Perhaps something like "StatusFabric" or "StatusNet" or "StatusWeb" will emerge.
Comments
Subscribe to comments for this post OR Subscribe to comments for all ReadWriteWeb posts
This whole "real-time web" hype phrase is a bit misdirected. Sorry for the lengthy rant that follows, but it's hard to say tersely:
Real real-time systems (as it were) have very hard and fast timing constraints, and the technical use of the term "real-time" is associated with highly reliable and robust systems. So for example, if a "real" real-time message is not delivered within narrow timing requirements, the delivery just fails, and there is no point to passing it on later or queuing it.
This is a far cry from say Twitter or other Internet information feeds, where it's OK to drop messages whenever you like. I mean, really, the Fail-whale is practically Twitter's mascot. If a tweet is dropped or gets lost, nothing bad really happens. It also doesn't much matter if you see one a few minutes later than it is sent.
This is pretty much the opposite of real-time.
I know that what the blogosphere means by "real-time" is "rapidly and automatically updating compared to email or web surfing", but that is a far cry from the technical meaning of the term.
So an attempt to show an evolution from system-based real-time to network-based real-time to Internet-based real-time is hamstrung by the fact there are no Internet-based real-time activities. Even MMORPGs can cope with highly variable latency and lag problems, whereas a characteristic of a "real" real-time system is that highly variable latency and lag are just not allowed to begin with.
Edit to last message.
Oops, I lied when I said there are no real-time Internet activities.
Skype and other public Internet VOIP have relatively strong time constraints on content delivery. Maybe not quite real-time, but at least near-real-time. But this kind of media content is not what the blogosphere means when they talk about the real-time web.
Also something to look into: Open source and missing in the list, the Ajax Push Engine at http://www.ape-project.org/ .
It provides with it's push technology another solution to scale (they say for up to 100.000 concurrent clients).
Posted by: digitarald.de
|
September 18, 2009 12:49 PM
Hi Anon, I was saying the same thing here:
In each generation, the gurus of the previous generation get sniffy about the definition of real time ("What do you mean one second is real time? We measure in micro-seconds!").
I will check out Ajax Push Engine, sounds interesting
Yeah, true, but the essence of "real time" is not picoseconds vs. microseconds, it's hard and fast time constraints in a robust and reliable system.
Internet message applications like Twitter or IRC or IM do not have hard constraints in seconds, minutes, or hours, and they're the opposite of robust and reliable.
It might be worth mentioning AMQP as something that is both enterprise-class and open standard (with open source implementations such as RabbitMQ gaining popularity).
On whether or not the "real time web" is really, um, real-time: there are two definitions of real-time, one which means 'delivery within a maximum time frame', normally microseconds - this is known as 'hard' real-time; the second, 'soft' real-time means 'as soon as possible'. Twitter etc. does fit into the second category, since it tries to deliver messages as quickly as is feasible.
However, I think there's some conceptual confusion here. Twitter is a service, XMPP and AMQP are protocols, Tornado is a piece of software. These are three different categories of things and I'm not sure how much sense it makes to compare them. For example, Twitter may at some point begin using XMPP or AMQP. It makes perfect sense to use RabbitMQ + Tornado, or RabbitMQ + XMPP, but Twitter + Tornado doesn't really make sense. There's certainly no sense in saying that one of these will become 'the' web messaging bus to the exclusion of all others.
Since this is the web we're talking about, the most likely answer is that none of the services, protocols or software mentioned will win outright. The web is different from single systems or local networks. There won't be a single messaging bus, just as there isn't a single email server (or single email protocol, or single email server software). Open standards will enable different messaging solutions to inter-operate. Twitter might be one of these solutions, and it might even be the largest (though I have considerable doubts about either of those propositions), but it's certainly not going to be 'the' web messaging bus.
You forgot the Open standard OpenMicroBlogging (OMB) (http://en.wikipedia.org/wiki/OpenMicroBlogging), used by Identi.ca and StatusNet (http://status.net/) to create a "Free, distributed Twitter".
Posted by: forteller.net
|
September 18, 2009 4:07 PM
I'll declare a vested interest in XMPP first, our service Cleartext ESM (Enterprise SOcial Messaging) uses XMPP.
Now I'll also say that it's worth noting that XMPP does enterprise and internet scale and is good at bridging these through an ecosystem of components, I think this is a key benefit.
There's a third issue with Twitter in addition to business model and latency at large scale (which I don't believe you can solve with http polling) and that is shifting technology road map.
For anyone to build complicated enterprise and internet level apps on Twitter this needs to be solved and as the platform is evolving rapidly that's a big ask.
For example parts of our platform rely on the fact that re-tweets and hash tags are in the message. Twitters recent news that RT's will become part of the API is good news for short messages but bad news for solutions proxying Twitter if only because we all have to do more R&D, which equates to delays to market and increased costs.
I'm firmly believe that email succeeded because its an open, standards based, federated platform. XMPP delivers the same for IM and mirco-blogging. I think this is the real time bus you're looking for.
what Rob Knight said.
Another very early 3rd generation Enterprise player is http://colayer.com, with the Personal Portal product (2001)- interesting is, that Colayer uses 100% simple web technologies, is all based on the http protocol and has a pure JavaScript/html client -
Rob, thanks for a great comment and I agree. It is horses for courses and there will be diversity. I am approaching this as as biz guy who knows enough about tech and older generations of real time "to be dangerous". But I do understand the differences you talk about. Which one to use if you are building a real time site? The answer will always be "it depends". I suspect XMPP maybe for those with good tech chops ie it is a low level protocol. The ones who just want something up and running fast and with some traffic and some hype may use Twitter or Facebook as their infrastructure.
So, it might have been better to look at this as an emerging stack, so that people can see where in the stack they want to position.
I will look at AMQP and RabbitMQ. And OMB sounds interesting. As does Ajax Push Engine. Choices, choices. The programmable web is great.
Thanks Bernard for a great post.
I am more confident of what we are doing for generation 3, we have the framework and business model just some technical glitches remaining.
Your insights have helped a lot :) as I am now assured that we are technically also heading in the right direction.
Also check out Mule ESB http://www.mulesource.org/ which is an enterprise service bus AND open source. Very nice API, scles nicely and can easily be used to run on Amazon EC2.
Status.net indeed.