Cloud Infrastructure

Public Cloud

Like most startups, we use the public cloud model, in which infrastructure components - mostly, the things you can touch, i.e. hardware (computers) - are provided by third-party public cloud service providers.

In other words, somewhere in a large building (a data centre), there are racks of computers owned by Amazon, Google and similar companies, and we rent them rather than use our own.

Infrastructure-as-a-Service

Of the three public cloud infrastructure delivery models, we use the least comprehensive one - Infrastructure-as-a-Service (Iaas) - in which our three cloud service providers - DigitalOcean, Google and Amazon - deliver networking, data storage, servers, and virtualization capabilities, giving us as much data storage and computing power as we need, but requiring us to provide our own software platform to run on it. That means we take care of the operating systems, runtime, middleware, data, and applications.

When Trounceflow started in 2016, we not only rented our infrastructure, but also our software platform, to get things going faster. That is, we used a more comprehensive delivery model - Platform-as-a-Service. We used a PaaS cloud provider called Heroku. But not only is Heroku more expensive at a low level (a Heroku server is $75/month, but $30/month on DigitalOcean), the way it clones stacks as an alternative to Rancher is relatively expensive, and we also found some things very hard to do on it, so we now self-manage our software platform. We just use Heroku for one small thing now which costs $25/month.

Digital Ocean

We pay DigitalOcean (DO) $386/month (plus 20% VAT) to (i) host our two websites and (ii) do computing work (processing inputs into outputs).

More precisely, we pay $259/month for eight droplets (the name DO gives to servers / virtual machines) consisting of (i)-(iii) three web servers at $30/month each which we call "QA", "Production A" and "Production B", (iv) a fourth web server at $60/month which we call "Production C"; (iii) a fifth web server for this WordPress website you are viewing this on; (vi) a server for Rancher; (vii) a server for Jenkins (and Caddy) and (viii) a server we call "Robots".

We also pay $120/month for one managed database (our Postgres) with 8GB / 4vCPU / 115 GB Disk

Google

We pay Google Cloud Platform (GCP) $20/month for storage (of Docker distributive images).

Amazon

We pay Amazon Web Service (AWS) $2/month for storage (of files which contain the data we ingest).

Servers

The job of a server is to provide a service to a client. A server can be hardware, software or both. There are many types of servers for the many types of services they specialise in, including web servers, file servers and monitoring servers. But in general a hardware server is a shared powerful computer on a network, housed in a data center, while a software server (often running on a hardware server) is a program that provides services to the actual programs.

We pay for a (hardware) server from DigitalOcean and we run a free (open-source software) server on it called Jenkins (so we call it the "Jenkins server"). In addition, we run a free (open-source software) specialist web server called Caddy on that "Jenkins server".

We also pay for a (hardware) server from DigitalOcean and we run a free (open-source software) web server on it called NGINX. We call it the "Robots server" because many of our automation process (our 'robots') are run on it.

Virtualisation

Virtualisation at the machine level is the act of creating a virtual machine from (within) a real, physical one. A virtual machine (VM) is a computer-within-a-computer. You can't touch it (it's software, not hardware) but using a VM is just like using a physical computer. So we don't actually rent eight separate pieces of hardware from DigitalOcean, it just feels that way.

Virtualisation also takes place at the operating system level (OS-level virtualisation).

Cloudflare

Cloudflare is a global network in which every connected website has increased download speed and protection against a distributed denial-of-service attacks (DDoS attack is a malicious attempt to disrupt the normal traffic of a targeted server by overwhelming it or its surrounding infrastructure with a flood of Internet traffic).
So we are using Cloudflare to make connections to our website secure, private, fast, and reliable.

Acceleration of site loading is provided by CDN (content delivery network) technology. Cloudflare has servers around the world, where it caches static files from our website (images, CSS, Javascript files) and then distributes them from servers that are closer to visitors. This reduces the load on the hosting and the distance that data have to pass.

Protection against DDoS attacks is provided by Cloudflare traffic filter. It analyzes incoming traffic, blocks suspicious requests, and sends regular ones to the site.