# aws-samples/aws-fault-injection-simulator-workshop-v2 architecture

> Architecture diagram of the GitHub repository aws-samples/aws-fault-injection-simulator-workshop-v2, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aws-samples/aws-fault-injection-simulator-workshop-v2
- Repository: https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2
- Video tour (about a minute): https://gitdiagram.com/aws-samples/aws-fault-injection-simulator-workshop-v2/video

## Overview

This repository is a fault-injection workshop built around a pet-adoption application: participants browse and search pets, view adoption status, and pay to adopt, while the deployed services expose failure and operational behavior for experiments. PetSite is the user-facing entry point; separate search, adoption-list, payment, and history services handle domain capabilities. CDK defines EKS/ECS applications and supporting services, while observability and FIS components provide monitoring and experiments. The README emphasizes workshop access and deployment; sampled code confirms selected service wiring, but not every deployment link or request path.

Main entry points: [`PetAdoptions/petsite/petsite/Controllers/HomeController.cs`](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petsite/petsite/Controllers/HomeController.cs) (PetSite), [`PetAdoptions/cdk/pet_stack/lib/applications.ts`](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/applications.ts) (Application deployment), [`PetAdoptions/petsearch-java/src/main/java/ca/petsearch/controllers/SearchController.java`](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petsearch-java/src/main/java/ca/petsearch/controllers/SearchController.java) (Pet search), [`PetAdoptions/petlistadoptions-go/main.go`](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petlistadoptions-go/main.go) (Adoption list)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Adoption experience"]
  node_petsite["PetSite<br/>[HomeController.cs]"]
end

subgraph group_domain["Domain services"]
  node_search["Pet search"]
  node_list["Adoption list<br/>[main.go]"]
  node_payment["Adoption payment<br/>[main.go]"]
  node_history["Adoption history"]
  node_petdb[("Pet catalog")]
  node_adoptiondb[("Adoption records")]
  node_images[("Pet images")]
end

subgraph group_platform["Workshop platform"]
  node_awsconfig["AWS configuration"]
  node_cdkapps["Application deployment<br/>[applications.ts]"]
  node_cdkservices["Service deployment<br/>[services.ts]"]
  node_eks["EKS workloads<br/>[eks-application.ts]"]
  node_ecs["ECS services<br/>[ecs-service.ts]"]
  node_traffic["Traffic generator<br/>[Program.cs]"]
  node_userflows["User simulations"]
end

subgraph group_operations["Operations and experiments"]
  node_observability["Service observability<br/>[observability.ts]"]
  node_dashboards["Operational dashboards"]
  node_fis["Fault experiments<br/>[fis_serverless.ts]"]
end

node_participant(("Participant"))
node_aws["AWS services"]

node_participant -->|"uses"| node_petsite
node_petsite -->|"requests search"| node_search
node_search -->|"scans catalog"| node_petdb
node_search -->|"presigns image URLs"| node_images
node_search -->|"reads parameters"| node_aws
node_petsite -->|"requests adoption list"| node_list
node_petsite -->|"submits payment"| node_payment
node_petsite -->|"requests history"| node_history
node_list -->|"reads records"| node_adoptiondb
node_payment -->|"updates records"| node_adoptiondb
node_history -->|"reads history"| node_adoptiondb
node_petsite -->|"loads configuration"| node_awsconfig
node_cdkapps -->|"deploys application"| node_eks
node_cdkservices -->|"defines services"| node_ecs
node_cdkapps -->|"composes services"| node_cdkservices
node_traffic -->|"generates traffic"| node_petsite
node_userflows -->|"simulates browsing"| node_petsite
node_observability -->|"publishes telemetry"| node_aws
node_dashboards -->|"reads metrics"| node_aws
node_fis -->|"injects failures"| node_aws
node_cdkapps -.->|"deploys telemetry"| node_observability
node_cdkapps -.->|"enables experiments"| node_fis

