- Catalog scope
- Every HBO GO title
- Consumers
- Web, mobile, XBox, affiliates
- Releases
- Multi-datacenter
Four years on the HBO GO platform, owning the content catalog that fed HBOGO.com, the services behind the mobile apps, the feeds that supplied affiliate distributors, and the build system that shipped all of it.
01 The problem
HBO GO had to present the same library consistently across the website, the mobile applications, the XBox, and a set of affiliate distributors who each wanted the data in their own format. One catalog, many very different consumers — and a release process that had to keep pace across multiple data centers without anyone losing track of which version was where.
02 The catalog
We developed and maintained the Catalog application managing every movie and series available on HBOGO.com, built on Java 1.8, Spring 4.x and Apache CXF for the RESTful services, with Oracle and Cassandra behind the data tier. The backing services feeding the mobile applications spoke JSON primarily, with XML where a consumer required it.
03 Distribution and partners
Affiliates needed the content as feeds rather than API calls, so we built Atom-based feeds for HBO GO content, designed against the Atom spec but with a custom solution underneath to support RSS and other formats where a partner required them. The XBox initiative was integrated using Microsoft Bing search.
04 Securing the partner edge
Affiliate connections ran on SAML 2.0. We generated and installed the JKS keystore certificates underpinning authentication and authorization between affiliate partners and HBO GO, and built and verified the backup keystore process so certificate rotation did not become an outage.
05 Shipping it
We also built the deployment system the platform released through: a single-page jQuery interface over a Java backend that queued multiple projects for build and deploy across environments, and tracked which servers and versions were live in which data center. Deployment tooling rarely makes a case study, but on a platform this size it is the difference between a release being routine and being an event.