I'm currently developing a video app that enables it's users to upload and stream videos from the app. Knowing fully well that videos are resource intensive, I am stuck on deciding a cost effective and efficient way of storing and streaming the videos. So far so good, below are my options:

  1. Host server app, store and stream video from a VPS or Dedicated Cloud Server. With this option, I think I will be faced with the challenge of server disk space and bandwidth as video storage and streaming increases. I think(not sure) some hosting firms sell additional disk space and bandwidth. But if true, won't it fall on the expensive side?

  2. Host server app on VPS, store and stream from cloud storage (e.g Amazon S3). From my assumption, I am thinking this option will be cost friendlier than the above option as cloud storage like Amazon S3 will only require me to pay for storage and bandwidth used. With this option, I am thinking it will work by first uploading the video file to the server app on VPS or Dedicated Cloud Server and then move it to the Amazon S3 storage. Now, what I'm not sure of is if it is advisable or a good practise to stream from Amazon S3 URL or is there a way to route the streaming through the app server as if the file is stored on the app server.

Need advise on which of the above option isa better and If there is a more cost effective solution apart from the above options, please do not hesitate to advise.

  • Could you go for multiple real dedicated servers and skip the cloud and fine-tune the servers for speed? What you need to pay attention to more is the time-to-first-byte for content delivery. – Mike May 3 '15 at 1:51
  • @Mike will this setup perform better than using Amazon S3 and Cloudfront in terms of speed? Fine-tuning for speed will pose a challenge as I lack the Server Administrative skills. – AbidingCitizen May 3 '15 at 10:44
  • I haven't used Amazon S3 or cloudfront but webpagetest.org might give you an idea on data transfer speed when you test one webpage on that site. – Mike May 3 '15 at 15:32

I'd go with option 2.

There's many many companies using S3 and Cloudfront to stream media directly.

See: https://aws.amazon.com/blogs/aws/using-amazon-cloudfront-for-video-streaming/

The main steps the the article outlines are:

  1. Getting your media uploaded to S3
  2. Using Amazon Elastic Transcoder to automatically convert your media to the proper format.
  3. Using Amazon Cloudfront to deliver the media
  4. It also talks about your options when it comes to either streaming, or downloading the media to clients

The main reasons for doing it this way is that you have an easily scaleable and cost-effective (only pay for what you use) platform for your media service, and all of it can be done automatically using the S3 and Transcoder APIs plus Cloudfront.

|improve this answer|||||
  • Strange, the link works fine for me... I'll go back and edit the answer. – mgee245 May 3 '15 at 20:48

Not the answer you're looking for? Browse other questions tagged or ask your own question.