How developers are creating Realtime Apps

Can you tell me what a realtime app is, for God sake ?

Well, when asked "What the Heck is a Realtime App", Pubnub says:

At the core, realtime technology is the sending (publishing) and receiving (subscribing) of data "as it happens" in real life. Information or data is sent and presented in milliseconds.

Well, I will say quite the same thing.

Can you give me a couple of examples?

Yes, definitely! You start your day with a fitness tracker app, answer chats in whatsapp, then call the taxi to your office using Uber app, you order lunch and track the delivery in a food delivery app, in the evening - you turn on the backyard garden pump using an app, you come back home and talk with your long distance friend on skype and before going to bed you say good night to your mom on messanger. Did you notice that all apps I just talked about are Realtime Apps.

What's so special about that?

These specific genre of communication (Realtime Commnication) happens through a separate channel instead of usual Frontend -> API -> database. In Realtime communication, usually server pushes the data to the client without waiting for the client to request.

While designing the application stack, you should consider designing realtime communications separately because these communications are asynchronous in nature and can cause nightmare to developers while debugging. These parts of your technology also creates significant maintenance hazards in the long run if not designed properly.

Tell me how developers handle the complexities of building realtime communications?

We were also quite unsure about that. So what we did, we conducted a survey among a few top developers and freelancers in India. And here is what we found out -

Screen-Shot-2017-09-24-at-9.58.11-AM-1
The survey audience is mostly belong to the developer community who works for an organization, nearly 60% of them.

chart--2-
Almost 50% of them have made Live Dashboard with realtime data and more than 40% have made chat engines (Great!). The most preferred platform where they built their realtime app is found to be "Web & Vanilla Js" and the runner up is "Android". "React Native" comes third in the list.

chart--4-
Socket.io is the clear winner when it comes to a realtime library to use. Near 80% of the developers used socket.io for their projects. Interestingly, more than 60% of them used HTTP based custom pull to support realtime features which is very ineffective in terms of performance and battery life of the device.
Did you notice that nobody have used pubnub ever which is quite surprising. It clearly indicates that the reach of pubnub is really low among the indian developers.

Does the survey audience say anything about what are the features that they think to have in realtime frameworks?

Yes, definitely. Have a look at the chart below.

chart--5-

Most of them (>75%) think that analytics and dashboard is a musthave feature in the framework. About 70% also think that roaster and presence api can add significant value to the framework.

To make the final verdict, they were asked to rate 1 to 5 on how satisfied they are with the current technology they use for building realtime apps.

Most of them (68%) are not very happy and at the same time not pissed off (rated 3). 23% developers are quite happy and they rated 4. About 15% said that they are mostly unhappy (rated 2) and hopefully expect a smarter solution.

Modern apps are becoming increasingly realtime in nature. Almost every app has a few realtime functionality embedded in that. To cater the need of time, there are mutiple solutions which help developers build realtime apps. But, the survey clearly indicates that just a communication protocol is not enough to address the inherent challenge to develop and maintain a realtime app. It is something more that the developers want. And if there is demand, supplies must emerge.