Skip to content
John Shaughnessy edited this page Nov 1, 2023 · 2 revisions

Ops

Ops Diagram

file:./images/ops_dot.png

This document describes the ops workflow for project initialization and updates.

Setup

Local Development

Docker, docker compose, git, and bash are necessary in the local development environment.

  • git synchronizes the source code between the local development environment and the forge (Github.com). The source code for all components live in a single monorepo.
  • setup_vm.sh is a script that can be used to quickly provision a new virtual machine. It is assumed that the virtual machine is running ubuntu, though it probably works with other distributions. The script will install nix and then use a configuration file to install the rest of the dependencies that are necessary in that environment.
  • Local development is facilitated by docker configuration scripts and docker compose. Local files will be available from within the dev docker containers so that the components can be rebuilt from source during development.

Cloud Environment (GCP)

The project is set up in GCP, but each component could easily be replaced by alternative cloud services. The current setup includes:

  • Two Compute Engine virtual machines. One hosts the staging environment. The other hosts the production environment.
  • Artifact Registry configured to host docker images.
  • GCS Bucket for hosting static files.

Github

Github is used as the git forge, the wiki, and the main CI/CD tool in the pipeline.

  • The source code for each (original) component in the project lives in the monorepo.
  • The wiki hosts the project’s documentation, development logs, TODO list, etc.
  • Workflows are defined to orchestrate various CI/CD tasks such as running automated tests, building artifacts, running database migrations, and deploying updates to the live environments.
Clone this wiki locally