Operating system and programming languages
Python is Trounceflow's main programming language. That's because our developers are experts in it. Had founder
Mike met different developers on day one, we might have started out with (and carried on using) another
language, e.g. C++, C#, Java, Ruby or PHP.
Debian 9 is Trounceflow's operating system. It's a Linux-based operating system. Many popular Linux distributions,(e.g. Ubuntu) are based on Debian. Stretch is the development codename for Debian 9. Stretch is an old but stable distribution (precisely, it is oldstable).
Servers and load balancing
We use IaaS approach for organizing our servers and software.
Here is detailed information about it - Cloud Infrastructure.
Data storage and querying
Postgres is Trounceflow's SQL database. There are SQL alternatives such as MySQL, and there are NoSQL
alternatives such as MongoDB, but for various reasons Postgres is the default choice for Python
We do use Redis, a NoSQL database which helps our software communicate and which removes pressure on Postgres.
Redis Cache is a tool (a service) that allows us to store data 'in memory' for high-performance data retrieval and storage purposes - helping the website display data in seconds (from Redis) rather than tens of seconds (from Postgres). When we update the database (Postgres), we need to update what is in the Redis Cache, so we 'drop Redis Cache'.
A web framework, or web application development framework, is a set of resources and tools to build web
applications, including web services, web API's and (most importantly) web resources (e.g. websites!).
Django, built on top of the programming language Python, is used at Trounceflow to make the set of webpages (the website) that we call "the App".
Moreover, Django is for the parts of "the App" that users don't see such as authentication, database design, and server interactions.
Django uses Jinja templates to make writing flexible, reusable webpages a straightforward task.
Django Constance allows an editor/analyst (even not a developer) to adjust the site parameters 'on the fly'.
One of the most important parts of our automatic production process is the running of periodic (regularly repeating) tasks, and much of this can be controlled within the administration area of Django by an analyst (not a developer), without having to alter the code in GitHub.
There are good alternative web frameworks such as Flask but Django is the most popular choice when the starting point is Python and PostgreSQL.
Here is detailed information about it - The Web App.
Monitoring and performance tools
We use several powerful tools for issue tracking, source control, monitoring and deployment.
Here is detailed information about it - Devops Toolchain.
Requirements.txt in GitHub