In the software world, there’s a term that every developer loves — greenfield. Greenfield is a fresh start, a new beginning, a chance to do all the things right this time. Greenfield is an opportunity to take everything you’ve learned so far and make something new and amazing, with no strings attached. No framework, data model, or customer expectations to hold you back. No legacy integrations to slow you down. It’s a free (and somewhat scary) place to be.
When we decided to rewrite Simplecast from the ground up, we tried to start as close to this as we possibly could with the goal of moving the RSS standard in the 21st century and becoming the most tech-forward podcasting company on the planet. We rebuilt the infrastructure, the business logic, the design language, the user experience, and even our customer support experience. This is a BRAND NEW Simplecast with a big vision for the future, and we think you’re going to love it. Hands down, Simplecast is now the easiest way for a podcaster to publish and share audio on the internet.
We’d like to take a bit of time and explain some of the process and reasoning behind the technical decisions and software choices we made. We’ve got an entire series of posts about our new best-in-class analytics in the making, so we’ll skip that here (but seriously, go read those articles because what we did with analytics will knock your socks off!). Forgive us, we’re going to geek out on you here. This stuff really gets us excited!
Let’s talk about the foundation upon which this new platform has been built - our infrastructure. Why does stable and scalable infrastructure in podcasting even matter? You may not realize it, but we stream nearly a million hours of audio every single day– and that number is growing fast. Our customers and their listeners expect their audio to be available, instantaneously, every second of every day, 24 hours a day, 7 days a week and 365 days a year. We’re committed to delivering that.
So, first, we completely separated our own company’s (Simplecast’s) infrastructure from the infrastructure we use for delivering our customers’ audio to their listeners. This means that even if Simplecast’s site goes down, our customers are still delivering audio to their listeners.
Then, we built our audio delivery system from the ground up. The all new Simplecast’s audio delivery infrastructure is fully containerized and built on Kubernetes–the portable, extensible open-source platform for managing large containerized workloads. Google developed and first open-sourced Kubernetes in 2014 and it’s now widely regarded as the gold-standard in running production workloads at scale. With containers and the Kubernetes management system, we can easily and quickly ramp application instances to match spikes in demand. The Kubernetes platform allows auto-scheduling of containers onto a compute cluster and manages the workloads to ensure they run just as we design them to. This means our containers make highly efficient use of the underlying server infrastructure. That’s really important because we’re moving petabytes of data in order to ensure that our customers’ listeners can download and stream their shows whenever, wherever and without delay.
In short, we’ve eliminated the technical roadblocks to podcasting and created one of the most scalable infrastructures around. That’s why we are trusted by thousands of podcasters, including some of the biggest shows out there, and millions of listeners.
Next, let’s talk backend. The entire 1.0 application was built on a Rails stack. While this was great for a prototype, it was never going to handle the kind of growth podcasting and Simplecast is currently experiencing, and will continue to see. So, we opted for the most performant, concise, and productive language we could find.
Elixir is a new-ish language, first appearing in 2011. Elixir is a functional language, emphasizing higher-order functions and composition through piping. It compiles to bytecode and runs in the Erlang VM. Elixir allows us to rapidly develop new features and deploy them through our CI/CD pipeline with ease.
The backend of the all new Simplecast (we’ve called it internally Simplecast 2.0) is a full-featured, Restful JSON API. Using our oAuth authentication pipeline, any application can build on the Simplecast API. We chose this route for a couple of reasons. First, it means we can fully separate the UI from the business logic. Our backend team can build out the API (for example, for a new feature) without being tied to the frontend release schedule. Second, it means that Simplecast is, by far, the most extensible and flexible podcast hosting and distribution platform available. Our own UI consumes our API. Any third-party app or service can consume our API. RSS and JSON feeds are extensions of our API. We made it so that you get to take full control of your podcast. And all of our analytics data is available through our API. Yes, that’s right… you can pipe your analytics directly into your favorite suite of software. Though, we hope you won’t need to, which brings us to the next piece:
Vue gave us the opportunity to compose our UI the way we wanted it. Angular is an extremely opinionated framework, including everything from the templating engine to the request library, all the way down to cross-compilation from TypeScript. React leaves plenty of room for customization, but still didn’t quite fit our needs. Vue gives true separation of presentation and logic without the convoluted templates of React. And Vue’s CLI and Single-File Component architecture make development and deployment even easier. Using GitLab’s CI/CD pipeline, we can run the build script with the proper environment variables and deploy the entire app automatically.
This allows us to create reusable, fully-customized components for our User Interface. Reusable UI components really shine in our step-by-step onboarding and creation flows, and in our Overview and Audience Analytics pages in the platform. Vue’s single-file component architecture allows for self-contained, context-agnostic components. And by using a combination of caching and throttling in our request engine, we can ensure each component gets the data it needs without making unnecessary calls to the API. Sprinkle in a little Vuex for state management, and you’ve got yourself a simple, intuitive and, dare we say, beautiful User Interface for the all new Simplecast! I’m proud to say that Simplecast now makes professional podcasting easier than ever—whether you’re totally new to audio, or already a seasoned creator.
There are, of course, drawbacks to a complete rebuild. We put a lot of time, thought, and code (maybe even some sweat and tears) into the new Simplecast. We hit snags, found bugs in external libraries, and chugged through slow SQL queries. We even made a few bad choices along the way and had to go back and fix them. But what we’ve ended up with is a powerful-yet-simple podcasting technology platform with best-in-class analytics, features, and a one-of-a-kind API. The new Simplecast is the the foundation that creators need to move their shows and this industry forward. We have something to be proud of, and we hope you like it, too.
Steve Jobs once said that “Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it's worth it in the end because once you get there, you can move mountains.” That’s what we intend to do.