# sharwindtharumadurai/aws-sysops-starter-lab architecture

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

- Interactive diagram: https://gitdiagram.com/sharwindtharumadurai/aws-sysops-starter-lab
- Repository: https://github.com/sharwindtharumadurai/aws-sysops-starter-lab

## Overview

This repository is an AWS SysOps starter lab: Terraform provisions infrastructure, which runs a web service and supports monitoring, alerting, automated backups, and a documented disaster-recovery test. The main operational flow is EC2 metrics to CloudWatch alarms, then SNS email notification; the recovery flow uses an EBS snapshot to restore the root volume. The README documents these capabilities, but no Terraform or documentation excerpts were available, so resource-level wiring and scheduling details are not inferred.

Main entry points: [`terraform/main.tf`](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf) (Terraform configuration), [`docs/day3-backup-dr.md`](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/docs/day3-backup-dr.md) (Recovery procedure), [`docs/day1-infra.md`](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/docs/day1-infra.md) (Nginx service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_provision["Infrastructure"]
  node_terraform["Terraform configuration<br/>[main.tf]"]
  node_iam["IAM role<br/>[main.tf]"]
  node_ec2["EC2 instance<br/>[main.tf]"]
  node_nginx["Nginx service<br/>[day1-infra.md]"]
end

subgraph group_monitor["Monitoring"]
  node_cloudwatch["CloudWatch dashboard<br/>[main.tf]"]
  node_alarm["High-CPU alarm<br/>[main.tf]"]
  node_sns["SNS notifications<br/>[main.tf]"]
  node_email(("Email recipient"))
end

subgraph group_recovery["Backup Recovery"]
  node_ebs[("Root EBS volume<br/>[main.tf]")]
  node_snapshots[("EBS snapshots<br/>[day3-backup-dr.md]")]
  node_dr["Recovery procedure<br/>[day3-backup-dr.md]"]
end

node_operator(("SysOps operator"))

node_operator -->|"provisions"| node_terraform
node_terraform -->|"provisions"| node_ec2
node_terraform -->|"provisions"| node_iam
node_terraform -->|"configures"| node_cloudwatch
node_terraform -->|"configures"| node_alarm
node_terraform -->|"configures"| node_sns
node_terraform -->|"provisions"| node_ebs
node_ec2 -->|"hosts"| node_nginx
node_ec2 -->|"reports metrics"| node_cloudwatch
node_cloudwatch -->|"monitors CPU"| node_alarm
node_alarm -->|"publishes alert"| node_sns
node_sns -->|"sends notification"| node_email
node_ebs -->|"backs up"| node_snapshots
node_operator -->|"performs test"| node_dr
node_dr -->|"stops and restarts"| node_ec2
node_dr -->|"detaches and attaches"| node_ebs
node_dr -->|"restores from"| node_snapshots

click node_terraform "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf"
click node_iam "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf"
click node_ec2 "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf"
click node_nginx "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/docs/day1-infra.md"
click node_cloudwatch "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf"
click node_alarm "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf"
click node_sns "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf"
click node_ebs "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf"
click node_snapshots "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/docs/day3-backup-dr.md"
click node_dr "https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/docs/day3-backup-dr.md"

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_terraform,node_iam,node_ec2,node_nginx toneBlue
class node_cloudwatch,node_alarm,node_sns,node_email toneAmber
class node_ebs,node_snapshots,node_dr toneMint
class node_operator toneIndigo
```

## Components

### Infrastructure

- [Terraform configuration](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf): `terraform/main.tf`
- [IAM role](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf): `terraform/main.tf`
- [EC2 instance](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf): `terraform/main.tf`
- [Nginx service](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/docs/day1-infra.md): `docs/day1-infra.md`

### Monitoring

- [CloudWatch dashboard](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf): `terraform/main.tf`
- [High-CPU alarm](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf): `terraform/main.tf`
- [SNS notifications](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf): `terraform/main.tf`
- **Email recipient**

### Backup Recovery

- [Root EBS volume](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/terraform/main.tf): `terraform/main.tf`
- [EBS snapshots](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/docs/day3-backup-dr.md): `docs/day3-backup-dr.md`
- [Recovery procedure](https://github.com/sharwindtharumadurai/aws-sysops-starter-lab/blob/main/docs/day3-backup-dr.md): `docs/day3-backup-dr.md`

### Other components

- **SysOps operator**

## Connections

- SysOps operator → Terraform configuration: provisions
- Terraform configuration → EC2 instance: provisions
- Terraform configuration → IAM role: provisions
- Terraform configuration → CloudWatch dashboard: configures
- Terraform configuration → High-CPU alarm: configures
- Terraform configuration → SNS notifications: configures
- Terraform configuration → Root EBS volume: provisions
- EC2 instance → Nginx service: hosts
- EC2 instance → CloudWatch dashboard: reports metrics
- CloudWatch dashboard → High-CPU alarm: monitors CPU
- High-CPU alarm → SNS notifications: publishes alert
- SNS notifications → Email recipient: sends notification
- Root EBS volume → EBS snapshots: backs up
- SysOps operator → Recovery procedure: performs test
- Recovery procedure → EC2 instance: stops and restarts
- Recovery procedure → Root EBS volume: detaches and attaches
- Recovery procedure → EBS snapshots: restores from
