The Simple Server setup managed by this tooling has the following components.
Component | Purpose | Technologies |
---|---|---|
Primary relational database | Primary application database | PostgreSQL |
Secondary relational database | Follower application database | PostgreSQL |
Primary non-relational datastore | Datastore for application caching and background jobs | Redis |
Secondary non-relational datastore | Follower for primary non-relational datastore | Redis |
Web servers | Dashboard web application and APIs | Ruby on Rails Passenger Metabase |
Background processing servers | Perform enqueued tasks asynchronously | Sidekiq |
Load balancer | Route incoming web requests across web servers | HAProxy |
System health monitoring | Monitor the system health of all Simple servers | Prometheus Grafana |
Storage | Large storage location for logs and database backups | rsync |
These components are arranged in the following topography.
┌────────────────┐
│ replica │
│ non-relational │
│ store │
└────────────────┘
│
│
┌─────────┐ │ ┌────────────┐
┌──────────┐ ┌─────────┐│ ┌────────────────┐ ┌────────────┐│
incoming │ load │ │ web ││ │ primary │ │ background ││
requests ─── │ balancer │ ─── │ servers ││ ─┬────── │ non-relational │ ──────┬── │ processors ││
│ │ │ │┘ │ │ store │ │ │ │┘
│ └──────────┘ └─────────┘ │ └────────────────┘ │ └────────────┘
│ │ │
│ │ │ ┌────────────────┐ │
┌────────────┐ │ │ │ primary │ │
│ system │ │ │ │ relational │ │
│ monitoring │ │ └────── │ store │ ──────┘
│ │ │ └────────────────┘
└────────────┘ │ │
┌──────┐ │
│ logs │ │
└──────┘ ┌────────────────┐
│ replica │
│ relational │
│ store │
└────────────────┘