Why We Rebuilt Our Website With =Go 🚀

When starting a new project or startup, they say you should try and focus on your MVP and just get something shipped. This is what we set out to do when we thought we’d throw our hat-in-the-ring and try and develop a nicer, easier to use video downloader service.

Like most developers, we always try to do a little research beforehand to see what delicious open-source projects are out there that could hopefully help us on our way, and as hardened Python developers, the search didn’t last long until we found the extremely popular and well maintained youtube-dl. (If you are anyway tech-minded or like to get your hands dirty with the ‘ol command line, give it try 🎉).

In fact, I’ll bet you $100 and raise you another $50💸, that most if not all the “downloader” sites online today are using this same library in some form or fashion. (Don’t believe me? Just wait for an issue to rise and watch all the sites using it break at the same time 😅).

Okay then smartypants why did you decide to spend the better part of 3+ months rewriting everything in Go of all things? 🤔

It’s true, that when we shipped our first iteration of Savieo, we thought we could push on and focus on developing new features and have no need to revisit our “backend innards” — at least for awhile. After all, we do have lots of ideas and features planned, so that the idea of refactoring a giant and mature codebase like youtube-dl wasn’t something we took too lightly.

However, when you find yourself growing too fast (yay! 🤓) and are about to increase your cloud infrastructure for a third time (yikes! 😲) with no let-up in sight, it’s probably a good time to revisit things — especially when you’re about to launch your brand new iPhone App (more on that later! 💯) and are expecting even more growth!

You see the thing is, code written to be used by single users on their PCs from a command line is all well and good, but trying to shoehorn that into a cloud-backend-server-thingamajig that’s to be used by potentially millions of people changes things exponentially. In short, Python just doesn’t cut it anymore, and using a Python package with multiple turtles down in abstraction just isn’t fun to maintain either. Sorry Python! We still love you though — thanks for getting us this far. 😚

So what! No regrets? 🙌

It’s only been a week since our relaunch using our refactored Go codebase and even-though there are some kinks that need to tweaked and ironed out, the difference is simply amazing. I’ve always heard other Python developers made the jump to Go because of cost and sanity reasons but I never really believed their results were that dramatic until now.

(Yes, we know Go was created with a specific focus on server-side infrastructure apps and shines with things like concurrency, static-types and binary builds — but we’re new around these parts friend 🤘)

Hi! I’m a Gopher and I make Savieo run f-fast-faster!

Essentially, what would before take ~8 maxed-out cores with a user-base of Alexa ~40k, now takes a fraction of one core(on average). I guess it’s true that Go gives you a “tenfold” efficiency boost over Python, but that’s simply amazing — we would have been ecstatic with only a fraction of that!


All in all we’re really happy we invested the time and effort in taking the “Go plunge”, we are now ready to take on even more juicy features and happy users! 🎉