Open joseporiolayats opened 1 year ago
It has to be free, opensource, deployable, secure, cloud-based, modern, fast. The candidates are:
All of them can be deployed on the cloud. SQLite is the least functional, so it can be limiting. MSSQL is based on proprietary software and tied up to Microsoft. A good option but not the most modern. MySQL is battle-tested and can be deployed anywhere. Limitations are on not being able to scale horizontally. MongoDB is modern, designed for web-apps and can scale and do some compute inside. Good candidate. Postgres is very functional but also limited in scaling as MySQL.
I'm choosing MongoDB.
There is a service called MongoDB Atlas which offers free database instances for trying out the capabilities. I will be using it. It's deployed in AWS Frankfurt servers.
As it will be coded in python, the server is going to be deployed also in python. It has to be able to handle lots of requests, so better be compatible with ASYNC methods, and for the rapid iteration of the product it has to be easily configurable. Candidates:
I'm choosing uvicorn as web server.
It has to be able to work async and easy and fast to iterate. As it will be deployed in production setting, it has to be battle-tested.
Candidates:
I'm choosing FastAPI for the backend.
The tech stack I've selected is as follows:
This stack is usually known as FARM stack (acronym for FastApi-React-Mongodb)
In order to fulfill the requirements, as specified in the documentation problem, let's take some considerations for fulfilling each part of the problem.
In short:
The components to be chosen are: