Networking & Entry Points

This page describes how external traffic reaches the services managed by this repository, from DNS and CDN layers through to the Application Load Balancer (ALB) and ECS services.

The focus is on networking and entry points rather than application logic. Where relevant, we note which sibling repositories define the applications that run behind these entry points.

High-level HTTPS and auth flow

The diagram below shows the HTTPS and authentication flow for the Prefect surface.

HTTPS and Auth Flow

At a high level:

  1. A user accesses pipelines.rocketclub.online.
  2. DNS for rocketclub.online is served via Cloudflare in DNS-only mode (records are not proxied), resolving the pipelines. hostname to its AWS CloudFront distribution.
  3. CloudFront distributions front the Application Load Balancer for the pipelines. hostname.
  4. The ALB terminates TLS and performs OIDC authentication with Kinde before routing traffic to the Prefect ECS service.

Domains and routing

This repository defines the AWS-side infrastructure for the main entry points into the platform.

HostnameDNS / CDN front doorAWS entry pointTarget serviceDefined where
pipelines.rocketclub.onlineCloudflare → CloudFrontApplication Load BalancerPrefect ECS service/APIinfra/platform/infra/modules/core/cloudfront-apps, infra/platform/infra/modules/core/alb

Notes:

  • Cloudflare provides DNS only here (records are not proxied); CloudFront is the CDN that fronts the ALB. The Cloudflare DNS records are managed in this repository via the Cloudflare Terraform provider (cloudflare_dns_record in infra/platform/infra/modules/core/cloudfront-apps and acm-alb-origin). Any other Cloudflare configuration (WAF, page rules, etc.) is managed outside this repository.
  • CloudFront distributions and the ALB are defined via Terraform modules under infra/platform/infra/modules/core/cloudfront-apps and infra/platform/infra/modules/core/alb.

Load balancer, listeners and target groups

The Application Load Balancer is responsible for:

  • Terminating HTTPS/TLS for the pipelines. hostname
  • Performing OIDC authentication with Kinde
  • Routing traffic to the appropriate ECS target group based on the request path

From an infra perspective:

  • ALB resources, listeners, listener rules and target groups are defined under infra/platform/infra/modules/core/alb.
  • Certificates for the ALB origin are managed via the acm-alb-origin module.
  • The Prefect ECS service registers targets in ALB target groups so that health checks and routing work correctly.

The HTTPS and Auth diagram abstracts this into a single "ALB / TLS + OIDC" node, but the underlying Terraform modules in this repository are responsible for the concrete listeners, rules and security groups.

Kinde OIDC (high level)

The ALB uses Kinde as its OIDC provider for the Prefect entry point. For detailed configuration, secrets wiring and rotation runbook, see Security, IAM & Secrets.

Network topology

At a coarse level, the network topology is:

  • A VPC with public and private subnets, defined in infra/platform/infra/modules/core/network.
  • Internet-facing resources (CloudFront origins, ALB) in public subnets.
  • ECS services and databases in private subnets behind the ALB.
  • VPC endpoints and security groups used to control access from ECS tasks and Lambda functions to AWS services such as S3 and Secrets Manager.

This page does not attempt to document every security group rule; the source of truth is the Terraform under infra/platform/infra/modules/core/network and infra/platform/infra/modules/core/alb.

Relationship to applications

The networking and entry points described here are shared infrastructure used by applications defined in other repositories:

  • The Prefect access surface at pipelines.rocketclub.online is used to interact with Prefect, while the underlying flows and deployments are defined in the data platform (data/platform).
  • The web app (apps/web) is deployed on Vercel and does not sit behind this ALB; it instead consumes Neo4j Aura, Cloudinary and S3 resources provisioned by this infrastructure.

For detailed application behavior, refer to the relevant sections of this documentation (the data platform lives in data/platform, the web app in apps/web, and these docs in apps/docs).