Porting a Telehealth Application From Twilio Video

Twilio recently announced that the Twilio Video WebRTC service will be turned off in December 2024. 

On January 22 we hosted a live webinar for Twilio Video customers who are beginning the process of porting their products over to other video platforms. 

Daily is a seamless migration option for Twilio Video customers. We provide all of the features of Twilio Video plus many more, have a long history of operating our industry’s most innovative WebRTC developer platform, and offer dedicated engineering resources to customers porting from Twilio. For more information about Daily, please visit our Twilio Migration Resources hub.

Below, we’ve embedded a video of the webinar, including the Q&A section. Underneath the video is a transcript.

Introduction to Twilio Video Migration webinar

Hi. Welcome to this conversation about porting telehealth applications from Twilio Video to other video platforms.

If you're here, it's likely you were impacted by the announcement in December that Twilio is leaving the video developer tools space.

Twilio is giving customers a year to transition.

We know how disruptive it is to have to change platforms. My hope is that our notes today will make things a little bit easier. At Daily, we've seen what approaches work well when porting between video platforms, and what approaches create risks. 

Today, we'll:

  • cover high-level best practices
  • talk through the major choices you'll need to make, and
  • try to give you a sense of timelines and resource requirements

If your engineering team knows your product codebase well and understands your Twilio Video implementation, you will be able to transition to a new platform without too much difficulty. If you need engineering support, the new platform vendor you are moving to should be able to help you, and there are excellent independent dev shops that specialize in video implementation.

Twilio to Daily migration overview

So, let's talk about the big tasks involved in porting your code. Here's how we break down a project:

Major components of a porting project 

  1. choosing a new platform 
  2. planning and allocating resources
  3. writing the code and testing it
  4. moving traffic

Choosing a platform

A green image with the words "Choosing a video platform"

Build or buy

Twilio Video is a fully managed service. What our industry calls a PaaS, or Platform-as-a-Service.

When you migrate off of Twilio Video, you could migrate to another managed platform, or you could stand up, and manage, your own video infrastructure.

This is a classic software engineering build vs buy decision. I'm not going to spend too much time on this today, because the majority of the Twilio Video customers that we've talked to plan to stay in the managed platform world. 

Building or buying a real-time video platform

But we do often get asked about build vs buy in our space, so I'll cover this briefly, and at a high live. I really like talking about video tech, so if you want to dive deeper on this topic, come find me on Twitter or LinkedIn.

Managing your own video infrastructure

Here are the three most important things to consider when thinking through a build vs buy decision. We've found this is sometimes new information for engineering teams thinking about standing up their own video infrastructure.

First, managed services operate at significant economies of scale, so it's very hard to save money compared to paying someone else to run your video infrastructure. The rough rule of thumb is that you'll need to be paying a video platform about $3m/year before you can approach the break-even cost of paying for your own infrastructure directly.

Second, there are no off-the-shelf devops, autoscaling, observability, or multi-region components available for real-time video infrastructure. There are good open source WebRTC media servers, but they are building blocks for operating in production at scale, not complete solutions for operating in production at scale. It's easy to deploy an open source WebRTC server for testing. But for production, you'll need to build out quite a lot of custom devops tooling.

Third, real-time video infrastructure is a specific kind of high throughput content delivery network. Putting media servers in every geographic region where you have users turns out to be critical to making sure video calls work well on every kind of real-world network connection. You really want servers close to the edge of the network in the terms that our industry uses.

All of the major video platforms — Vonage, Chime, Zoom, Agora, Daily — have servers in two dozen or more data centers. And, today, the platforms that benchmark the best for video quality — Zoom, Agora, and Daily — have built out sophisticated "mesh network" infrastructure that routes video and audio packets from the edge of the network across fast internal backbones.

For all these reasons, I think a managed service is the right choice in almost all cases. I'm biased, of course, because Daily is a managed service. But I've walked through the numbers and the technical requirements here with dozens of customers of different shapes and sizes. 

The big five: key factors in platform evaluation

So let's assume today that you are migrating from Twilio Video to another managed platform. 

How do you choose which one?

Evaluating a real-time video platform

Our recommended approach is to divide your platform evaluation into five topics.

  • Reliability
  • Quality
  • Features and requirements
  • Compliance
  • Support

Reliability

Real-time video reliability

There are two aspects of reliability: first, overall service uptime. Second, whether video sessions reliably connect and remain connected for any user, anywhere in the world, on any network.

The importance of uptime is obvious.

