The Multiple Meanings of ‘Real-Time’
Every digital transformation initiative must deal with the ever-increasing pace of change – in the marketplace, in the technology environment, and in the world at large. Clearly, as customer expectations accelerate, technology must keep up. Squeezing every last millisecond of performance leads to the demand for real-time – technology with no delays whatsoever, moving at the speed of thought itself.
If we examine this real-time requirement more closely, however, important nuances emerge. First, real-time never actually means instantaneous, as it always takes a certain amount of time for bits to find their way to their destination. But even more important for any digital professional to understand, the concept of real-time has several subtly different meanings – and understanding the differences is critical for making effective technology decisions.
What is Real-Time, Anyway?
From the perspective of the digital effort, the most important definition of real-time is low latency. Latency refers to how long a website or app takes to respond to a click or other user interaction (either on a computer or a mobile device), and thus the faster, the better. Consumers are notoriously fickle, after all – add a few milliseconds of delay and they’ll defect in droves.
Real-time may also refer to up-to-date information. In a breaking news situation, for example, people want the very latest information. People first hear about earthquakes in real-time on Twitter – news websites are usually at least ten minutes behind. Real-time airline or theater seat availability falls under this definition as well.
A third sense of real-time refers to human interactions. If you and your gamer buddies are going after zombies in a multiplayer game, for instance, you want the action to be real-time. Online voice conversations and some fast-paced auction sites also require this type of real-time.
Finally, we may be referring to real-time processing of information. Stock trading and online ad placement are two of the most familiar examples. Yes, latency must be as low as possible, but the bottleneck isn’t just serving up information to the user – it’s all the number crunching behind the scenes that must also take place at a blisteringly fast pace.
Real-Time and the Database
Sometimes software behavior can be completely stateless: event happens, do some stuff, give some kind of result, and never keep track of anything or wait around for somebody else to finish something. Such processing can be blisteringly fast as a result.
However, when you have to keep track of something is when problems arise: where do you do the tracking? Do you have to keep track of multiple things at once when they might interact somehow? How permanent does the tracking have to be? And most importantly: won’t all this tracking slow everything down?
We could simply keep track of everything in the database. We get unlimited persistence, but traditional databases are relatively slow and scaling them can be difficult. So let’s call upon some piece of infrastructure in our middle tier, like an application server or an ESB. The database breathes a sigh of relief, but now we have a centralized state management approach that doesn’t scale well, especially in the cloud.
Enter caching. The idea of a cache is to temporarily store certain state information, thus lightening the load on the persistence tier. Caching can be wicked fast, but real-time? Well, it depends.
The problem here, of course, is the problem caches always have: if all your data are always changing or every interaction always requires different data, caches are worse than useless, since caching something only makes sense if somebody is going to use it a few times before you need to refresh it.
At this point there’s only one more place to go: back to the database. Let’s tease out a single architectural trend on the database that relates directly to real-time: immutability.
A database is immutable if it only supports writes that append data but no updates or deletes. Instead, to handle these pesky changes, additional records are added that indicate a previous record has changed.
Immutability is essential for solving some knotty problems with concurrency – a complex problem for distributed computing since the client/server days and still a hassle in today’s cloud-enabled world.
As anyone who has used GitHub or a similar immutable data store can attest, immutability is the key to scaling a database that supports a large number of users, since all changes are handled as new data. Furthermore, the data store maintains a complete audit trail of everything that has ever happened.
GitHub additionally depends upon caching, because it must assemble the current version of each stored file by adding together all the changes, or diffs, to that file. Temporary storage of each current version thus lightens the load on the underlying data store.
In other situations where the underlying data are always in flux, immutability still helps to address the real-time need. Reads can be extraordinarily fast compared to traditional databases, because the database can look to an index to identify the latest version of a record.
Real-Time Digital Transformation Takeaways
While there is no single definition of real-time, all the various senses of the term are critically important for any digital transformation effort. Furthermore, the definitions are all interdependent, and a problem in one area could easily impact other areas.
The lesson for digital marketers in particular is that while customer-facing digital technologies are essential, the hard work of digital transformation takes place behind the scenes. Customers only notice such real-time when it’s missing or broken, and that’s when they abandon your digital presence for your competitor’s.
Furthermore, real-time is a multifaceted and complex challenge that different vendors address in different ways. You shouldn’t simply ask a vendor for real-time capabilities without first understanding your specific requirements, and second, recognizing what that vendor means by real-time.
The good news, however, is that more real-time products and solutions are on the market than ever before. Select the right ones for your needs and your digital transformation effort will move along in real-time.
Jason Bloomberg is the leading industry analyst and expert on achieving digital transformation by architecting business agility in the enterprise. He writes for Forbes, Wired, DevX, and his biweekly newsletter, the Cortex. As president of Intellyx, he advises business executives on their digital transformation initiatives, trains architecture teams on Agile Architecture, and helps technology vendors and service providers communicate their agility stories. His latest book is The Agile Architecture Revolution (Wiley, 2013).