Applications

How Opsitron models and manages your applications.

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:

SettingDescription
Module ReferenceWhich platform module it uses (e.g., ecs-webapp, static-website)
Deployment TypeContainer, S3 artifact, or infrastructure-only
Tech StackRails, Node, Go, Hugo, etc. — informs build configuration
ECR RepositoryContainer image location in SharedServices
EnvironmentsDev, 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).