I won't say much more about this, other than that every vendor should have a status page and good due diligence here is to look back through all listed production incidents on the status page to get a sense of how your vendor approaches running infrastructure at scale.

Every large-scale production system has incidents. The goal for those of us who run these systems is to minimize both overall issues and the impact of any one issue. Everything should be -— as much as possible — redundant, heavily monitored, and over-provisioned.

In general, I think that system reliability is not a distinguishing factor for the major providers in our space. Those of us who have been running real-time video systems at scale for 6, 8, 10 years all have a track record of reliability and uptime.

If you're considering a newer vendor, though, it's definitely worth doing extra diligence about uptime.

The other aspect of reliability is a distinguishing factor between vendors. This is the connection success rate – will your users video sessions connect and stay connected, on any given day, for all of your users?

Real-time video session reliability

The big things to ask about here are:

  • Does a vendor have infrastructure in every region where you have users? If not, many of those users will have to route via long-haul, public internet routes, and some of those calls will fail.
  • Does a vendor heavily test and benchmark on a wide variety of real-world networks? 
  • Does a vendor heavily test and optimize on a wide variety of real-world devices, including older devices and mobile Safari? Device support is, surprisingly, not something that every video vendor prioritizes.

Quality

That last set of questions is a good transition to talking about video and audio quality.

Video and audio quality are about adapting to a wide range of real-world network conditions.

Real-time video quality

Delivering the best possible video and audio quality to every user, on every device, everywhere in the world is the second most important job your video vendor should be doing, second only to uptime.

Video and audio quality are critical because bad video experiences lead directly to user churn.

Bad video experiences cause users to churn

It turns out that platforms have made different amounts of investment in network adaptation, CPU adaptation, and infrastructure over the past five years. Video quality is an area where platform performance does differ.

Video and audio quality is different on different WebRTC video platforms

It's worth understanding what each platform's focus and level of investment in infrastructure and SDK optimizations is. AWS Chime, for example, focuses on the customer support call center use case, and is not very good at adaptive video delivery to the full range of real-world networks and devices. Vonage has not invested in building out infrastructure at the edge of the cloud. Zoom and Agora both focus on native applications and don't fully support web browsers. 

Telehealth video and audio quality: real-world conditions

It turns out that video and audio quality for telehealth use cases are challenging in three ways.

Telehealth device prominence

Many patients will be on cellular data networks. Many patients will be using mobile devices as opposed to laptop computers. And because installing software introduces significant friction for most users, many telehealth applications are built to run inside web browsers.

A platform vendor should be able to show you benchmarks that tell you how their platform performs on, for example, a poor cellular data or wifi network.

The goal should be to send good quality video whenever possible, and to gracefully degrade the video quality whenever there are network issues, while maintaining audio quality.

Benchmarking video quality

Here's a benchmark that shows video quality adapting to constrained network conditions. We do a lot of benchmarking at Daily. We benchmark our own performance intensively. And we benchmark against our competitors. Our benchmarks are transparent and replicable – we make our benchmarking code available because we think benchmarking is so important.

Daily benchmark reports

If you want to do your own independent testing, you can use our benchmarking code. Or you can work with an independent testing partner like testRTC or TestDevLab.

We'll come back to the topic of testing a little bit later.

Now let's talk about a close cousin to testing: observability.

Part of delivering a reliable, best-possible-quality experience to users on any network, any device, anywhere in the world is having actionable metrics and monitoring for every session.

Observability and metrics

Observability and metrics to monitor WebRTC video quality

Good metrics and monitoring tools are important for two reasons. First, if you're not measuring quality and reliability, it's very hard to make improvements.

Second, you will want to provide customer support to users on an individual basis. So your support team needs tools that allow them to help users debug video issues.

A video platform should give developers and product teams at least three things:

  • easy-to-use dashboards
  • REST API access to all metrics and SDK action logs
  • enterprise tooling integrations
Important video metrics capabilities

Here's how we check these three boxes at Daily.

Everyone on your team can use our standard dashboard, which gives you point-and-click access to logs and basic metrics from every session.

Daily video call metrics

For customers with larger support and data science teams, our enterprise plans come with access to more complex dashboards built in the industry standard Looker BI tool. These Looker dashboards have more views, more aggregates, and are customizable for your team.

Daily real-time video call metrics dashboard

And all of the data that feeds our dashboards is available via our REST APIs.

Daily's REST API logs endpoint documentation

Features and requirements

Features are important! So let's talk about how to do a feature comparison between vendors.

WebRTC video platform features

Every vendor will give you a feature checklist. If you're porting an existing application from Twilio Video, our recommendation is to – at least initially – narrow the focus to what you're using today.

