UptimeProject.io
Newsletter Log in

Update #01 - It's aliiiive! 🧟‍♀️

Published by: Jesse Kramer
its_alive.gif

The proof of concept has been completed, and it is live!

The PoC includes a fully functional cluster with basic HTTP monitoring. The cluster constists of:

These instances all run on separate servers all over the world. In the PoC, core and n01 (node01) run in Amsterdam, nodes 2 and 3 run in Miami and Barcalona.

Each instance runs the UTP-Core software which can act as either a core- or node-instance. These instances can be deployed and they can add themselves to the cluster, after which the cluster automatically divides the load evenly across all instances.

A running core or node instance also features a landing page which displays all the instances in the cluster, along with their health status (as seen below).

All UTP-Core instances connect to the same MySQL and Redis instance, which are placed in the core server. In later versions of the architecture, these instances will proably be seperated in to dedicated servers or containers. Along with making clusters out of them, as they are both a single point of failure in the current architecture.

A schematic overview of the architecture can be seen below:

Because every UTP-Core instance uses the same Redis instance, queueing and caches are shared between instances on the cluster. This is deliberate. It allows us (for example) to centralize queue management. This is done using Laravel Horizon. The UTP-Core instances generate live configs for horizon upon initialization, in order to work and use their own queues.

Each instance is currently configured to spawn 10 queue workers at once, which allows the cluster to handle around 1800 checks per minute (given a job execution time of 1 second). The amount of workers could potentially be increased.

A screenshot from Laravel Horizon:

What is next?

In order to use the software, there needs to be a control panel where you can login. This is the next part of the project. All newsletter subscribers will get a beta invite once that has been realised. The beta version will probably include:

See you at the next update!

Sincerely,

Jesse Kramer