Skip to content

Cloud infrastructure

The DSE team uses Terraform to manage cloud infrastructure. Our stack includes:

  • An AWS Batch environment for running arbitrary containerized jobs
  • A Managed Workflows on Apache Airflow environment for orchestrating jobs
  • A VPC and subnets for the above
  • An ECR repository for hosting Docker images storing code and libraries for jobs
  • A bot user for running AWS operations in GitHub Actions
  • An S3 scratch bucket

Architecture

flowchart TD
  subgraph AWS
    J[GitHub CD\nbot user]
    G[Artifact in S3]
    subgraph VPC
      subgraph Managed Airflow
        K1[Scheduler]
        K2[Worker]
        K3[Webserver]
      end
      F[AWS Batch Job\n on Fargate]
    end
    E[AWS ECR Docker\nRepository]
  end
  subgraph GitHub
    A[Code Repository]
  end
  E --> F
  A -- Code quality check\n GitHub action --> A
  A -- Job submission\nvia GitHub Action --> F
  A -- Docker build \nGitHub Action --> E
  A --> H[CalData\nadministrative\nuser]
  H -- Terraform -----> AWS
  K2 -- Job submission\nvia Airflow --> F
  K1 <--> K2
  K3 <--> K1
  K3 <--> K2
  F --> G
  J -- Bot Credentials --> A