Over the past few weeks, we’ve seen a ton of Back To The Future themed posts all over social media, as we passed October 21, 2015 – the actual day that Marty and Doc visited in the plot of the second movie of the series. It was a fun time to reflect on what the movie got right about life in “the future,” and more comically, what it got wrong.
We don’t have hoverboards or hydrating pizzas, but one thing the movie got more of less right was video. Marty’s 2015 house is littered with TV screens, controlled by voice, where he can access content on demand or instantly video chat with a manipulative coworker. These things and more happen every day now in the palm of your hand.
What Back To The Future 2 never got into (because let’s face it, it would’ve been pretty boring) was how all that video got produced and delivered. We’re well beyond just Netflix and YouTube – more and more companies are in the video streaming business these days.
Video Streaming Is Experiencing Explosive Growth
A recent AppAnnie study ranked the top video streaming apps, and in this list, you can see the breadth and diversity of industries who are operating streaming video sites. The growth in usage, and even more importantly, revenue, is respectable. In the U.S., revenue is growing 3.2x year-over-year, but in countries like China, it’s as high as 9.6x.
Nearly every communications company and cable operator has its own streaming site. So do sports networks that simulcast games around the world, and TV channels that stream clips, episodes, and bonus content.
Here’s the thing: as sure as we’ll have another record-setting year for NFL streaming, you can also be sure that apps will fail and streaming services will go down.
Tips for Top Video Streaming Performance
Whether you are dabbling in streaming or diving in whole-hog, you need to know what to do to give your users the most reliable experience possible. Here are a few tips.
1) Build It Right: Adaptive Bitrate Streaming
Remember when you had to wait for videos to buffer before being able to watch them? You’d want to watch something, but you’d have to wait 10 minutes while enough of it loaded so it could play continuously through the end.
Fortunately, buffering has largely been eliminated, thanks to both improvements in network capacity and technologies like adaptive bitrate streaming. With adaptive bitrate streaming, the available bandwidth and capacity of the client dictates how much data is sent to you by the server. So a server will start you off with low-quality video if your bandwidth is limited, and then it will fill in the gaps as it can. If you have a small screen, you don’t receive as much data. If you hit a bump in the network, it can keep streaming with lower quality so your experience remains uninterrupted. People don’t care much if a few seconds of video are fuzzy, but they freak out when the screen freezes 2 yards away from a touchdown.
Adaptive bitrate streaming isn’t the only technology worth looking at for better streaming. Read this post and check out a few others.
2) Know Your Peaks
One of the most important things to know about your streaming system is where performance peaks out. You need to know how many users you can support. You can do this by developing a rich load testing process that helps you understand these dynamics.
Run load tests with different levels of hardware and different usage patterns to get a good picture of how much activity you can support. You’ll want to play around with different viewing dynamics – for example, run scenarios where people are browsing and viewing lots of different videos, and run other scenarios where a large proportion of the userbase is watching the same thing.
As you understand your thresholds, record those and share them with your Operations team for monitoring purposes. In fact, a strong partnership with Operations is critical, and it’s not a bad idea to run some amount of load testing in production because that will give you the most accurate picture of what you can truly support.
3) Monitor Performance
You have to be watching your viewers. Keep your Application Performance Monitoring (APM) solution operating at all times so you know if there are going to be issues. Combined with other basic network & system monitoring software, an APM solution gives you a solid understanding of how your app is holding up at all times.
Synthetic User Monitoring is the best place to start if you don’t currently have an APM system in place. Synthetic users simulate the behavior of your users, operating alongside them in the live production environment. You continuously run synthetic user tests to see what kinds of problems your users may be experiencing, before those problems turn into full-scale crashes.
4) Stay on Top of Key Metrics
For traditionally-built streaming applications that use progressive downloading, there are some metrics that are important to track: bitrate, buffer fill, lag length, play length, and lag ratio. These metrics give you a few slices of information that ultimately tell you one thing: does a client have enough bandwidth to consume and process the video stream. You can read more about these metrics here.
If you are using adaptive bitrate streaming, there will be other metrics you’ll want to pay attention to, specifically average bitrate (how much data are they getting on average) and startup time (how quickly does the server react to changing information from the client). With adaptive bitrate streaming, your users shouldn’t be experiencing any interruptions or delays, however, you’ll still want to know if their experience is subpar. These metrics will help you do that.
5) Remember the Ads
Finally, remember that your app doesn’t operate in a vacuum. Videos are often streamed with ads on the same page, or other interactive elements from third-party sites. These can impact the user’s experience.
No matter how good your infrastructure is, you could be beholden to someone else’s. So test the full context of how your users experience your video. Understand how third-party components impact what users do and what users see. The more realistic your testing, the more confident you will be in your app’s performance, especially when the pressure is on.
One thing – be cautious about involving live ads in your load test though. If you are heavily testing someone else’s ad server, you’ll impact the performance of everyone’s ads, and that could come back to bite you. You may want to look towards service virtualization for this kind of testing.
In many ways, performance testing for video is no different that performance testing for anything else. However, some of the technologies involved – and certainly the user’s expectations for quality – do give video performance testing its own twist.
If you’d like to dive deeper into the technical aspects of performance testing for video streaming, check out our recent post Stream On: How to Address and Avoid Streaming Media Performance Problems.