click node_petsite "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petsite/petsite/Controllers/HomeController.cs"
click node_search "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petsearch-java/src/main/java/ca/petsearch/controllers/SearchController.java"
click node_list "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petlistadoptions-go/main.go"
click node_payment "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/payforadoption-go/main.go"
click node_history "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petadoptionshistory-py/petadoptionshistory.py"
click node_awsconfig "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petsite/petsite/SystemsManagerConfigurationProviderWithReload.cs"
click node_cdkapps "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/applications.ts"
click node_cdkservices "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/services.ts"
click node_eks "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/applications/eks-application.ts"
click node_ecs "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/services/ecs-service.ts"
click node_traffic "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/trafficgenerator/trafficgenerator/Program.cs"
click node_userflows "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/tree/main/PetAdoptions/cdk/pet_stack/resources/user_simulation"
click node_observability "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/observability.ts"
click node_dashboards "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/observability_dashboard.ts"
click node_fis "https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/fis_serverless.ts"

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_petsite toneBlue
class node_search,node_list,node_payment,node_history,node_petdb,node_adoptiondb,node_images toneAmber
class node_awsconfig,node_cdkapps,node_cdkservices,node_eks,node_ecs,node_traffic,node_userflows toneMint
class node_observability,node_dashboards,node_fis toneRose
class node_participant,node_aws toneIndigo
```

## Components

### Adoption experience

- [PetSite](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petsite/petsite/Controllers/HomeController.cs): `PetAdoptions/petsite/petsite/Controllers/HomeController.cs`

### Domain services

- [Pet search](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petsearch-java/src/main/java/ca/petsearch/controllers/SearchController.java): `PetAdoptions/petsearch-java/src/main/java/ca/petsearch/controllers/SearchController.java`
- [Adoption list](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petlistadoptions-go/main.go): `PetAdoptions/petlistadoptions-go/main.go`
- [Adoption payment](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/payforadoption-go/main.go): `PetAdoptions/payforadoption-go/main.go`
- [Adoption history](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petadoptionshistory-py/petadoptionshistory.py): `PetAdoptions/petadoptionshistory-py/petadoptionshistory.py`
- **Pet catalog**
- **Adoption records**
- **Pet images**

### Workshop platform

- [AWS configuration](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/petsite/petsite/SystemsManagerConfigurationProviderWithReload.cs): `PetAdoptions/petsite/petsite/SystemsManagerConfigurationProviderWithReload.cs`
- [Application deployment](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/applications.ts): `PetAdoptions/cdk/pet_stack/lib/applications.ts`
- [Service deployment](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/services.ts): `PetAdoptions/cdk/pet_stack/lib/services.ts`
- [EKS workloads](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/applications/eks-application.ts): `PetAdoptions/cdk/pet_stack/lib/applications/eks-application.ts`
- [ECS services](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/services/ecs-service.ts): `PetAdoptions/cdk/pet_stack/lib/services/ecs-service.ts`
- [Traffic generator](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/trafficgenerator/trafficgenerator/Program.cs): `PetAdoptions/trafficgenerator/trafficgenerator/Program.cs`
- [User simulations](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/tree/main/PetAdoptions/cdk/pet_stack/resources/user_simulation): `PetAdoptions/cdk/pet_stack/resources/user_simulation`

### Operations and experiments

- [Service observability](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/observability.ts): `PetAdoptions/cdk/pet_stack/lib/observability.ts`
- [Operational dashboards](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/observability_dashboard.ts): `PetAdoptions/cdk/pet_stack/lib/observability_dashboard.ts`
- [Fault experiments](https://github.com/aws-samples/aws-fault-injection-simulator-workshop-v2/blob/main/PetAdoptions/cdk/pet_stack/lib/fis_serverless.ts): `PetAdoptions/cdk/pet_stack/lib/fis_serverless.ts`

### Other components

- **Participant**
- **AWS services**

## Connections

- Participant → PetSite: uses
- PetSite → Pet search: requests search
- Pet search → Pet catalog: scans catalog
- Pet search → Pet images: presigns image URLs
- Pet search → AWS services: reads parameters
- PetSite → Adoption list: requests adoption list
- PetSite → Adoption payment: submits payment
- PetSite → Adoption history: requests history
- Adoption list → Adoption records: reads records
- Adoption payment → Adoption records: updates records
- Adoption history → Adoption records: reads history
- PetSite → AWS configuration: loads configuration
- Application deployment → EKS workloads: deploys application
- Service deployment → ECS services: defines services
- Application deployment → Service deployment: composes services
- Traffic generator → PetSite: generates traffic
- User simulations → PetSite: simulates browsing
- Service observability → AWS services: publishes telemetry
- Operational dashboards → AWS services: reads metrics
- Fault experiments → AWS services: injects failures
- Application deployment → Service observability: deploys telemetry
- Application deployment → Fault experiments: enables experiments
