An Application in Opsitron represents a deployable workload — a web app, API, static site, or any service that runs on AWS infrastructure.
Application Types
Container Applications
Docker-based applications deployed on ECS Fargate. Opsitron manages the full lifecycle:
- Build — GitHub Actions builds your Docker image on push to main
- Push — Image is pushed to a dedicated ECR repository in your SharedServices account
- Deploy — Opsitron updates the ECS task definition and rolls out new tasks
- Monitor — Health checks, auto-scaling, and deployment circuit breakers
The infrastructure is defined by the ecs-webapp module, which creates: ECS cluster, service, task definition, ALB, security groups, auto-scaling, and optionally RDS, Redis, and S3.
Static Sites
Static websites deployed via S3 + CloudFront. The static-website module handles:
- Build — Hugo, Next.js, Vite, or any static site generator
- Upload — Build artifacts stored in SharedServices S3 bucket
- Deploy — Synced to the website S3 bucket with CloudFront cache invalidation
- SSL — ACM certificates with automatic DNS validation
Infrastructure-Only
Applications that only have Terraform configuration — no build or deploy pipeline. Used for foundational infrastructure like shared services, LZA configuration, or DNS management.
Application Configuration
Each application tracks:
| Setting | Description |
|---|---|
| Module Reference | Which platform module it uses (e.g., ecs-webapp, static-website) |
| Deployment Type | Container, S3 artifact, or infrastructure-only |
| Tech Stack | Rails, Node, Go, Hugo, etc. — informs build configuration |
| ECR Repository | Container image location in SharedServices |
| Environments | Dev, staging, production targets |
How Applications Connect to Infrastructure
Application (web-app)
├── Application Repository (AcmeCorp/web-app)
│ └── .github/workflows/build.yml ← pushes images to ECR
├── Config Repository (AcmeCorp/infra-config)
│ └── apps/web-app/dev1/main.tf ← Terraform calling ecs-webapp module
├── ECR Repository (123456789012-acme/web-app)
│ └── Images tagged with git SHA
└── Environments
├── dev1 → AcmeDev AWS account
├── stage1 → AcmeStage AWS account
└── prod1 → AcmeProd AWS account
The application repo contains your code. The config repo contains your infrastructure. They’re connected by the build workflow (pushes images) and the deploy workflow (updates ECS).