Building SaaS with Go: Dominic St-Pierre
Dominic St-Pierre is currently building a free and open-source backend API server for web/mobile apps—a lightweight Firebase alternative without the vendor lock-in aspect.
While preparing my notes for this interview, I realized that Dominic St-Pierre and I have many things in common. Both of us had been around the IT industry for quite some time before ultimately discovering Go and setting into building sustainable Software as a Service (SaaS). The similarities don’t stop here, though. Having released multiple successful SaaS in recent years, Dominic now shares his knowledge and experience in a book / video course, which he publishes alone. As a self-published book author myself, I know the struggle and the passion necessary to keep pushing forward. Spreading knowledge is a noble goal and one of the main reasons I wanted to invite him to share his story with our audience.
Dominic is currently building a free and open-source backend API server for web/mobile apps—a lightweight Firebase alternative without the vendor lock-in aspect.
Q: What brought you to Go?
Dominic: I started playing around with Go in 2014, but it was mainly a discovery phase. When I'm learning a new language, I tend to take it slow at first, doing in and out.
In 2015 I built LeadFuze, and the first version was written in TypeScript / Node. Unfortunately, it quickly became a nightmare to maintain. Because of the type of operations this company was doing, we needed way more scalability and a better programming model, as, at that time, callback hell was still a thing.
So, I woke up one day, and I decided to rewrite the main piece that needed the most performance, the crawler. I fell in love with the tooling and the developer experience at that time and decided to rewrite everything else in Go.
Since that time, Go has been my primary language of choice.
Q: What excites you the most about the language? Is there anything you think would help increase its adoption?
Dominic: I think generics will help, but I hope we can go a little bit further than that. A pipeline operator ala Elixir / Elm (|>) would be so helpful. But this would involve so many breaking changes.
I don't have any solution, nor have I thought about this problem, but having more functional concepts might help tap into the C# and Java pool and help Go get a bit less "verbose."
Q: You have built multiple SaaS with Go. Tell us a bit about each.
Dominic: I already talked about LeadFuze. After that one, I built another product in Go called Roadmap. It was the first time I went bottom-up, with no library for the routing, and I loved it so much.
My current project is StaticBackend, a free and open-source Firebase alternative I'm writing in Go. I decided to go with Go having the performance and hosting costs in mind.
I'm very excited about this one because it's the first time I'm building a developer tool. I'm enjoying this a lot. So far, all my attempts at growing products have been slowed down due to all sorts of marketing difficulties. Being a developer who was tired of writing the same backend code repeatedly, it's way easier to talk about a product with peers who feel the same way.
Q: Given the chance to go back, would you still use Go?
Dominic: Absolutely, in fact, I wish I had started earlier.
Q: How do you deploy your apps?
Dominic: I usually deploy my Go server on a DigitalOcean droplet. I use systemd's unit to run the service and restart it when needed. Since I'm building SaaS, usually, there's not really enough time to set up a huge pipeline for deployment. It's scp-ing the binary at first, bash script using SSH to copy files, restart the service. When times are allowed, I usually use GitHub webhooks to automate the build and service restart. It's simple, and it gets the job done by shipping very fast.
Q: You are now sharing your knowledge in a course. When and how did you decide to do it?
Dominic: I was exhausted after the Roadmap adventure in 2018. So I decided to take a break from re-launching another product and started talking about an idea I had for a book on Go. I already had built two SaaS in Go, and I felt I had a lot to say for people wanting to do this.
It took me way longer than I thought, 11 months, and I'm not sure I'll have the strength ever to publish something that big in the future :). Also, I had no idea what I was signing up for. It turns out to be a great experience overall but more complex than I thought it would be.
Q: What advice would you give to others willing to share the knowledge they've gathered in the IT industry?
Dominic: Just do it. The more we all share, the more people learn from sources that fit with their learning styles.
Thanks to Dominic for participating and sharing his insights with our audience. If you or your team have a Go adoption story waiting to be shared, please, do not hesitate to get in touch.