I have to note that this advice cuts against one of our strengths at Daily — we have the biggest feature set of any video platform!

But here's why we recommend focusing first on the features you use today, rather than on your roadmap. We've seen over and over that customers will have an ambitious roadmap and will want to see every feature on that roadmap supported by a platform. Which is totally understandable.

However, roadmaps and requirements change over time. And a good platform, a platform that is under active development, will add new features every quarter.

So I think it makes sense to approach a features comparison exercise in two steps.

Video and audio platform feature evaluation

First, prioritize evaluating how difficult your port from Twilio Video will be. Are there any features missing that will require writing workarounds or changing your product? Because workarounds and product changes introduce real costs and risks.

Second, look at a vendor's history of adding new features. Talk to that vendor. Tell them your roadmap and try to get a sense of whether your roadmap aligns with the platform's roadmaps and commercial goals.

The reality is that Twilio Video's feature set is not very large. It's unlikely that you will have trouble porting a Twilio Video application to another established platform because of any missing features.

Zoom Web SDK: missing features

Ironically, the only established vendor that this is not true of is Zoom. Twilio recommended Zoom as a new home for Twilio's video customers. But Zoom's developer tools are much less mature than their consumer product, and in particular, Zoom's web browser SDK is missing many features.

Zoom Web SDK feature gaps with Twilio Video

Everyone in the video space respects Zoom's core technology and infrastructure. But almost everyone was surprised by the partnership with Zoom. Twilio has a history of being a developer-focused company. In this case, however, Zoom paid Twilio to recommend a solution that is not the right fit for most of Twilio's developer customers.

Compliance

Compliance is just as important as reliability, call quality, and features. But we've left it until next-to-last in the evaluation sequence, simply because in the video space all the established vendors are HIPAA-compliant, operate in ISO 27001 certified data centers, and offer data geo-fencing.

HIPAA and data geo-fencing compliance for real-time video

I think there are just two nuances to note here.

Real-time video compliance nuances

First, generally speaking, healthcare applications in the US can't use Agora. Agora is a strong player in the video space, but most enterprise compliance departments won't sign off on Agora handling healthcare video and audio traffic.

Agora's headquarters, executives, and engineering team are physically located in China. This means that the Chinese Government has access to all data that Agora handles, and even though Agora has self-certified as HIPAA compliant, Chinese laws about data privacy are generally considered to be incompatible with HIPAA.

The second nuance is that some applications have a hard requirement for true end-to-end encryption. Today, the only way to do true, auditable end-to-end encryption with WebRTC in a web browser is by using peer-to-peer calls. Peer-to-peer calls come with a number of quality disadvantages and feature limitations. For example, no recording or cloud transcription is possible in peer-to-peer calls.

In general, all established WebRTC vendors take data privacy seriously and use strong encryption for every leg of media transport. So a hard requirement for true end-to-end encryption is pretty unusual. But if your application does have this requirement, you'll need to talk to your vendor to make sure they support peer-to-peer calls.

Engineering support

Finally, support. Good engineering support will, for a lot of customers, make the difference between an easy port and smooth scaling as you grow, versus struggling to ship an application that works well for all users.

Engineering support for a video platform

At Daily, we find that we can often accelerate implementation, testing, and scaling in three complementary ways.

What makes a good real-time video platform support team

First, we can often save you time by offering best practices and sample code. We have sample code repositories for many common use cases and features. In an average quarter, we publish a dozen or so tutorials and explainer posts on our blog.

Second, if your use case is anything other than 1:1 video calls, it's worth a quick conversation about how to tune your video settings to maximize quality and reliability for your use case. Daily supports use cases ranging from 1:1 calls, to social apps with 1,000 participants all moving around in a virtual environment, to 100,000-person real-time live streams. The best video settings for these different use cases are all a little bit different.

Third, we can often help you debug your application code, even if your problems aren't  directly related to our APIs or real-time video. We've helped hundreds of customers scale on Daily and we've seen where the sharp edges are in front-end frameworks like React. We've seen where apps tend to hit scaling bottlenecks as they grow. And we've seen how Apple app store approvals work for apps that do video and audio. We want to be a resource for our customers. We want to save your product team time.

My advice here is to talk to a vendor's developer support engineers as much as you can during your eval process. We've sometimes had customers say to us, during their vendor evaluation, "we don't want to talk to you too much because we want to make an independent decision." I always tell them the same thing: you can certainly take everything we tell you with as big a grain of salt as you want to. But not talking to eng support just makes it impossible for you to evaluate one of the important things that you should be getting from a vendor, both early on as you build or port and over the long term as you scale. You should expect great developer support. And great support can save you meaningful amounts of time and help you make meaningful improvements to your customers' video experience.

