# jaichenchlani/sre_bootcamp architecture

> Architecture diagram of the GitHub repository jaichenchlani/sre_bootcamp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jaichenchlani/sre_bootcamp
- Repository: https://github.com/jaichenchlani/sre_bootcamp

## Overview

This repository is a platform-engineering bootcamp: engineers provision cloud environments, deploy sample workloads, then explore their monitoring dashboards. The README documents the GCE web server and startup-installed monitoring tools, GKE sample applications, and GCP-native/Grafana dashboards for GCE, GKE, and Cloud Run. The tree also includes a separate GCE SRE-terminal example and Terraform-managed development VM. Source sampling was limited to the web page script, so links among unsampled deployment and dashboard files are shown only where documented or directly indicated by their roles.

Main entry points: [`gce/vm_debian/create_instance.sh`](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/create_instance.sh) (Create Debian VM), [`iac/dev/compute_instance.tf`](https://github.com/jaichenchlani/sre_bootcamp/blob/master/iac/dev/compute_instance.tf) (Development VM config), [`gce/vm_debian/webserver_app/index.html`](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/webserver_app/index.html) (Apache web app), [`gce/vm_debian/startup_script.sh`](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/startup_script.sh) (VM startup setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gce["GCE examples"]
  node_create_vm["Create Debian VM<br/>[create_instance.sh]"]
  node_vm_startup["VM startup setup<br/>[startup_script.sh]"]
  node_web_app["Apache web app<br/>[index.html]"]
  node_web_js["Page interaction<br/>[script.js]"]
  node_mig["Managed instance group<br/>[create_mig.sh]"]
  node_lb_command["Load balancer command"]
  node_sreterminal["SRE terminal VM"]
  node_sre_startup["Terminal startup<br/>[startup_script.sh]"]
end

subgraph group_gke["GKE examples"]
  node_gke_deploy["GKE deployment entry<br/>[deploy.sh]"]
  node_gke_cluster["GKE cluster config<br/>[gke-cluster.tf]"]
  node_numberwiki["Numberwiki manifest<br/>[numberwiki_v1.yaml]"]
  node_mathfunctions["Mathfunctions manifest"]
end

subgraph group_iac["Infrastructure as code"]
  node_dev_instance["Development VM config"]
  node_grafana_startup["Grafana startup"]
end

subgraph group_observability["Observability"]
  node_gce_dashboards["GCE dashboards"]
  node_gce_grafana_dashboards["GCE Grafana dashboards"]
  node_gke_dashboards["GKE dashboards"]
  node_gke_grafana_dashboards["GKE Grafana dashboards"]
  node_cloudrun_dashboards["Cloud Run dashboards"]
  node_cloudrun_grafana_dashboards["Cloud Run Grafana dashboards"]
  node_cloudrun_sample["Cloud Run monitoring sample"]
end

node_engineer(("Platform engineer"))
node_gce_service["Google Compute Engine"]
node_gke_service["Google Kubernetes Engine"]
node_gcp_monitoring["GCP monitoring"]
node_grafana["Grafana"]

node_engineer -->|"runs"| node_create_vm
node_create_vm -->|"uses startup"| node_vm_startup
node_create_vm -->|"creates VM"| node_gce_service
node_vm_startup -->|"installs monitoring"| node_gce_service
node_web_app -->|"loads script"| node_web_js
node_web_app -->|"served on"| node_gce_service
node_engineer -->|"runs"| node_mig
node_engineer -->|"uses"| node_lb_command
node_engineer -->|"runs"| node_sreterminal
node_sreterminal -->|"uses startup"| node_sre_startup
node_engineer -->|"runs"| node_gke_deploy
node_gke_cluster -->|"configures cluster"| node_gke_service
node_numberwiki -->|"declares workload"| node_gke_service
node_mathfunctions -->|"declares workload"| node_gke_service
node_engineer -->|"provisions"| node_dev_instance
node_dev_instance -->|"uses startup"| node_grafana_startup
node_dev_instance -->|"creates VM"| node_gce_service
node_gce_dashboards -->|"targets"| node_gcp_monitoring
node_gce_grafana_dashboards -->|"targets"| node_grafana
node_gke_dashboards -->|"targets"| node_gcp_monitoring
node_gke_grafana_dashboards -->|"targets"| node_grafana
node_cloudrun_dashboards -->|"targets"| node_gcp_monitoring
node_cloudrun_grafana_dashboards -->|"targets"| node_grafana
node_cloudrun_sample -->|"monitoring example"| node_gcp_monitoring

click node_create_vm "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/create_instance.sh"
click node_vm_startup "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/startup_script.sh"
click node_web_app "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/webserver_app/index.html"
click node_web_js "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/webserver_app/script.js"
click node_mig "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/create_mig.sh"
click node_lb_command "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/lb_create_rest_command.txt"
click node_sreterminal "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/sreterminal/create_sreterminal.sh"
click node_sre_startup "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/sreterminal/startup_script.sh"
click node_gke_deploy "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gke/deploy.sh"
click node_gke_cluster "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gke/infra/gke-cluster.tf"
click node_numberwiki "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gke/yamls/numberwiki_v1.yaml"
click node_mathfunctions "https://github.com/jaichenchlani/sre_bootcamp/blob/master/gke/yamls/mathfunctions_v1.yaml"
click node_dev_instance "https://github.com/jaichenchlani/sre_bootcamp/blob/master/iac/dev/compute_instance.tf"
click node_grafana_startup "https://github.com/jaichenchlani/sre_bootcamp/blob/master/iac/dev/startup_script_grafana.sh"
click node_gce_dashboards "https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/gce_golden_signals_gcp.json"
click node_gce_grafana_dashboards "https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/gce_golden_signals_grafana.json"
click node_gke_dashboards "https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/gke_golden_signals_gcp.json"
click node_gke_grafana_dashboards "https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/gke_golden_signals_grafana.json"
click node_cloudrun_dashboards "https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/cloud_run_golden_signals_gcp.json"
click node_cloudrun_grafana_dashboards "https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/cloud_run_golden_signals_grafana.json"
click node_cloudrun_sample "https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/cloud_run_monitoring_sample.json"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_create_vm,node_vm_startup,node_web_app,node_web_js,node_mig,node_lb_command,node_sreterminal,node_sre_startup toneBlue
class node_gke_deploy,node_gke_cluster,node_numberwiki,node_mathfunctions toneAmber
class node_dev_instance,node_grafana_startup toneMint
class node_gce_dashboards,node_gce_grafana_dashboards,node_gke_dashboards,node_gke_grafana_dashboards,node_cloudrun_dashboards,node_cloudrun_grafana_dashboards,node_cloudrun_sample toneRose
class node_engineer,node_gce_service,node_gke_service,node_gcp_monitoring,node_grafana toneIndigo
```

## Components

### GCE examples

- [Create Debian VM](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/create_instance.sh): `gce/vm_debian/create_instance.sh`
- [VM startup setup](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/startup_script.sh): `gce/vm_debian/startup_script.sh`
- [Apache web app](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/webserver_app/index.html): `gce/vm_debian/webserver_app/index.html`
- [Page interaction](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/webserver_app/script.js): `gce/vm_debian/webserver_app/script.js`
- [Managed instance group](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/create_mig.sh): `gce/vm_debian/create_mig.sh`
- [Load balancer command](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/vm_debian/lb_create_rest_command.txt): `gce/vm_debian/lb_create_rest_command.txt`
- [SRE terminal VM](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/sreterminal/create_sreterminal.sh): `gce/sreterminal/create_sreterminal.sh`
- [Terminal startup](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gce/sreterminal/startup_script.sh): `gce/sreterminal/startup_script.sh`

### GKE examples

- [GKE deployment entry](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gke/deploy.sh): `gke/deploy.sh`
- [GKE cluster config](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gke/infra/gke-cluster.tf): `gke/infra/gke-cluster.tf`
- [Numberwiki manifest](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gke/yamls/numberwiki_v1.yaml): `gke/yamls/numberwiki_v1.yaml`
- [Mathfunctions manifest](https://github.com/jaichenchlani/sre_bootcamp/blob/master/gke/yamls/mathfunctions_v1.yaml): `gke/yamls/mathfunctions_v1.yaml`

### Infrastructure as code

- [Development VM config](https://github.com/jaichenchlani/sre_bootcamp/blob/master/iac/dev/compute_instance.tf): `iac/dev/compute_instance.tf`
- [Grafana startup](https://github.com/jaichenchlani/sre_bootcamp/blob/master/iac/dev/startup_script_grafana.sh): `iac/dev/startup_script_grafana.sh`

### Observability

- [GCE dashboards](https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/gce_golden_signals_gcp.json): `observability/gce_golden_signals_gcp.json`
- [GCE Grafana dashboards](https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/gce_golden_signals_grafana.json): `observability/gce_golden_signals_grafana.json`
- [GKE dashboards](https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/gke_golden_signals_gcp.json): `observability/gke_golden_signals_gcp.json`
- [GKE Grafana dashboards](https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/gke_golden_signals_grafana.json): `observability/gke_golden_signals_grafana.json`
- [Cloud Run dashboards](https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/cloud_run_golden_signals_gcp.json): `observability/cloud_run_golden_signals_gcp.json`
- [Cloud Run Grafana dashboards](https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/cloud_run_golden_signals_grafana.json): `observability/cloud_run_golden_signals_grafana.json`
- [Cloud Run monitoring sample](https://github.com/jaichenchlani/sre_bootcamp/blob/master/observability/cloud_run_monitoring_sample.json): `observability/cloud_run_monitoring_sample.json`

### Other components

- **Platform engineer**
- **Google Compute Engine**
- **Google Kubernetes Engine**
- **GCP monitoring**
- **Grafana**

## Connections

- Platform engineer → Create Debian VM: runs
- Create Debian VM → VM startup setup: uses startup
- Create Debian VM → Google Compute Engine: creates VM
- VM startup setup → Google Compute Engine: installs monitoring
- Apache web app → Page interaction: loads script
- Apache web app → Google Compute Engine: served on
- Platform engineer → Managed instance group: runs
- Platform engineer → Load balancer command: uses
- Platform engineer → SRE terminal VM: runs
- SRE terminal VM → Terminal startup: uses startup
- Platform engineer → GKE deployment entry: runs
- GKE cluster config → Google Kubernetes Engine: configures cluster
- Numberwiki manifest → Google Kubernetes Engine: declares workload
- Mathfunctions manifest → Google Kubernetes Engine: declares workload
- Platform engineer → Development VM config: provisions
- Development VM config → Grafana startup: uses startup
- Development VM config → Google Compute Engine: creates VM
- GCE dashboards → GCP monitoring: targets
- GCE Grafana dashboards → Grafana: targets
- GKE dashboards → GCP monitoring: targets
- GKE Grafana dashboards → Grafana: targets
- Cloud Run dashboards → GCP monitoring: targets
- Cloud Run Grafana dashboards → Grafana: targets
- Cloud Run monitoring sample → GCP monitoring: monitoring example
