Tech Tradeoffs #1: Django or Rails? MySQL or MongoDB?

Photo by GR Stocks on Unsplash

Tech Tradeoffs #1: Django or Rails? MySQL or MongoDB?

How did we decide which framework and database to use while building Seezo

Context:

I started working at Seezo, where we are building a product for security design reviews. At this point, we are on the 0 to 1 journey and all the technical decisions we make might have a large impact on the future of our company.

Personally, I have always been curious about why did someone pick X framework over Y or should you build a feature in this way or that...

Now that I am in a place where I get to be close to this decision-making process, I'll try to document it here. Some of the tradeoffs might actually come through a mix of research, previous experience, and discussions while some are just made in the moment(relying on our gut feeling).

Which framework?

Okay, this is the most discussed question and maybe the most vital one too!

How do you decide between so many frameworks out there? Even worse, 1 or 2 new ones coming out every other month?

To understand our decision, I'll give you a little context. The 3 things you need to know about us are:

  1. Building an MVP

  2. It's a B2B SaaS product

  3. The core product logic is NLP

This should give you enough idea about the key pointers we had in our heads when deciding on a framework. Let's start with the MVP point.

Since we are at a small stage and barely have any developers, it's going to be hard building and maintaining both Front-end and back-end services(we just have 1 FTE, me). It's just simple to have server-side rendering for now. The 2 biggest frameworks that pop into mind are Django and RoR, which are known for this.

Also, since it's an MVP and B2B, we can get away with a non-state-of-the-art front end, to begin with. I doubt this would be the case in a B2C product...

Okay, so my expertise is Rails. I wanted to strongly vote for it, but the main issue is Python is a clear winner in terms of NLP libraries and whatnot. So basically, we have 3 ways to look at this:

3

#2 is a clear NO, as we can't spend time recreating the wheel and we might spend more time doing that, than what we saved from using Rails.

#1 and #3 are the actual candidates. Since using Rails for the business logic will be faster and let's face it, I love working with Rails, #3 seems like a solid choice!

But the question is, over the course of say a year, will I gain more productivity from doing the web part in Rails than what I will lose by having to manage 2 HTTP services instead of 1?

Ding Ding Ding, we have a winner #1. Managing 2 services as a small team is going to be very troublesome. From Infra to debugging, managing 2 services is more painful than learning Django which is in theory similar to Rails(MVC)!

Hiring decent Rails Devs in India can also be a challenge but that is a story for another day.

Okay, so we understand why Django. This required some thinking and a bit of learning from past experience. How did we decide which database?

MySQL vs Postgres vs MongoDB

SQL vs nosql Not all decisions will have some amazing science behind them!

We went with MySQL simply because our co-founder was comfortable with it :D

At this point, MySQL vs other RDBMS doesn't have enough arguments to spend choosing one. Why SQL over No-SQL can also be debated, but the only thing in favor of No-SQL at this point is that our schema will evolve pretty quickly, and having that flexibility can be handy.

But it's still not that big of a deal, as we are building a product whose main functionality is going to be with a Vector DB and everything else is kinda sort of supporting it. Here familiarity wins.

As we move forward in the journey of building something from scratch, I will keep writing about the tradeoffs we make and if they came to bite us or we ended up being happy about it!