So, that's it for the five major components of vendor evaluation: reliability, quality, features, compliance, and support.

Next we'll talk about planning your implementation and evaluating resources.

Planning and resource allocation

First, it's worth thinking through whether your team knows your existing Twilio Video implementation well, and if not, what to do about that.

Do you need a video migration consultant?

If engineers on your team wrote or actively maintain your Twilio Video implementation, then you're in good shape.

You almost certainly want the engineers who know your current video code just to do the port. The APIs for all major video platforms other than Zoom are similar enough that your engineers will be able to translate their existing code to the new APIs in a pretty straightforward way.

On the other hand, if your current video code was written by someone who isn't on the team anymore, consider getting help from a consultant with Twilio Video experience.

Learning the Twilio Video APIs, how your code uses them, and the APIs of another platform is ... more work. It's certainly doable, but a good consultant will likely save you significant time.

We work with several good independent dev shops at Daily. And for Twilio Video customers operating at scale, we offer a $30,000 migration credit to offset the cost for you of making the transition to Daily.

Video migration planning rule of thumb

Here's my rule of thumb — my starting point — for planning a migration. The implementation work involved in porting each major part of your video tech stack will be about 2 FTE weeks.

So, for example, you have a fairly standard 1:1 telehealth app feature set. You do real-time video, a little bit of in-call messaging, and of course you have a user flow that moves patients and providers into and out of the call. But you don't do any recording and you haven't built out any BI data or observability system integrations.

If your team knows your current video implementation, porting should take one engineer about two weeks, or two engineers that work well together about a week. 

On the other hand, if your video feature set is complex and includes multiple different video use cases, including recording, and you've built out custom integrations at the metrics and data layer, then a port is likely to be much closer to six weeks of FTE work.

Implementing and testing

Implementing and testing a new video provider

Once you have time from engineers — and maybe an engineering manager — blocked out, you can dive into writing code!

Here are two things that I think are very important. If you only remember two things from this presentation, these two things should be it!

  1. Initially, do a straight port of your video implementation, changing as little as possible. Don't add new features to your application during a port. Don't do any big architectural rewrites. 
  2. Don't build an abstraction layer. Write directly against your platform's APIs.
Two important video platform port considerations

This advice sometimes surprises people. So let's talk about both of these in a little more detail.

Over the past eight years at Daily, we've helped thousands of customers scale, and worked closely with dozens of those customers during their initial implementations.

The projects that have struggled to ship and scale have almost all either been ports combined with rewrites and new features, or projects that tried to build an abstraction layer to isolate application code from vendor APIs.

Don't port and rewrite application code

Combining a porting project with a rewrite is, almost always, a recipe for a slower, riskier implementation. The more code you change at one time, the harder it is to debug, QA, and evaluate.

Someone on your engineering team might argue that if you're touching all the video code anyway, you should clean it up and fix all the technical debt and little issues that are on the backlog. 

But don't do it. Empirically, I can tell you that the fastest, lowest risk approach is port to a new platform while changing as little of your application code as possible. Make sure everything is working as expected in production. After that, turn your attention to architecture improvements and new features!

The challenge of abstraction layers

So, if you're writing new video code anyway, why not create an abstraction layer that makes it easy to switch between platforms down the road? It turns out that designing, building, debugging, and maintaining an abstraction layer is a lot more work than doing several ports. An abstraction layer sounds like a good idea. I've had this conversation with many product teams over the years.

But every single customer we've had who set out to build an abstraction layer has abandoned the effort, either before ever getting to production with the abstraction layer, or down the road to improve code maintainability.

Also, in addition to adding risk and time to a project, using an abstraction layer prevents you from leveraging the specific strengths of a video platform. This can be okay for very simple apps. But even for simple apps, using the lowest common denominator feature set across multiple vendors is not usually a path to success.

Testing a new video implementation

Now let's talk about testing your new video implementation.

In general, if you use our recommended settings at Daily, we can confidently tell you that your video and audio will be delivered reliably to users on a very wide range of real-world networks.

But that's because we do a whole lot of testing ourselves, all the time.

We also know, because we do a lot of competitive benchmarking, and we've helped a lot of customers port to Daily, that this same level of testing isn't done by every video platform. 

So I think it's worth diving into the topic of testing, just a little bit. If your vendor doesn't do this testing, your team will need to.

