Skip to main content

Architecture

There are two primary parts of Thermostat, the CLI tool and the API server. There are plans to also add a web interface component, but this has not been completed.

Thermostat Architecture

Core Concepts

Thermostat has several core concepts that are used throughout this documentation:

Clients

A Client is an organization that Fahrenheit Marketing works with. For example, PepsiCo, Inc is a food company that we do development and marketing work for. A Client can have multiple Applications associated with it.

Applications

An Application is a self-contained web application that we manage for a Client. For example, the Recycle Rally Resource Library is a WordPress website that we manage for PepsiCo, Inc. An application has two main parts, its code and its data. The code for an application is a Git repository. The data for an application is all the other files needed to run the Application that are not stored in the Git repository, for example the database dump, file uploads, log files, etc. An Application by itself is just the "blueprint" for the web application, in order to actually run it must be deployed to a Server with a Deployment.

Servers

Servers are Linux servers that are running the Thermostat CLI that can run Applications. An Application is associated with a Server via a Deployment.

Deployments

A Deployment is an instance of an Application that is running on an actual Server. A Deployment has a "stage" property that is either "development" for local development environments used by developers for working on the Application development, "staging" for a staging environment that is used to test the Application with realistic data, or "production" for a production environment that runs the live version of the Application that the client is depending on.