Why we decided to build Ludus on top of Heroku
And how it dramatically helped us to go from nothing to the top of Product Hunt in 4 months.
Nevertheless, when people ask me to define myself, I don’t really talk about that CTO thing but I tell them I’m a “Product Engineer”. I don’t do technology for the sake of technology. I do technology because it helps me build great products. Why is it important that I tell you that? Because it’s exactly the reason why we decided to build Ludus on top of Heroku.
When I tell people we’re on Heroku, the first reaction is always the same: they tell me that I’m crazy, and that Heroku is very expensive. I agree, if you compare to Amazon Web Services, it is expensive. But you know what’s more expensive? Having to hire someone to build and maintain your infrastructure on AWS.
At my previous startup, before we even started to really work on the product, we decided to hire someone to build our infrastructure on AWS, and we were very concerned about using only open sources technologies, so we could reduce the costs. That person did a great job but left the startup after only a few months for personal reasons, and it took us a while to recover from that. At the time, nobody else in the team was qualified to maintain the system so we wasted a lot of precious time trying to make sure the entire thing didn’t collapse. It’s only after two years that we were able to hire someone who cleaned all the mess we created, but the damage was already done.
When I started working on Ludus, I didn’t want to repeat that bad experience. As I was alone to work on the MVP on a very tight budget and timing, I didn’t have a choice anyway. I had to go for a PaaS, and Heroku was my first choice because I liked its power and simplicity, having already used it for side-projects in the past. In only a week, we had a solid infrastructure, the best that I ever witnessed in my entire career. And there is an obvious reason for that: 200+ people are working on it.
We currently have 4 microservices and we use GitHub for version control. We have one repository for each microservice and we use Heroku Pipelines to deploy. A push to the development branch will deploy to our staging environment and a push to the master branch will deploy to our production environment. We also do code reviews (with GitHub pull requests) and use Heroku Review Apps to check that the suggested changes can be pushed to production. We also do continuous integration and use Heroku CI to make sure all automated tests pass before deploying to production.
It scales very well. We don’t use it yet but Heroku has something called Autoscaling that adapts the infrastructure to the current traffic. If we had the chance to be featured on TechCrunch tomorrow, it would automatically create more instances of the server to reach the demand and make sure we have 0 downtime. But even without that, it’s rock solid. We had 100% uptime during our launch on Product Hunt, even though we made 40K+ page views in two days (May 10 & 11).
This is a dream setup, and it helps us focus on our main task: building a product people love.
And you know what? It’s not even that expensive! At this point (October 2017), we pay around $500/month. It will probably go up over time, but it’s always proportional to the amount of traffic we get, so it’s really a first world problem. In a year or two, if it becomes 10 times more expensive than what we pay now, we can start thinking about hiring someone who will move stuff to AWS and save us some money. We already started, and moved a very small microservice from Heroku to AWS Lambda, but we don’t plan to go further than that before long. We are a team of product engineers and taking care of our servers is not part of our job.
As a conclusion, know that the most important thing to do when you start working on a new project is to put something in front of your potential users/customers as fast and as often as possible. Something like Heroku will greatly help you and will cost nothing in the beginning, because you’ll get poor traffic at a very early stage of your company (don’t be too depressed about it, it’s actually a great luxury). If Heroku becomes expensive at some point, it’s a great problem to have, and when it does, you’ll probably have the financial power to hire someone to reduce the costs. But honestly, this is long shot. Don’t clutter your brain with that kind of issues in the beginning. Focus on your product, that’s the only thing that really matters.