Operations

Run the stack locally first, then move to Kubernetes and AWS.

The platform is split into API, worker, connectors, callback gateway, storage, Kafka, and observability. That separation is useful in production, but the docs should tell operators how to bring it up and how to shut it down safely.

1

Bring up the local stack

docker compose up -d
docker compose ps
docker compose logs -f api worker callback-gateway

Use the local stack to validate request flow, admin APIs, template resolution, and callback handling before touching a public environment.

2

Mount secrets the production way

Provider credentials

Store provider credentials as secret references or mounted secret files, not inside the request payload or docs.

Admin keys

Keep the admin token in your deployment secret store and inject it as an environment variable or secret mount.

Callback verification

Callback routes can use no verification, shared-secret verification, or HMAC verification depending on the provider.

Push credentials

FCM service accounts should be mounted as files or secret references so the connector can resolve them at runtime.

3

Kubernetes deployment shape

Application namespace

Run API, worker, connectors, and callback gateway in the application namespace.

Metrics namespace

Run Prometheus, Grafana, and dashboard components separately so app rollouts do not disturb observability.

Exporters namespace

Run Kafka, Postgres, and node exporters where you prefer to keep scrape targets isolated from application pods.

Ingress and DNS

Expose only the public endpoints you actually need. Admin and callback routes should not be reachable without intent.

4

AWS EKS deployment notes

Cluster

Create a fresh EKS cluster in the chosen region, then deploy the same namespace split you used locally.

Images

Publish images to a registry, then point the manifests or Helm values at that registry.

Smoke tests

Run notification smoke tests after deployment so you can verify send, callback, and metrics paths together.

Rollback

Keep the previous image and manifest set available so you can roll back without rebuilding the environment.

5

Shutdown and cleanup

When you need to stop the system, scale the workloads down in reverse order and remove the external resources only after the data has been backed up.

docker compose down
kubectl scale deploy/api --replicas=0
kubectl scale deploy/worker --replicas=0
kubectl scale deploy/callback-gateway --replicas=0
Operational note Do not delete databases, buckets, or secret stores until you are sure backups and migration state are safe.