Memberstack helps developers add user logins, payments, and gated content on their websites. Over 2,300 developers rely on Memberstack to process over $40M in revenue. Memberstack went through Y Combinator as a member of the S20 batch.
Growing pains on Heroku
Early on, Memberstack opted to host applications on Heroku to minimize energy spent on DevOps. While scaling during YC, however, they ran into a few key issues. First, the lack of built-in support for static IPs meant they couldn't restrict access to their own Postgres database, which was becoming an increasing concern as more users trusted them to manage app authentication and payment information.
Along similar lines, Memberstack wanted to move into their own dedicated VPC but found Heroku's Private Spaces and Enterprise pricing difficult to justify at their size. Lastly, application scaling had to be managed completely manually since Heroku provided no support for autoscaling non-performance dynos.
"On Heroku there were basic networking and security things we wanted to accomplish that just weren't possible. Even for the things Heroku did support, it made no sense for us to pay thirty grand a year for basic features on Private Spaces."
Tyler Bell, Founder of Memberstack
Continued issues with Serverless
Once Memberstack realized they needed to move off Heroku, they decided to try going all-in on AWS Lambda using the Serverless Framework. The core motivation remained the same: focus just on the application logic while directing as little energy as possible towards DevOps.
"Serverless was marketed to us like 'this will be the easiest thing you'll ever do.' The problem is we ended up with a stack that had a lot of moving pieces that was really hard to debug."
Tyler Bell, Founder of Memberstack
Unfortunately, troubles quickly manifested in serverless paradise. For one thing, the debugging process became extremely time-consuming. While it was possible to mock the behavior of Lambdas in a local environment, inevitable differences in execution meant (empirically) having to debug most issues directly from AWS Lambda while hopping around multiple functions. As a startup aiming to constantly update product and move as quickly as possible, this created a massive bottleneck.
Also, deploys became significantly more fragile than before on Heroku. Many issues like bundle size limits, versioning differences with the Serverless Framework, and general lack of parity between the local environment and AWS Lambda were difficult to anticipate.
While Memberstack sees potential to someday reincorporate serverless for certain components of their stack, they concluded it was a poor fit for most of their applications especially in light of their current engineering needs.
Settling into AWS and Kubernetes with Porter
After encountering repeated issues with Heroku and serverless, Memberstack decided to switch to Porter to get a Heroku-like platform experience in their own cloud.
With Porter, Memberstack gets the infrastructure flexibility and performance of Kubernetes (EKS) without the traditionally associated DevOps overhead. Deploys from GitHub are fully automated and are now much more consistent than before on AWS Lambda.
"We've been extremely happy with Porter and have never looked back. Deploys are extremely dependable and when we push to a branch we know it's going to work. The Porter team was always super responsive during the migration process and our hosting experience has improved in nearly every way."
Tyler Bell, Founder of Memberstack
Memberstack takes advantage of every application type on Porter, deploying various web APIs, background workers, and scheduled jobs across multiple environments. Unlike Heroku, since Porter runs all services in Memberstack's own AWS cloud, they were able to easily restrict external access to Postgres and configure critical services to only be reachable from within the cluster.
"Each time we need to add a production-ready worker it literally takes minutes now instead of days. We've also used the rollbacks feature multiple times. It's super easy to do and happens almost instantly.
Tyler Bell, Founder of Memberstack
With the flexibility of running all services in their own AWS, Memberstack has the confidence to build for the long-run on Porter while focusing internally on what actually matters: their own product.
Looking to improve your developer experience on Kubernetes? Learn more about Porter today.