Skip to main content

dxaws-website / design

·236 words·2 mins

Design Notes for dxaws-website
#

Architecture
#

dxaws-website is an orchestration module that composes primitive modules (S3, ACM, CloudFront, DNS) without implementing raw AWS service logic in this package.

This module:

  • does not expose a Module facade
  • does not expose legacy planner/executor top-level APIs
  • does expose a manager-centric flow: get_current -> plan -> apply -> execute

Typed inputs and outputs
#

Primary intent is represented by WebsiteDesired.

Current state is represented by WebsiteCurrent.

Execution returns WebsiteResult and optional WebsiteOutputs (when apply runs).

Convergence actions
#

WebsiteManager.plan() chooses one action:

  • create: required components are missing
  • update: some components exist but state is partial or not ready for full convergence
  • wait: async readiness is pending (for example ACM certificate still validating, or CloudFront distribution still deploying)
  • noop: all required components exist and are ready

noop is only selected when all of the following are true:

  • origin is present
  • certificate exists and is issued
  • distribution exists and is deployed
  • DNS records are ready

Execution behavior
#

WebsiteManager.execute(desired):

  1. Reads current state via provider get_current.
  2. Plans an action.
  3. Applies only for create and update.
  4. Returns outcome:
    • applied when changes were executed
    • wait when convergence is pending async readiness
    • noop when already converged

Boundaries and dependencies
#

The manager orchestrates and delegates to provider operations:

  • ensure origin
  • ensure certificate
  • ensure distribution
  • ensure DNS

Provider implementations can route to primitive modules/adapters. The orchestration layer remains responsible for action selection and stable result shape.