It didn't take two years to build exactly; it took two years to get it right. In fact, the major components of the phone system have been deployed and tested in production on a daily radio program for the last 18 months.
I have obsessed on how to make FANS.FM simple. To that end I removed the need for user account registration or sign in. All you have to do is click the button on the homepage to get started. The entire host interface is browser based and realtime through the use of websockets.
Development went through several major refactorings as I wrestled with what the product should actually be. I used the project as a petri dish for some experimental development ideas and learned a lot in the process.
FANS.FM has a strict separation of static and dynamic concerns. All of the dynamic concerns are handled by message based system I just described. All of the static concerns are handled by Amazon S3. The entire www subdomain of fans.fm is hosted straight ouf of S3. Updates to a broadcast on the dynamic side are published in a static form immediately. All of the static assets and the player are hosted out of S3 in addition to the embed code that will swiftly load when placed on your website.
FANS.FM's database is Amazon's DynamoDB. I'm loving it so far. The data needs for this application are pretty basic and DynamoDB delivered an easy to use key/value store with atomic counters and collections. Also: just another thing I don't need to worry about keeping up. Also: its fast!