Ask HighScalability: How Do I Build My MegaUpload + Itunes + YouTube Startup?
This question was sent in by Val, who asking for a little help in creating the next big thing. Any ideas?
I'm planning to run my own, first startup website and have been surfing the webs for relevant info to plan the technology I will use for it (the frontend and the backend, including the software and the hardware). The website will be something like a combination of:
- MegaUpload (users will upload their files)
- iTunes (users will be paid for their uploads)
- and YouTube (in the future I'm planning to let users watch/listen to the content online, without downloading).
I don't have any investors yet, nor the budget - I'm still preparing the idea and I'm going to create first implementation (an "alpha version") before I show it to potential investors. Hence the initial technologies have to be extremely cheap *but* also highly scalable in the future so that I don't have to redo anything when the website grows.
Unfortunately I don't have much experience in running big wesites but, on the other hand, I hope my website to grow extremely big (of course).
My questions are:
1. What programming languages should I use? I don't know JavaScript/AJAX or PHP yet. I know C# and I found mojoPortal to be an interesting solution - based on ASP.NET but can run on Linux through Mono. I'm also willing to learn AJAX/PHP if it is necessary.
2. Should I use an existing framework/CMS (that I would only modify) to avoid reinventing the wheel of all the algorithms for user registration, logins, file uploaders etc? Won't this framework/CMS limit me in the future with it's performance, limited functionalities etc?
3. How should I plan the database? I read MySQL is probably the best for this kind of projects but how should I save the data to ensure data safety and scalability? Generate a new database for each user and then make a copy (backup) on a different physical machine? Create one big database for all users and files (won't that be too slow and unseparatable between machines)?
4. The server. I think Linux will be best for the beginning, but what for the future? If I base my software on C#/ASP.NET, should I go for Windows Server in the future?
Advice from anyone experienced in this kind of web development is very much appreciated.