Hello, and welcome. In this step, I’ll document my technology choices for the project.

The Database

There are so many options available for persistence layers nowadays, but I like to keep things simple. In short, I like to use PostgreSQL.

SQL has been around since 1974, and relational databases are simply the best tool for this kind of project.

NoSQL seemed exciting in 2012, but has since proven itself to be a niche technology with a lot of drawbacks for standard CRUD applications. ORMs may not be perfect, but I like them better than the alternative.

MySQL and MSSQL are both somewhat viable, but really, why would you use them when PostgreSQL exists?

MySQL was purchased by Oracle, who promptly implemented a dual-licensing scheme in an attempt to suck as much profit as possible from the brand name.

Do I even have to mention the MS licensing quagmire?

PostgreSQL is a rock-solid open-source project with lots of features, extreme reliability, and favorable licensing.

Caching Layer

I suspect that the main performance bottlenecks for this project will have to do with I/O, or database access. Both Redis and Memcached are strong candidates for application caching.

Since Redis can be used in so many ways (hash map, list, set, etc), I’m going to use Redis. I view it almost as a superset of Memcached. I do think Memcached could come in handy for truly massive websites where absolute performance is critical.

For a website like this one, Redis should be able to handle a Memcached-style load with no problem.

Flask Extensions

In the last step, I decided to use Flask as the backend framework. Flask is considered a micro-framework, and most projects will use extensions. These are the ones I chose.

Let’s move forward

I think these are all the things I’ll need to get started. In the next step, I’ll set up the environment, and get something basic running.