Mark Steadman, Founder and CEO of Podiant
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
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.
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:
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:
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.
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.
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.
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.
Talk to an expert for assistance with large deployments, migration planning or questions regarding a proof of concept.