4.1 Introduction
Architecture explains how Moonitoring systems are assembled and where their responsibilities begin and end. It answers four questions, in this order: which systems we run and who uses them, in which environments they run, how those environments are networked and protected, and which services and technologies we chose to build them.
Source of truth
The architecture is drawn in the draw.io diagram and its costs in the cost diagram. Both open only for Google accounts with access to the files. These pages explain the drawings and the rules behind them; when a design changes, update the drawing and the page together.
4.1.1 Principles¶
A few rules shape every page that follows. When a new system or change seems to need an exception, the exception is a design discussion, recorded as a decision, not a shortcut.
- One ecosystem of systems. The Moonitoring Platform is made of small systems, each responsible for one thing:
accessholds identities, Organizations and permissions,releasesthe releases of our installed clients,farmthe canonical farm data (see System Overview). A system owns its own data and APIs and reaches another system only through its API or its events, never through its database. - Environments stand alone. No environment depends on another to keep running.
- Serverless by default. Nothing stays on for convenience: services scale to zero, notebooks are stopped, no model endpoint is kept on. The fixed costs are the database of each environment and the public edge.
- Everything runs in Google Cloud. Services, data and databases live in our own projects, in Milan, behind our own network and identities.
- Europe holds every primary copy of the data. Other regions may receive an entry point close to their users and read-only copies, never the primary.
- No keys. People and workloads prove who they are through Google identities. Nobody downloads a service account key.
- Infrastructure only from code. Every change to the cloud is a reviewed change to a repository, applied by a pipeline.
4.1.2 Reading Order¶
-
The systems we run, the people and machines that use them, and how they connect.
-
Shared, sandbox, stage and prod: what each one is for and what data it may hold.
-
How Google Cloud is organized into folders and projects, and how they are named.
-
How traffic enters, how environments are kept apart, and how services reach the database.
-
The cloud services, languages and tools we chose, and the alternatives we set aside.
-
How farm data travels from the farm to canonical data, and where raw files and canonical data are kept.
-
Who may do what, for people, services and customers, and how every action is audited.
-
How a change to the cloud is proposed, reviewed and applied with Terraform.
-
What each environment is expected to cost, the budgets and their alerts.
-
The common contract for registering a service, building it and releasing it to stage.