# dchinthan/global-multi-tenant-saas-platform architecture

> Architecture diagram of the GitHub repository dchinthan/global-multi-tenant-saas-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dchinthan/global-multi-tenant-saas-platform
- Repository: https://github.com/dchinthan/global-multi-tenant-saas-platform

## Overview

This repository is a cloud-native, multi-tenant SaaS reference platform: Terraform provisions its AWS service architecture, with a Helm/Kubernetes path for the fileservice. The documented principal flow routes a user through DNS, CDN and load balancing to ECS services; asynchronous work proceeds through EventBridge, SQS and Lambda toward data stores. Distinct capabilities include tenant identity, analytics/reporting, security, observability, disaster recovery, and EKS/AKS portability. Connections are based on README statements and diagrams; unsampled Terraform wiring is represented at module-directory level, not inferred in detail.

Main entry points: [`infra/terraform/modules/compute`](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/compute) (ECS Fargate), [`helm/app5-fileservice`](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/helm/app5-fileservice) (Fileservice chart), [`infra/terraform/modules/edge`](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/edge) (Route 53), [`services/app5-fileservice/main.py`](https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/services/app5-fileservice/main.py) (Fileservice)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Traffic entry"]
  node_dns["Route 53"]
  node_cdn["CloudFront"]
  node_alb["HTTP load balancer"]
end

subgraph group_services["SaaS services"]
  node_app1["Primary service<br/>[app.py]"]
  node_app5["Fileservice<br/>[main.py]"]
  node_identity["Tenant identity"]
  node_analytics["Analytics"]
  node_report["Scheduled reporting"]
end

subgraph group_platform["Cloud platform"]
  node_ecs["ECS Fargate"]
  node_events["EventBridge"]
  node_queue["SQS"]
  node_lambda["Async Lambda<br/>[lambda.tf]"]
  node_data[("Tenant data stores")]
end

subgraph group_operations["Platform operations"]
  node_security["Security controls"]
  node_observability["Logs and tracing"]
  node_dr["Disaster recovery"]
end

subgraph group_kube["Kubernetes path"]
  node_eks["AWS Kubernetes"]
  node_aks["Azure Kubernetes"]
  node_helm["Fileservice chart"]
end

node_user(("SaaS user"))

node_user -->|"requests"| node_dns
node_dns -->|"routes to"| node_cdn
node_cdn -->|"forwards to"| node_alb
node_alb -->|"routes HTTP"| node_ecs
node_ecs -->|"hosts service"| node_app1
node_ecs -->|"hosts service"| node_app5
node_events -->|"dispatches events"| node_queue
node_queue -->|"triggers async work"| node_lambda
node_lambda -->|"uses stores"| node_data
node_analytics -->|"supports reporting"| node_report
node_app5 -->|"deployed with"| node_helm
node_helm -->|"deploys on"| node_eks
node_helm -->|"deploys on"| node_aks

click node_dns "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/edge"
click node_cdn "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/edge"
click node_alb "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/compute"
click node_ecs "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/compute"
click node_app1 "https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/services/app1-python/app.py"
click node_app5 "https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/services/app5-fileservice/main.py"
click node_identity "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/identity"
click node_events "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/event_backbone"
click node_queue "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/event_backbone"
click node_lambda "https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/infra/terraform/modules/compute/lambda.tf"
click node_data "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/data"
click node_analytics "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/analytics"
click node_report "https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/services/reporting/scheduled_report_lambda.py"
click node_security "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/security"
click node_observability "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/observability"
click node_dr "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/disaster_recovery"
click node_eks "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/eks"
click node_aks "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/azure_aks"
click node_helm "https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/helm/app5-fileservice"

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_dns,node_cdn,node_alb,node_user toneBlue
class node_app1,node_app5,node_identity,node_analytics,node_report toneAmber
class node_ecs,node_events,node_queue,node_lambda,node_data toneMint
class node_security,node_observability,node_dr toneRose
class node_eks,node_aks,node_helm toneIndigo
```

## Components

### Traffic entry

- [Route 53](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/edge): `infra/terraform/modules/edge`
- [CloudFront](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/edge): `infra/terraform/modules/edge`
- [HTTP load balancer](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/compute): `infra/terraform/modules/compute`

### SaaS services

- [Primary service](https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/services/app1-python/app.py): `services/app1-python/app.py`
- [Fileservice](https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/services/app5-fileservice/main.py): `services/app5-fileservice/main.py`
- [Tenant identity](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/identity): `infra/terraform/modules/identity`
- [Analytics](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/analytics): `infra/terraform/modules/analytics`
- [Scheduled reporting](https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/services/reporting/scheduled_report_lambda.py): `services/reporting/scheduled_report_lambda.py`

### Cloud platform

- [ECS Fargate](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/compute): `infra/terraform/modules/compute`
- [EventBridge](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/event_backbone): `infra/terraform/modules/event_backbone`
- [SQS](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/event_backbone): `infra/terraform/modules/event_backbone`
- [Async Lambda](https://github.com/dchinthan/global-multi-tenant-saas-platform/blob/main/infra/terraform/modules/compute/lambda.tf): `infra/terraform/modules/compute/lambda.tf`
- [Tenant data stores](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/data): `infra/terraform/modules/data`

### Platform operations

- [Security controls](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/security): `infra/terraform/modules/security`
- [Logs and tracing](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/observability): `infra/terraform/modules/observability`
- [Disaster recovery](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/disaster_recovery): `infra/terraform/modules/disaster_recovery`

### Kubernetes path

- [AWS Kubernetes](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/eks): `infra/terraform/modules/eks`
- [Azure Kubernetes](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/infra/terraform/modules/azure_aks): `infra/terraform/modules/azure_aks`
- [Fileservice chart](https://github.com/dchinthan/global-multi-tenant-saas-platform/tree/main/helm/app5-fileservice): `helm/app5-fileservice`

### Other components

- **SaaS user**

## Connections

- SaaS user → Route 53: requests (evidence: `README.md`)
- Route 53 → CloudFront: routes to (evidence: `README.md`)
- CloudFront → HTTP load balancer: forwards to (evidence: `README.md`)
- HTTP load balancer → ECS Fargate: routes HTTP (evidence: `README.md`)
- ECS Fargate → Primary service: hosts service (evidence: `README.md`)
- ECS Fargate → Fileservice: hosts service (evidence: `README.md`)
- EventBridge → SQS: dispatches events (evidence: `README.md`)
- SQS → Async Lambda: triggers async work (evidence: `README.md`)
- Async Lambda → Tenant data stores: uses stores (evidence: `README.md`)
- Analytics → Scheduled reporting: supports reporting (evidence: `README.md`)
- Fileservice → Fileservice chart: deployed with (evidence: `README.md`)
- Fileservice chart → AWS Kubernetes: deploys on (evidence: `README.md`)
- Fileservice chart → Azure Kubernetes: deploys on (evidence: `README.md`)
