Go-live checklist
The go-live checklist is the set of checks to finish before the first real customer deploys your software. Each item says why it matters and how to do it.
Projects and keys
-
Use a separate project for staging. Tests then never create setup links, releases, or deployments next to real customers. Create a second project in the dashboard and point staging CI at it with
ALIEN_PROJECTor--project. -
Give each backend a scoped key. A leaked key can then do only what that service needs. Run
alien api-keys create --for deployments, or use Settings → API Keys, and keep it on your backend, never in the browser.A project key can't update itself, re-enable a disabled key, or extend or remove a key's expiry (
API_KEY_UPDATE_FORBIDDEN). A leaked key can't keep itself alive. -
Keep a separate key for removal. Deleting a deployment needs the
project.adminrole. Create it withalien api-keys create --for project-adminand use it only where removal runs. -
Pin the CLI version in CI. The CLI that runs
alien releasebuilds the artifacts, so an older CLI can ship artifacts without a fix you rely on. Install the versionalien --versionprints on your machine, and bump it together with your@alienplatform/*packages:
curl -fsSL https://alien.dev/install | sh -s -- --version <version>Initial setup
Initial setup is the one-time step the customer's admin runs in their account. If you built your own setup screen, run these checks through it instead of a setup link.
- Set it up yourself in a test account. You see exactly what the customer's admin sees, and you find permission and quota problems before they do. Create a setup link, the URL that opens the deployment portal (the setup page Alien hosts for the admin), and then:
- Open the link in a private window.
- Run initial setup in a test account on each platform you offer.
- Release an update.
- Remove the deployment.
- Offer only what you tested. Restrict the link's platforms and setup methods to the ones you ran end to end, set
maxDeployments, and set an expiry. See Setup links. - Brand the portal. The admin should see a branded portal on your domain, and your renamed setup CLI. See White-label.
- Decide the telemetry setting. The customer chooses Automatic, Approval required, or Off per deployment. With Off, Alien collects no logs from that deployment, so agree on how you'll debug it before it goes live. See Logs and metrics.
- Keep the link while its deployment exists. The customer's stack uses the link's token when it's deleted. Revoke the link only after the deployment is Deleted.
Releases
- Release to a canary channel first. One bad release then reaches a few deployments, not all of them. A channel is a pointer to a release that deployments follow. Point your own or a few friendly deployments at
canaryand promote toproductionafter they're healthy. See Staged rollout. - Gate CI on the rollout. A published release isn't a deployed one. Run
alien deployments wait <deployment> --for readyafter each wave. It fails at once when the deployment settles on an older release, for example when the release waits for initial setup. - Add health checks to Containers. Alien replaces replicas one at a time and waits for each replacement to be healthy. Without
.healthCheck(), a replica counts as healthy as soon as it starts. See How replicas are replaced. - Know your rollback. Write down the command before you need it:
alien releases promote <previous-release> --channel production, oralien deployments pin <deployment> <release>for one deployment.
Monitoring
- Get alerted on status. A failed update keeps the previous release serving, so nobody notices unless you watch status. Subscribe to
deployment.failedanddeployment.heartbeat_lostwith webhooks, and pick a Slack Monitor Reports Channel for rollout reports (see Slack). - Check your own health signal too. Running means the last update finished, not that your service answers. Call your service from where your product calls it, and treat a missing heartbeat as "not connected", not "down". See Deployment status.
- Forward logs to your tool. Your on-call already watches it. Open Settings → Integrations and choose Datadog, Coralogix, Axiom, or Custom OTLP. See Forward logs.
- Practice the first look. Run
alien deployments get,alien deployments events, andalien logsagainst a staging deployment so the commands are familiar. See Debug a deployment.
Customer's admin
- Name who contacts the admin. Some fixes need the customer: rerunning initial setup for a held release, raising a quota, approving an access request, deleting the setup stack. Decide who on your team reaches out, and keep an admin contact for each customer.
- Tell customers before a change that needs initial setup again. A release that adds, changes, or removes a frozen resource or needs new permissions waits until the admin reruns initial setup. Keep these rare, and announce them. See Held releases.
- Agree on approvals. On Kubernetes, the customer approves debug sessions and some Remote Operator operations. Agree on where approval requests go, for example a shared Slack channel. See Access requests.
Removal
-
Test removal before launch. Deleting your own database row leaves the deployment running in the customer's account. On a test deployment:
- Run
alien deployments delete <deployment>. - As the admin, delete the setup stack.
- Confirm the status reaches Deleted.
See Remove a deployment.
- Run
-
Tell the customer what stays. Frozen resources, final volume snapshots, and anything initial setup didn't create stay in their account until they delete them.