Yonder is a music streaming service similar to Spotify, Apple Music and Google Music, but with a variation on the subscription business model – instead of monthly payments, music streaming was bundled with the sale of a mobile device or a data plan, free for the life of that device or as long as the device remained on the data plan. In effect, Yonder’s white-labeled, bundled music service differentiated products that otherwise only competed on price. The service was designed to be “social first”, with the app based around an activity feed similar to Twitter or Facebook, with users following one another and seeing their music recommendations and playlists.
Yonder first approached Cardinal Peak as an early stage startup with seed funding, looking to build a prototype service with a “social first” approach to mobile music. Our team fulfilled the role of CTO and engineering organization for the first two years of the business, guiding product direction, building a prototype, and once investment was secured, the full production system.
As a startup, Yonder were able to focus on building their sales and support channels while Cardinal Peak acted as the entire technical side of the company. Once the product was established and operating successfully in three markets, Yonder hired their own engineering staff and ongoing operations, maintenance and development was handed over to them.
Cardinal Peak was responsible for the technical design and implementation of the entire system, which consisted of Android and iOS mobile apps, cloud infrastructure, encryption and DRM, REST APIs, databases, full text search, custom social and recommendation algorithms, large scale music data import and transcoding, and integration with third party user databases and billing systems.
A key requirement was for the system to be scalable from the start – at launch, Yonder was made available to 15 million users over a two week period. The system achieved this scalability through AWS EC2 auto scaling, AWS S3 and a distributed noSQL database cluster.
The social design of the system led to a number of interesting data processing challenges, such as traversing the social graph and fanning out events and actions across many thousands of users in near-real time. We used a combination of queues, real-time database views and background processing jobs to achieve this.
Another major part of the cloud effort was integration with third party systems. Each record label had its own system and data formats to contend with, and imports had to be run daily to receive a steady flow of the latest music content. Each partner telecom company has its own proprietary user and billing system with which Yonder had to be kept in sync. Many technologies and protocols were used, including REST APIs, SOAP, FTP, and isolated cloud VPNs.
In order to launch a music streaming service, contracts need to be signed with the major record labels to gain access to their music. Before this can be done, the streaming service must pass rigorous tests designed by the record labels to ensure that their music content is kept secure – in the cloud itself, during transit from the cloud to the device, and when stored on the device storage for offline playback.
Cardinal Peak developed a custom solution for both Android and iOS that kept music data encrypted and secure when stored locally for offline playback. In the AWS cloud, we used S3 encryption at rest, token based authentication, and HTTPS streaming to deliver music to the devices in a secure fashion.
Yonder Music was launched in Malaysia, Indonesia and Bangladesh, and at peak times, handled traffic for many thousands of simultaneous users, streaming music from a database of over 10 million songs.