The purpose of the Windows Azure ISV blog series is to highlight some of the accomplishments from the ISVs we’ve worked with during their Windows Azure application development and deployment. Today’s post, written by Tribe of Noise Founder Hessel van Oorschot, describes how Windows Azure powers the Tribe of Noise PRO online music community.
Tribe of Noise is a social networking community for musicians and the music business. We announced the launch of PRO at Midem 2012, Cannes, France. PRO is designed to connect the creativity of talented artists with media professionals who are seeking great music for their projects. PRO eliminates the need for music publishers, labels, and management organizations, while maintaining an easy-to-use and transparent platform that allows musicians and professionals to connect directly. Finding the right music for a professional’s next project is as simple as logging in to the website and listening to the selections of licensed music.
We designed PRO to help media professional search by keywords, tags and features they understand and find high quality music files from emerging artists around the globe all in a comfortable, all-rights-included, legal framework. If a media professional can't find a song, we offer our unique integrated “virtual briefing center”. The briefing center enables professionals to brief thousands of talented Tribe members who, in return, can instantly upload or compose specific music requested by the professional.
The business model is based on selling music licenses: the legal right to use a song for commercial purposes in a (digital) media project. The typical price range is €200 – €1200 per song, per project. An online payment service is included, and revenue generated by PRO is shared with the participating artists. We also have a sales team who can collaborate with our partners to facilitate marketing & media production organizations.
Why Windows Azure?
Many people have asked: “Why Windows Azure?” This question is asked a lot lately. We have a long history of working with open source software & open standards. With every new service we like, or contract we are interested to sign, we spend a lot of time researching the best possible scenario for our long term goals. We are not the easiest people to please. Coming from a typical LAMP (Linux, Apache HTTP Server, MySQL and PHP) architecture, it seemed a very unnatural move to go for Windows Azure.
We like the honesty, determination and openness of the Windows Azure team. They didn't have all the answers, and not everything we needed was available when we investigated the Windows Azure cloud services. But they listened to our wish list, concerns and needs for the future, and spent the time needed to find answers for us. That's the spirit we, running a startup, needed the most.
We migrated our existing PHP/ MySQL (LAMP stack) to Windows Azure. PHP is running in a web role, and the MySQL databases are migrated to SQL Azure.
We had to make a few changes when porting our php app to Windows Azure. For instance: Instead of reading content from the Linux file system, we modified our code to read from Windows Azure blobs, via the PHP SDK.
We wanted to move our service to the cloud because we, being a young company, expect a lot of growth. The scalability of the Azure platform will save us a lot of headaches in the future.
As stated before, we are coming from a LAMP environment. With the advice from the Windows Azure ISV incubation team, we considered the best way to make the transition from LAMP to Windows Azure. One specific migration was the database. Microsoft offers tools to easily migrate MySQL databases to SQL Azure:
- SQL Server Migration Assistant to migrate a MySQL database to SQL Server
- SQL Azure Migration Wizard to complete the migration from SQL Server to SQL Azure
SQL Azure looks very good and we felt that running a MySQL server on Web Role or Worker Role would be more complicated, and we would need to handle the challenges of administration, updates, monitoring, and scaling. SQL Azure, on the other hand, is Database-as-a-Service with built-in durable storage, synchronization services, and infrastructure maintenance. Switching to SQL Azure was the obvious choice and migrating was a breeze.
We never really considered dropping PHP. Our developers don’t have any knowledge of.NET and C#, and it would have cost us a lot of time, effort and money to re-train them. We were convinced PHP would run as well, if not better, on Windows Azure as on any other platform. Our developers work locally with Eclipse, Windows Azure SDK, Windows Azure Tools for Eclipse and SQL Server Express. It’s easy to setup, and getting our codebase to run didn’t pose any real problems.
Our architecture is quite simple. We have a Web Role that processes requests from users. Our traffic is handled by a minimum of two instances, which provides our uptime SLA. We use SQL Azure as a database and all our music is stored and served from Windows Azure Blob Storage.
Windows Azure Blob Storage fits naturally with the characteristics of the music files. We have both compressed (MP3) and high quality audio (WAV). Before someone buys a license, they can listen and download the full version of all the songs. These are MP3 files. When someone clicks the play button we want the music to start playing immediately. Windows Azure Blob Storage has been able to provide this for us. High quality WAV files will be available for users after payment.
For Tribe of Noise, PHP and Windows Azure are a perfect match. The migration from a complete LAMP stack to Windows and SQL Azure went very smoothly. We now leverage the following components of Windows Azure:
- Compute: We host the product and user interface in a web role, and have the ability to scale to meet traffic demands
- Storage: Our music is stored in Windows Azure Storage. We leverage the availability, scalability and the low cost of Windows Azure Storage. Integration with Storage is done through the PHP SDK.
- SQL Azure: We migrated relational data from MySQL to SQL Azure. We don’t worry anymore about the availability and scalability of our RDBMS.
Thanks for reading, and we hope this was useful for you. It has been fun writing this post for the Windows Azure blog. You can learn more about Tribe of Noise PRO here.