Skip to content
All projects

Contract Engagement

Symphonic

Backend engineering across a DSP delivery platform and its product rewrite

Independent music distribution and label services company delivering releases to 200+ digital service providers and stores worldwide, with royalty distribution, promo campaigns and rights management built in.

  • PHP
  • Yii2
  • Zend Framework
  • MySQL
  • AWS
  • FFmpeg
Visit live product

The problem

Releases had to be packaged and delivered correctly to hundreds of stores and DSPs - iTunes, Spotify, Beatport, Amazon Music and more - on a PHP5 and Zend codebase that was reaching its limits as the catalog and store count grew.

Business challenge

Keep release delivery, promo campaigns and royalty distribution running on the existing system while re-architecting it into a scalable, product-based platform.

Research

Traced release-packing and delivery issues back to a monolithic XML packing process with no clear ownership boundary between the promo, distribution and admin modules.

Planning

Rebuilt the platform in two phases - hardened and extended the existing PHP5 and Zend system first, then re-architected it as a Yii2 product with a redesigned, scalable database and AWS-based storage.

Architecture

  • Release Distribution Module packing release and track data into store-specific XML, delivered by FTP, SCP and S3 from queued cron jobs
  • Promo Module for campaign creation, monitoring and reporting, with a customisable theme per promo
  • Yii2 rewrite with a redesigned database schema on AWS, including S3-based storage
  • Role-based access control across module, controller and action levels in the Yii2 rewrite

Database design

Migrated from the original MySQL schema to a redesigned, scalable structure on AWS as part of the Yii2 rewrite, with release and delivery assets stored on S3.

API flow

  1. 1 Release and track metadata are entered through a wizard form
  2. 2 The distribution module packs the release into store-specific XML
  3. 3 Queued cron jobs deliver packages by FTP, SCP or S3 to each store and DSP
  4. 4 The promo module runs and reports on marketing campaigns for the release

Implementation

  • Applied Zend form filters and validators to close SQL-injection and XSS gaps in the original system
  • Shipped a new, customisable theme for promo creation and viewing
  • Rebuilt release packing and bulk import for performance in the Yii2 rewrite
  • Rolled out a new console scheduler and automated payment method integrations

Key features

  • Release delivery to 200+ stores and DSPs through automated XML packing
  • Promo campaign creation, monitoring and reporting
  • Role-based access control across the platform
  • Automated payment method integrations

Performance

  • Optimised release packing and bulk import as part of the Yii2 rewrite
  • A new console scheduler improved daily estimate and delivery job reliability

Lessons learned

  • Security filtering for SQL injection and XSS belongs in the framework layer, applied consistently, not bolted on per form.
  • A phased rewrite - harden the old system, then rebuild - kept delivery running while the new architecture was built.