Skip to content

Outcome · launch

A streaming service, not a stack of parts

Catalogue, search, entitlements, billing, DRM, live channels, analytics and native apps for web, phone and television. Assembled once already, running in production, and deployable into your estate as a system rather than an integration project.

The integration is the hard part, and it is already done

Every component of a streaming service exists as a product you can buy. The reason launches slip is never that a piece was unavailable — it is that fifteen pieces from eleven vendors have to agree about identity, entitlement, encryption and playback state, and none of them were designed to.

This platform was built as one system by one team, and it runs a live consumer service. The catalogue knows what the entitlement service knows. The player reports into the same analytics the operations team watches. The token the edge checks is the token the auth service issued. That coherence is not a feature list item; it is the difference between a launch date and a hope.

Detail

What ships

Viewer-facing

Apps on every screen

Responsive web, iOS and Android phone apps, and television apps for Android TV and tvOS — sharing one backend and one analytics pipeline.

  • Web player with adaptive HLS
  • Phone apps, published to both stores
  • Television apps built for a remote, not a mouse

Commerce

Billing that matches the business

Subscriptions, pay-per-view, free tiers and coupons, with entitlements enforced at the edge rather than trusted in the client.

  • Subscription and PPV
  • Coupons and promotional pricing
  • Entitlement checked per segment

Content

Catalogue and live

Ingest, metadata, search, recommendations and scheduling — with live channels and a VOD back catalogue running through the same pipeline.

  • Ingest and transcode pipeline
  • Search and recommendations
  • Live channels alongside VOD

Protection

Encryption and DRM

Every stream encrypted, keys released only against signed expiring tokens, and the edge re-checking on every segment rather than once at playback start.

  • AES-128 on every stream
  • Studio DRM built in the engagement, not running today
  • Copying a link does not copy access

Operations

Admin and analytics

An operations console for the catalogue, users, revenue and live channels, plus per-session playback telemetry from every player.

  • Catalogue and user administration
  • Revenue and subscription reporting
  • Start-up time, rebuffer ratio, errors per session

Foundation

The estate underneath

Whichever deployment pattern fits — on-premises, hybrid or AWS — declared in Terraform and shipped by a GitOps pipeline from the first day.

  • Terraform for the whole estate
  • Merge request is the only deploy path
  • Observability before launch, not after

Reference architecture

The usual starting architecture

Most launches start here — elastic where it helps, owned where it bills.

01Viewers

Untrusted — the public internet

  • Web playerHLS · AES-128
  • Mobile appsAndroid · iOS in development
  • TV appsAndroid TV · Tizen in development
  • DNScontrol and media names are disjoint

02AWS — control plane: small, spiky, rents well

No media byte is ever served from here

  • Load balancerpublic entry for control
  • Platform APIscatalogue · search · billing
  • session-authzsessions · entitlement
  • Managed databaseprimary application store
  • Object storagemasters and backups
  • CDNspillover only, not the default path

03Your edge — media plane: enormous, steady, ruinous to rent

Every media byte leaves from here

  • traefik-edgeTLS · host and path routing
  • CrowdSecWAF and behavioural bans
  • Live pathlow-latency HLS
  • VOD pathrange-aware cache

04Your metal — origin, encoding and the keys

The bytes never enter a metered path

  • live-transcodeFFmpeg, continuous
  • live-originHLS packaging
  • vod-transcode + GPUFFmpeg NVENC pool
  • vod-origin-cacheorigin pull and cache
  • MinIOS3-compatible origin of record
  • key-deliveryDRM keys, per segment
  • OpenBaosecrets and transit encryption
  • ClickHouseplayback telemetry, kept local

05One control plane, both estates

The same pipeline provisions AWS and the metal

  • Proxmox VEisolated guest per service
  • TerraformAWS and Proxmox providers
  • Ansibleapplication delivery
  • Cost controlsbudgets · right-sizing
  • Prometheusmetrics, both estates
  • Grafanaone view, not two consoles
  • Yours — hardware you own
  • Rented — public cloud
  • Edge — faces the viewer
The boundary is drawn where the money is. Control traffic — catalogue lookups, sign-in, billing — is small and elastic, so it rents well. Media traffic is enormous and steady, so renting it is the single most expensive decision a streaming service makes.

Process

How a launch runs

01

Discovery & HLD

Catalogue, concurrency, territories, licensing constraints and the date. Out of it comes an architecture and a sizing you can take to a board.

02

Estate build

Terraform first. The environment is reproducible from Git before anything is installed on it, which is what makes the rest predictable.

03

Platform & content

Services deployed, catalogue ingested, encoding ladder tuned to your material, apps branded and submitted to the stores.

04

Load, then launch

Tested at the concurrency you expect, not the concurrency that is convenient. Runbooks written against the real estate before the first viewer arrives.

Questions

The things people ask first

Can we use our own branding and design?

Yes. The apps and web front end are branded to you. The architecture and the pipeline are the shared part; the surface a viewer sees is yours.

What about content licensing and DRM requirements?

AES-128 covers a great deal of independent and regional content. Where a studio agreement requires a licensed DRM, that is integrated — it changes the key path, not the architecture.

Do you handle the app store submissions?

Yes, including the parts that reliably surprise first-time publishers — reviewer sign-in accounts, account-deletion pages, data-safety declarations and the release pipeline itself.

Tell us what you want to launch

Catalogue size, expected concurrency, live or on-demand, and the date it needs to be live. That is enough for a first architecture and an honest timeline.