The Right Cloud Platform for Video Streaming

by Andrei KarabitskiSeptember 21, 2010
This blog post compares the Rackspace and Amazon cloud platforms across certain criteria to find the best solution for a video marketing service.

The need

A marketing company came up with an idea to create a new-generation video marketing service. They wanted to provide users with the ability to view, buy, and sell products and services online via video ads. The requirements included a capacity for storing, processing, and delivering thousands of videos. In other words, the product’s architecture had to deal with large volumes of data and traffic. Our team was requested to create this highly functional web application from scratch.


Initial platform selection

To choose the right cloud platform for running this application, we created a list of parameters to evaluate the platforms available in the market. For this purpose, we looked at scalability, performance, an ability to deal with large volumes of data and traffic, and availability of necessary services. After an in-depth analysis of the cloud platforms available, the initial selection was narrowed down to Rackspace Cloud and Amazon Web Services (AWS).

Our next step was to compile another list of criteria to compare technical parameters of these two cloud platforms. The customer’s management team bet for Rackspace Cloud due to a variety of cloud scenarios offered by this provider and positive feedback from other users. At the same time, our team had strong experience in implementing AWS across a variety of similar projects and knew that AWS could be a perfect fit for this service, as well. We all were wondering which of the two systems would be the best solution for this kind of a service.


Testing the platforms

We tested these platforms and compared the results against the list of the selected technical criteria. In many cases, Rackspace Cloud demonstrated better results in terms of response time, load balancing, maximum requests per second, etc. However, as for video streaming, Rackspace actually offered a progressive download, which means that a video file began to play only after a certain amount of data had been downloaded on a local computer. As a result, this method caused some delays in broadcasting a video to an end user.

Even though AWS couldn’t be ranked as high as Rackspace Cloud across a few of other parameters, videos were broadcast without any delays with AWS’s live streaming. The system brilliantly processed thousands of videos and proved a better ability to serve files.


Platform analysis and implementation

The results of the comparison analysis were summarized in a single table, featuring pros and cons of each platform. Since the live streaming option was very critical for this application, this—together with other benefits—made AWS more appealing in terms of overall performance. Having the results of the analysis, our team and the customer didn’t have any doubts about AWS being the best fit for this kind of service.

Eventually, CloudFront, Amazon CDN, and Amazon EC2 were utilized as a hosting solution, with S3 implemented for cloud storage. The preproduction testing demonstrated that the application can support over 25,000 corporate profiles with dozens of thousands videos in total. Even under a heavy load like that, the system remained stable and provided necessary scalability.

As you can see, even if a platform seems to be better in terms of response time or load balancing, it may not be enough to vote for it. For a particular service, some other things may also matter. You always have to keep in mind the overall result, which is influenced by a number of critical factors, and choose a platform in accordance with these criteria.

If you are interested in getting a detailed customer story featuring this project, don’t hesitate to mention it in the comments to this post.


About the author

Andrei Karabitski is a talented software engineer and a team lead of the Ruby-on-Rails team with 10+ years of experience in object-oriented and web-based application development. He has a strong expertise both in UI programming and server-side scripting. Andrei is adept at XML, HTML, and DHTML programming, as well as knowledgeable about MySQL and PostgreSQL relational databases. He has expertise in Ruby, RoR, Grape, Angular 2, and Java. Andrei has also in-depth understanding of Agile and Scrum methodologies.


Further reading

The post was written by Andrei Karabitski and edited by Katherine Vasilega.