๐คTechnical Overview
This page gives a brief overview of the Metro Retro architecture and system requirements.
Last updated
This page gives a brief overview of the Metro Retro architecture and system requirements.
Last updated
Metro Retro is a dynamic, real-time application providing users with a rich interactive environment to work collaboratively. It is primarily deployed into a virtual private cloud operated by Deqo Software Ltd and provided in the form of Software as a Service.
This article describes the architecture of Metro Retro. See our Security and Privacy Policy pages for more information on our security and data protection practices.
Metro Retro is exposed to customers as a single page web application. Behind this, there are a number of services working in synergy to provide a working service. From a logical perspective (ignoring hardware), these are:
Service | Product / Provider | Role |
---|---|---|
The diagram below shows the logical topology layout including the data transfer routes. Blue lines are one way transfers, purple lines are bi-directional transfers.
Within the main cloud deployment, we utilize Digital Ocean with the following:
Ubuntu VMs for App Server, App Worker, Snapper, Podopolis, Rabbit MQ, Redis & Caddy
Digital Ocean Managed Postgres & MongoDB instances
Digital Ocean Spaces (S3 Compatible Storage)
Bunny CDN as the external CDN provider
Each component runs directly on a dedicated VM of a size applicable for the current system load.
Web Gateway
Caddy
Acts as reverse proxy and load balancer.
Content Delivery Network
BunnyCDN
Provides edge cache for static assets & SPA build files.
App Server
NodeJS Application
Application API (HTTP based) and Auth/Login UI.
Podopolis
Elixir Application
Socket server that enables the real time collaboration functionality.
Main Database
Postgres
Stores all system data except for board contents.
Object Database
MongoDB
Stores board contents.
Cache
Redis
Provides a cache and short term storage solution.
Message Queue
Rabbit MQ
Enables inter-service communication between components.
File Store
S3 Compatible Storage
Stores static assets & user uploaded data.
App Worker
NodeJS Application
Background job processor for various system tasks/functionality.
Snapper
NodeJS Application
Generates board preview images via Puppeteer.