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.