Automated releases for a product team — Nord Studio
Case study · 2024

Automated releases for a product team

A Montréal product team was shipping by hand: every release tied up a senior dev for two or three hours, and every release brought surprises. We rebuilt the pipeline end-to-end, from commit to production.

B2B SaaS6 weeksMontréal (remote)
2h → 8min
Release time
1×/wk → daily
Release cadence
12 → 0
Manual steps
< 2 min
Rollback time

Every release followed a twelve-step Google Doc. A senior developer blocked two to three hours, watched the database migration by hand, tailed logs, and crossed their fingers. Deploys went out on Tuesdays because nobody wanted to risk a Friday.

Code and infrastructure drifted slowly. Three IaC tools coexisted (legacy Terraform, shell scripts, the AWS console). Nobody knew which config was the source of truth. Staging and production diverged silently until the next incident exposed it.

The breaking point: a one-line bug fix for a customer took two days to ship because no fast path existed. The customer had churned before it landed.

We deployed on Tuesdays because nobody wanted to deal with a broken Friday night.

Lead developer
  1. 01
    Full GitHub Actions pipeline
    Lint, unit tests, build, Playwright e2e, deploy. Four parallel jobs, fail fast. The same pipeline runs on every pull request before merge — nothing lands on main without clearing the gates.
  2. 02
    Per-PR preview environments
    Every pull request gets its own environment (unique URL, fresh database, seeded data). Code review happens on real product, not screenshots. Auto-destroyed when the PR closes.
  3. 03
    Unified IaC with Pulumi
    Migrated the three previous tools into a single Pulumi + AWS CDK codebase. One source of truth for networking, secrets, databases, certificates. Diffs visible in every PR before they apply.
  4. 04
    Datadog dashboards and alerts
    Per-service dashboards, alerts wired directly to deployments (auto-annotated on the timeline). When a metric drifts after a release, the team knows which commit to blame in fifteen seconds.
  5. 05
    One-click rollback
    A manual GitHub workflow that redeploys the previous version. Tested weekly via a chaos drill. Measured rollback time: under two minutes from click to green healthcheck.
GitHub ActionsPulumiAWS CDKDatadogDockerAWS

Releases went from two or three hours a week to about eight minutes — with nobody watching the screen. Cadence went from weekly to several deploys per day. Fridays went back to being regular days.

The senior dev who used to babysit deployments got a full day per week back. The team ships urgent customer fixes in under an hour. Zero configuration-drift incidents since the migration.

We shipped an urgent fix in twelve minutes last week. Six months ago that was a two-day job.

Lead developer
  • Preview environments are the unlock — code review turns into product review.
  • One IaC tool, not three. Pick one and live with the tradeoffs; cheaper than juggling.
  • Wiring alerts to deployments turns a passive dashboard into an active alarm system.

A similar project? Let's talk.