"I probably spend 10% as much on DigitalOcean as I would with Heroku and AWS.”

Mark Steadman, Founder and CEO of Podiant

Industry
Managed service
YEAR FOUNDED
2016?
HQ
Birmingham, UK
# SAVINGS
Roughly 10% the cost of Heroku and AWS
Customer StoriesPodiant

Now hear this: how Podiant uses DigitalOcean Kubernetes to serve thousands of daily podcasts

Podiant makes it easy to host a podcast and grow your audience. They accomplish this by providing a feature-rich upload experience and a dashboard that shows your podcast stats at a glance. With its planning features, you can create a template for your episode notes, easily add and showcase info about your guests, and schedule recording times. And since your podcast deserves its own brand, Podiant includes easy-to-use tools to make a beautiful and unique podcast website.

“Initially I ran Podiant using Heroku and AWS S3, but when I ran into exorbitant costs and memory limitations, I switched to DigitalOcean Kubernetes and Spaces. I probably couldn’t have got the business off the ground without DO. I pay roughly 10% of what I’d pay elsewhere.”

— Mark Steadman, Founder and CEO of Podiant

Podiant’s early days: when a side project turns into a thriving business

Like many successful businesses, Podiant started out as a labor of love. Mark was an experienced web developer and avid podcaster when he first created Podiant in 2016. At the time, Mark sought to build a tool that he and his friends could easily use to distribute their podcasts. So, he developed Podiant using the Django Python framework, and utilized ffmpeg to handle audio files and streams.

Initially, Mark ran these audio processing workloads on Heroku, and stored and distributed podcasts using Amazon S3 and Cloudfront. But as Podiant gained popularity within the podcasting community, the podcasting service reached a problematic inflection point. Podiant began demanding more memory than Heroku’s affordable Standard Dynos could provide, and storage and bandwidth costs on AWS were becoming untenable.

By this time, Mark began taking Podiant seriously as a business, and subsequently needed to reduce expense – or rethink Podiant’s business model. After evaluating various options in early 2017, Mark migrated Podiant to run on DigitalOcean’s Droplet virtual machines instead of Heroku. He also switched from AWS S3 to DigitalOcean Spaces, and from AWS Cloudfront to KeyCDN.

His costs on DigitalOcean were roughly 10% of what they were with Heroku and AWS.

Seeking a simple way to scale: enter DigitalOcean Kubernetes

Not long after, in early 2018, Mark decided to further rethink his approach to the Podiant infrastructure.

One of the main issues with his VM-based setup was that there was no easy way to scale in accordance with user demand. Consequently, he either overprovisioned resources and left machines idle, or underprovisioned and introduced latency and problems that frustrated users. He decided it was time to put a modern, cloud native foundation in place that could automatically scale and support future growth.

As he had already switched to DigitalOcean, he suspected that the easiest way to adopt Kubernetes would be to utilize DigitalOcean’s managed service. In his evaluations of DigitalOcean Kubernetes, he found its developer experience much simpler than that of the alternatives. He also appreciated that DigitalOcean did not charge a fee for the cluster control plane and its node.

Having made the decision to use DigitalOcean Kubernetes to run Podiant’s services, Mark now operates Podiant in production using an architecture that looks like this:

Independently scalable, containerized microservices

Podiant runs on a single Kubernetes cluster, with two node pools, located in DigitalOcean’s London data center.

Podiant utilizes several different microservices (mostly written in Python), all of which run on DigitalOcean Kubernetes:

  • The core service handles most of the application logic, including providing an origin for the RSS feed CDN
  • The codec service uses a node pool with Memory-Optimized Droplets to transcode media files
  • The transcription service converts audio into text
  • The tracking service handles incoming requests for media files
  • The web player service is handled by a Node.js app
  • Integrations with Twitter, Facebook, etc. are handled as separate services that communicate back to the core service via an API
  • A Redis service facilitates communication between services within the cluster
  • The marketing site is served via a WordPress service

A safe, speedy public interface with the internet

To publicly expose its podcasting service to the internet, Podiant utilizes KeyCDN in conjunction with DigitalOcean’s domain management functionality. KeyCDN in turn routes legitimate user requests to a DigitalOcean Load Balancer, which passes them on to the NGINX Ingress Controller. This controller then passes requests to the appropriate services in the cluster.

Spaces for object storage, along with self-hosted databases on Droplets

To store and distribute podcast files, Podiant uses DigitalOcean’s Spaces object storage in conjunction with KeyCDN.

Podiant also runs MongoDB and PostgreSQL atop various Droplets in order to store podcast analytics and customer information. And since this data is of vital importance, Podiant backs up databases using the Droplet backup feature.

Because all of these resources are within a single DigitalOcean account, they run in the same Virtual Private Cloud. Consequently, all transfers between databases and application servers are free of charge.

A continuous build pipeline utilizing GitLab, running on Droplets

To continuously develop and release new features, Podiant runs GitLab Community Edition atop DigitalOcean Droplets utilizing Droplet backups to ensure no data is lost.

When new code is pushed to a Git repository, a build with GitLab CI is triggered, which then pushes the new build images into a private container registry within GitLab. If unit tests successfully pass, GitLab then deploys new container images to the DigitalOcean Kubernetes cluster.

Growing together: DigitalOcean ❤️ Podiant

DigitalOcean is proud to have Podiant as a customer, and is committed to supporting Mark and his ambitions.
It’s our hope that sharing the Podiant story inspires other software developers and aspiring entrepreneurs to build the applications and businesses of their dreams. If you’re ready to start building, you can get started here.

Have questions before you deploy?

Contact our Customer Success team to get answers.

Contact us