TMNF-TAS technical perspective

Now you know what TMNF-TAS is capable of doing for the users (Players) but you might also be interested in how it’s done under the hood.

  • The main component, that orchestrates everything, is TAS-Backend. It’s written in Python and is the communication hub and central brain of the application. It also exposes an REST-like API through CherryPy and deliveres the compiled Angular TAS-Frontend over the same channel.
  • Than there is the TMNF-Dedicated Server (called TMNFD from now on). It’s the official challenge server by NADEO. TAS-Backend communicates with TMNFD over it’s RPC connection to control the behavior. Mainly I just build a bit of framework around the Dedicated Server and called the whole compontent TMNFD.
  • One part of this framework is TMNFD-CLI with it the admin can alter some settings. But it’s main purpose is to give TAS-Backend the option to do some shortcuts it wouldn’t be able by it’s own.
  • TAS got it’s own CLI here the focus is the admin. TAS-CLI is capable to configure a variety of options and aspects of TAS on-the-fly. The design is that an admin would never need to touch TAS-Backend but instead would use TAS-CLI for this purpose.
  • Then there are the two storage services in form of MongoDB and S3 (MinIO in by default). MongoDB holds everything, configuration and recorded Players data, except binary objects for those S3 is used. Currently this binarys are generated Thumbnails, Challenge Gbx and Player Replays.
  • I’m also including a (optional) setup for a HAproxy Chache. During installation it is possible to choose this to be configured. If so, all traffic from TAS-Backend (and -Frontend) is relayed by HAproxy which is setup with it’s caching features to minimize the computing load on TAS-Backend and MongoDB.
  • And finally you have the option to enable Prometheus exporters for monitoring on all installed components of the TAS-Stack (TAS-Stack describes all components forming the final application/service, or in other words all the earlier named components). The installer includes an option to enable all those exporters, but you have to set up your own Prometheus server (and maybe Grafana) to make use of them.

And now, because a picture says more than 1000 words, here you have a drawing of TAS-Stack’s architecture:

TMNF-TAS-Stack's Architecture