Skip to content
Cloud migration · Google Cloud

Ecommerce API Migration — Heroku to Google Cloud Run

A Node.js ecommerce API estate moved off Heroku dynos onto serverless containers on Google Cloud Run, with a reproducible build, managed secrets and an identity per service.

Production RecordedClient ContributionCloud & Infrastructure
Overview

The application code was not rewritten. What changed was the deployment model: a Heroku buildpack and a dyno became a Dockerfile, an image in Artifact Registry and a Cloud Run revision, built by Cloud Build from a GitHub repository. Configuration that had lived as environment variables moved into Secret Manager, and each service was given its own IAM runtime service account instead of sharing one owner credential. The old estate kept serving while the new one was verified, so the switch was a DNS change with a revision to roll back to.

What EcomLabs did

  • Inventoried the running estate — processes, scheduled jobs, add-ons and every environment variable — before moving anything.
  • Containerised the Node.js services and wired GitHub to Cloud Build and Artifact Registry.
  • Moved configuration out of environment variables into Secret Manager, and gave each service its own IAM runtime service account.
  • Ran both estates in parallel, verified the new one, then cut over by DNS with revision rollback available.

Capabilities

  • GitHub to Cloud Build to Artifact Registry to Cloud Run, as one traceable path.
  • Secrets in Secret Manager rather than in a dashboard's environment tab.
  • One IAM runtime service account per service, scoped to its own job.
  • Health checks and revision-based rollback on every deploy.
  • A parallel run before the cutover, and a DNS switch that can be put back.

Stack

  • Google Cloud Run
  • Cloud Build
  • Artifact Registry
  • Secret Manager
  • IAM
  • Docker
  • Node.js
  • GitHub
  • Heroku
Related work

Related work

APIIn development

Private Document Upload API

Private document upload API built with Node.js and Express, handling multipart uploads to cloud storage with CORS and API authentication.

Private Client ImplementationAPIFile UploadNode.js
Let's build

Have a project in mind?

Tell us your goals and current setup — we'll come back with a clear, honest plan.