Real-time video platform testing principles

First, it's important to test on simulated bad networks. Developers tend to have fast machines and good network connections.

Just because things work well for your engineering team, during development, does not mean that they will work well for all of your real-world users. Your platform vendor should be able to help you test your application on simulated bad network connections. You can also work with an independent testing service like testRTC.

Here are three basic tests that are worth doing regularly all the way along during development. Together, these three tests will help you make sure that your application is ready for production.

Networking testing: regular tests with real-world conditions

Basic network testing for real-time video

First, test regularly on a cellular data connection.

Second, test in a spot in your office or house that you know has sketchy wifi coverage.

And third, test consistently with a network simulation tool that can mimic a high packet loss, low throughput network connection.

This may seem like a lot, but you will have real-world users that match all of these profiles. In all of these cases, video should degrade gracefully and audio should remain clear.

Device testing

Video device testing

It's also important to test on a variety of real-world devices. Android phones, iPhones, older laptops. Again, your engineering team will likely have fast machines and – for browser-based apps – will tend to test on their laptops during development, not on their phones. But for telehealth, many of your users will be on mobile devices.

Load testing

Finally, it can be valuable to do load testing of your application. This is less of a concern when porting, because you know your app already works well in production. (This is, again, another reason to do a straight port, rather than a bigger rewrite, when moving between platforms. Less new code means less surface area that you will need to test from scratch.)

Load testing for real-time video implementations

If you do want to do load testing, there are some unique things about testing video apps. Most load testing tools can't instantiate video sessions.

Here again you can get help from a video-focused test platform like testRTC. Daily also has a set of infrastructure features that make testing with automated and headless video clients easy, which we affectionately call our robot APIs.

Moving traffic

Moving video traffic to a new platform

When you've tested internally and are ready to move production traffic, we recommend the following sequence:

  1. Set up monitoring
  2. Train your support staff
  3. Move 10 opt-in customer accounts
  4. While monitoring, move 10%, than half, then all of your traffic
Moving video and audio traffic

You can obviously customize these steps to your particular needs and organizational best practices.

In our experience, you will usually find at least one or two bugs in step 3, while testing with a handful of accounts that have opted into being beta testers for your new video implementation. But, generally, if you've worked closely with your vendor to test on a variety of networks and devices, step 4 goes smoothly.

Enterprise firewalls

One wrinkle here is enterprise firewalls.

Dealing with enterprise firewalls for video

If you have customers who are behind locked-down enterprise firewalls, you've probably worked with your customers' IT staff to set up configurations that allow Twilio Video traffic on their networks. Getting approval for firewall changes, and implementing and testing those changes, can be time-consuming.

So if you will need your customers to make firewall changes, start this process early.

Twilio's STUN and TURN services are not going away. These two services are a big part of firewall traversal, and they are used by multiple Twilio core products (not just Twilio Video). Daily supports using Twilio STUN and TURN services in combination with Daily. This can minimize the need to make changes to firewall configurations. If you are evaluating multiple vendors, ask about keeping your Twilio STUN and TURN configuration.

Wrapping up

Wrapping up video migration

Timelines for migrating a Twilio video application

So how long will all of this take? Of course the most accurate answer is, "it depends."

But, as a rule of thumb, from start to finish a port usually takes between 1 and 3 months. For a typical telehealth app, you can roughly plan on 2 weeks for each of the four phases: vendor selection, implementation planning, implementation and testing, and moving traffic. Which adds up to two months.

Timeline to port a telehealth video app

We have customers who have ported to Daily and moved all traffic in under a week. We also have customers who have taken 18 months to port and move all traffic.

The big thing I want to leave you with today is that porting to a new vendor is not overwhelming — it's a very manageable process.

Closing thoughts

Closing thoughts on Twilio video platform migration

Break the porting process down into defined phases. And do a straight port, initially, changing as little code outside your video implementation as possible.

Finally, lean on your vendor. We're here to help. If you can't get good support from us when we're trying to win your business and help you move your traffic over, you probably won't get it later. Evaluate our engineering support just like you evaluate our infrastructure and feature set.

Real-time video is a small world and I know most people in our space. All of us — Daily and all our competitors — want every customer to succeed and want to over-deliver on engineering support.

Thanks for listening.

A Q&A followed the live webinar. If you are interested in the Q&A content, please watch the video embedded at the top of this post. For more content about migrating from Twilio Video, see our Migration Resources hub. Also feel free to contact us directly at help@daily.co, on Twitter, or by posting in our community forum.



Never miss a story

Get the latest direct to your inbox.