“Our first thought? Why don’t we just build it – how hard can it be? It turns out – hard! While we knew we could never build an enterprise level infrastructure, we thought we could build enough realtime functionality to keep the product up and running. But even doing the cost runs to determine what this would cost to host and run on AWS made it clear building our own infrastructure didn’t make sense. We weren’t going to save money, not to mention the fact we’d then carry responsibility for running these servers.”
—David Pennar, VP of Engineering, MobyMax.
The demand for realtime capabilities in the EdTech space is growing fast. In our previous blog post, we discussed the most impactful use cases underpinning EdTech. Delivering features to address such use cases properly and at scale to people in immediate need of them requires serious engineering and infrastructure discussions. Realtime concepts are relatively straightforward to understand, but building the underlying systems is fraught with significant challenges, both practical and theoretical.
You have to consider whether your Engineering and DevOps teams have the bandwidth to take on a significant new responsibility that will force them to focus on building realtime communication capabilities from scratch, rather than applying realtime communication as a means of innovation to your EdTech platform.
We will address infrastructure challenges in a subsequent blog post. In this one, we will discuss the main realtime engineering challenges for EdTech applications.
Engineering challenges in realtime
Engineering challenges to providing realtime communication can be loosely organized into six considerations:
- Device and user presence
- Connection state recovery
- Guaranteed delivery and reliable message ordering
- Push notifications
- Third-party integrations
- Ongoing innovation
Device and user presence
Central to many EdTech applications is the ability to know who’s present in a virtual learning space. For example, imagine the first half of a lesson is taught by Teacher A and the second by Teacher B. A’s students answer questions and send messages to their teacher, these need to be routed to Teacher A while they’re leading the lesson, and then seamlessly to Teacher B at the appropriate time.
It’s critical your applications direct messages to the correct person, both from a user experience perspective (ensuring students’ questions aren’t missed), and from a cost and performance perspective (minimizing unnecessary messages being sent across your networks).
To do this, you need what’s called “presence”, whereby users can see who else is online, in much the same way you can with instant messaging applications such as WhatsApp. Presence also enables the application to route messages accordingly, based on who is online and in the virtual learning space at any given time.
Closely linked to presence is a user’s state. Knowing state allows you to create essential functionality like whether someone is typing a message into a chat window, or the realtime location of a device. Such features are not only familiar to a lot of users, but often regarded as must-haves in modern EdTech applications.
Notifying users as soon as key events occur is another essential feature. This could be a popup on the teacher’s dashboard the moment a student submits their exam paper, or a timely notification to a student that the question they sent their teacher has been answered.
This information is typically delivered using push notifications, and developers need to consider how to integrate these into their applications.
Handling temporary connectivity failure
How does your application handle situations where someone’s connection briefly drops, perhaps as their phone switches from cellular to wireless, or if they close the app and then relaunch it? When they reopen the app and/or reconnect, they need to pick up with minimal friction where they left off before they were disconnected or closed the app. Any messages they may have missed must be delivered to them in the correct order. The whole experience needs to be completely seamless to the user.
Guaranteed delivery and reliable message ordering
Any realtime collaboration tool, such as a chat system, must ensure all sent messages arrive at their intended destinations. Equally important, these must arrive in the correct order – or they may not make sense.
It’s one thing to ensure this with the sender and recipient both on the same local area network, but it’s a different problem entirely when users are remotely connecting to the service over an unreliable network such as the internet. How do you guarantee both message delivery and correct ordering?
Realtime communication rarely lives in isolation. Realtime systems must connect to other systems and services for various reasons:
- To store chat logs in a protected network for compliance purposes
- To trigger tasks or functions that run in a different part of the application
- To feed into analytics tools
To do this, you’ll need to build and maintain a scalable pipeline that feeds the realtime message data into all other required systems – again ensuring the data that arrives is both complete and correctly ordered. Every integration you build will have its own intricacies, and will need to be monitored, maintained, and scaled over time. In reality, this can consume significant amounts of time and money, for required functionality that typically isn’t core to your user-facing EdTech offering.
The ability to innovate is central to the continued success of any tech service. As an EdTech provider, you want your brightest minds working on your services roadmap of features and capabilities: the things that will ultimately generate revenue. However, as with any enterprise grade IT application, you need a roadmap for its foundations as well. This includes your realtime capabilities.
The dilemma is this: realtime capability is a critical enabler of your overall proposition, but time spent developing it doesn’t necessarily result in the aforementioned eye-catching product features. It can therefore drop down the priority list. However, it’s incredibly important to keep evolving the foundations of your EdTech solution, to ensure it continues to deliver the necessary performance, availability, and security.
For many EdTech vendors with a team of engineers, building realtime communication in-house seems the obvious choice. The unforeseen roadblock is that building realtime architecture requires deep knowledge and expertise in theoretical computer science problems and distributed systems engineering, coupled with intense and lengthy development timelines. And that’s before considering the challenges of predictability, scalability, and availability in the region of the Five Nines (99.999%).
Before going down the build route it’s essential to really take time to understand the breadth and depth of what architecting realtime engineering and infrastructure entails:
- Is it worth spending time and resources on the implementation of realtime?
- Or is it better instead to let in-house talent focus on unlocking innovation by leveraging a solved problem?
Here at Ably, we’ve been solving the hard problems of realtime solution delivery for years. We are an enterprise-ready realtime communication platform, and we have figured out how to efficiently design, quickly ship, and seamlessly scale critical realtime functionality delivered directly to end-users. Our realtime quiz framework for EdTech developers is a great example of that.
If you’d like to discuss your realtime communication needs and how we can help you simplify your engineering, minimize your overheads, and deliver a better user experience please get in touch.
Note: In the next (upcoming) blog post, we’ll explore the 4 essential infrastructure considerations for realtime EdTech applications.
You can also read our previous blog post: The 4 most impactful realtime use cases in EdTech