Deployment Guide

Note: Production infrastructure (VPC, ECS, Aurora, S3, IAM, Prefect API, etc.) is defined and deployed from this repository via Terraform (see infra/platform/infra/envs/prod). This document focuses on the application-side pieces for blog_data.

How deployment works

Application deployment for blog_data is now handled entirely by CircleCI and a Prefect deployer ECS task defined in Terraform in this repository:

  1. You push to main, pipeline, or ecs in rlhatcher/rocket-club.
  2. CircleCI builds the blog_data Docker image and pushes it to the blog-data ECR repository tagged with the git commit SHA.
  3. CircleCI runs the deploy-to-prefect job, which:
    • Assumes an AWS IAM role using STS.
    • Starts a one-off Prefect deployer ECS task (defined in Terraform).
    • That task clones blog_data, installs it, and runs prefect deploy --all against the self-hosted Prefect API at https://pipelines.rocketclub.online.
  4. The Prefect deployer script ensures the blog-data-pool ECS work pool exists with the correct base job template and updates all deployments using the new image tag.

Infrastructure (VPC, ECS services, ALB/CloudFront, Aurora, etc.) is provisioned and updated via Terraform in this repo; see the infrastructure docs for details.

Visual overview

For a high-level view of how the Prefect worker pool and CI/CD fit together, see the generated diagrams (served from /diagrams/):

  • Prefect runtime:

    Prefect runtime

  • CI & Prefect deployer:

    CI & Prefect deployer

These diagrams are generated from code using data/platform/generate_architecture_diagram.py. See Pipelines Architecture for generation instructions.

Day-to-day deployment

For practical deployment tasks, use the following documents:

This page is intentionally high-level – treat code and data/platform/prefect.yaml as the source of truth for deployments.