AI Native WorkshopGo from AI experimentation to AI-native execution across your organization.
Heroku → Scaleway migration

Heroku to Scaleway in an hour.
Your data stays in Europe.

One command. An agent reads your repository and deploys it into the Scaleway project you already own - in EU data centres, outside US CLOUD Act reach.

No step is destructiveBoth stacks run in parallelHeroku stays up until you move DNS
your-app — qovery agent
$ deploy this project with Qovery
Scanning repository...
web Node.js 20 Dockerfile generated
worker Node.js 20 detected from Procfile
scheduler cron 2 jobs
database PostgreSQL 15 Heroku Postgres, connected remotely
Plan: 3 services, 1 external database, 12 environment variables
Nothing has been created yet. Approve to continue.
200+ companies run on their own cloud with Qovery4.8 on G2 · 80+ reviews
  • Talkspace
  • Alan
  • Powens
  • Prezi
  • Prosperity
  • Getsafe
We migrated our whole staging environment with a single prompt. Production was a one-click clone of staging. Once the tests gave us confidence we moved DNS off Heroku - we have been running production on our own cloud with Qovery ever since.
Miguel VictoriaSoftware Engineer, Sofive
We liked the Heroku experience, and we knew the cloud meant skills and effort we did not have spare - that is why we kept putting the migration off. We do not regret doing it with Qovery. Deployments that took me over two hours now take 30 minutes.
Kyle FlavinDirector of DevOps, RxVantageCase study →
How the migration runs

Three steps, then the agent does it.

Your side takes about five minutes. Everything after that is automated.

  1. 01

    An API key pair provisions the network and a Kapsule cluster in your own project - about twenty minutes, and nothing leaves your boundary. Qovery gets a role you can read, scope down or revoke. Talk to a migration engineer before you connect anything.

  2. 02

  3. 03

  4. 04

    Optional
In the Scaleway console
One API key pair, about twenty minutes.
network
your VPC, three fixed egress IPs
cluster
Kapsule, in your region
access
a role scoped to Qovery
10–60 min

From there it is automatic. Your apps come up running and live on Scaleway, reachable on a public URL - while the Heroku stack keeps serving traffic untouched.

What it costs

You pay Scaleway. Usually the lowest of the four.

Heroku charges you for dyno hours. Scaleway charges you for what you use, at European pricing, with a free Kapsule control plane where EKS bills per cluster hour. For teams leaving Heroku mainly on cost, this is usually the largest single reduction.

60%

Moving a workload off Heroku onto Scaleway usually cuts infrastructure cost - up to 60% for the same workload that was running on Heroku.

* Depends on your dyno counts and sizes, add-ons, data volume and region. A migration engineer will model your estate against the equivalent Scaleway shape before you commit to anything.

Specific to Scaleway

Why teams pick Scaleway over the three hyperscalers.

Scaleway is chosen for two reasons that have nothing to do with feature breadth: who owns the company, and how little arithmetic the pricing requires.

French-owned, so no US CLOUD Act exposure

AWS, Google Cloud and Azure are US-headquartered, which means data they hold can fall within the reach of the US CLOUD Act even when it is stored in an EU region. Scaleway is a French company operating EU data centres, so that particular exposure does not arise. For teams whose customers ask where the data lives and who can compel access to it, this is usually the whole decision.

Paris, Amsterdam or Warsaw

Every region is inside the EU. There is no configuration mistake that quietly places a replica or a backup on another continent, because there is no other continent available. Residency stops being a policy you have to audit and becomes a property of the provider.

Flat pricing, no commitment to model

The hyperscaler discount mechanisms - reservations, savings plans, committed use - all require you to forecast a year or three of consumption to reach a good rate. Scaleway publishes lower list prices instead, which for a team leaving Heroku means the cost comparison is a subtraction rather than a modelling exercise, and no one has to defend a three-year commitment to a CFO.
Qovery is not a PaaS

Our control plane. Your account, your bill.

Qovery sits above the infrastructure and never owns it. Every cluster, database and bucket is provisioned inside the Scaleway project you already hold - Scaleway invoices you directly.

  • We do not take a cut of your Scaleway spend. A flat subscription, whether your bill is $2k or $200k.
  • We push it the other way: idle nodes, oversized requests and preview environments left running get flagged so you stop paying for them.
  • Heroku and the PaaS successors run all of this in their account. Qovery runs it in yours.

Not sure which Scaleway services fit your workload? A solution engineer will map it with you.

QoveryCONTROL PLANE
deploymentsenvironmentspreview envsRBAC + auditcost signals
provisions standard Terraform and Kubernetes manifests
Your Scaleway project
invoiced by Scaleway, directly to you
VPC · your network policy
Kapsule clusterwebworkercronpreview-pr-482Managed PostgreSQLManaged RedisObject Storagesecrets
IAM: yours · data residency: yours · audit trail: yours

Stop paying Qovery and the stack keeps running - the manifests and qovery/qovery Terraform are already in your account.

Leave Heroku

Your first app on Scaleway,
live within the hour.

Paris, Amsterdam and Warsaw - EU-only by construction. Nothing you do here touches your existing Heroku stack until you decide to move the domain.

Frequently asked

Heroku to Scaleway

Something not covered here? Talk to a migration engineer - they have done this on estates larger than yours.

How long does a Heroku to Scaleway migration take?

First app live in under an hour. Full estates finish in days: one team moved 37 applications off Heroku in under two hours, and Sofive migrated its entire full-stack application and database from a single Cursor prompt. The pace is set by your data and your change windows, not by the tooling.

Will migrating disrupt our running Heroku apps?

No. Nothing in the process modifies or removes anything on Heroku. Both stacks run in parallel until you move DNS, and you can move it back.

Can Qovery migrate our Heroku Postgres database to Scaleway?

Yes. Under 100 GB migrates live with minimal interruption. Larger datasets use a replication-based cutover rather than a dump and restore. The database lands in your own Scaleway project on Managed Database for PostgreSQL.

Is Qovery a PaaS?

No. Qovery installs into the cloud account you already own. You hold the cloud bill, the VPC, the cluster and the audit trail - the control plane is ours, the infrastructure is yours.

Can Qovery run the migration for us?

Yes. A Qovery solution engineer will run it with you end to end, database included - discovery of your existing Heroku services, the deployment plan, the data migration and the DNS cutover. Teams usually take this route when production data needs a replication-based cutover, or when compliance requires the whole path documented.

What happens if we stop using Qovery?

Everything keeps running. Qovery generates standard Terraform and native Kubernetes manifests in your account, so the estate outlives the subscription.

Is our data guaranteed to stay in the EU?

Yes. Scaleway is a French company operating European data centres, and your workloads run in your own Scaleway project in the region you choose. Because Scaleway is not owned by a US-headquartered parent, EU data does not carry the extraterritorial access exposure that comes with the US CLOUD Act.

How does Scaleway compare to AWS on price?

Scaleway is generally the lowest-cost of the four providers Qovery supports, particularly for steady-state compute, and Kapsule control planes are free where EKS charges per cluster hour. The trade-off is a smaller managed service catalogue and fewer regions.

Does Qovery support the same features on Scaleway as on AWS?

The Qovery experience is identical: one command to deploy, preview environments per pull request, managed databases, role-based access control and a single audit trail. What differs is the catalogue underneath, which covers the large majority of what a Heroku application actually uses.

How does every Heroku primitive map to Scaleway?

On Heroku
On Scaleway
What changes
Web dyno
Kapsule pod on Scaleway Instances
Autoscales on real utilisation against Scaleway list prices, so the saving does not depend on committing to a one or three year term first.
Worker dyno
Kapsule pod in the same cluster
Long-running work without the 30-second router timeout.
Heroku Scheduler
Kubernetes CronJob
Real cron expressions instead of fixed ten-minute, hourly and daily buckets.
Heroku Postgres
Managed Database for PostgreSQL
Container mode for development, Managed Database for PostgreSQL for production - automated backups and failover, in an EU data centre, under a French provider.
Heroku Key-Value Store
Managed Database for Redis
Managed Redis, sized independently of the application and attached to your private network.
Add-on message brokers
a Helm chart in your cluster
Deployed by Qovery as a service inside your environment.
Bucket add-ons and file storage
Scaleway Object Storage
Same account and same IAM boundary as the workloads that read it.
Config vars
Qovery variables and secrets
Scoped per project, environment and service, with aliases and overrides instead of one flat list.
Review apps
Preview environments
One per pull request, created on open and shut down when idle.
Pipelines
Environments and deployment stages
Ordered stages with approval gates, promoting the same artifact.
Heroku router and SSL
a Scaleway Load Balancer with managed TLS
A Scaleway Load Balancer with managed TLS via Let's Encrypt, issued and renewed automatically.
Private Spaces
Your own VPC
You already own the private network. Security groups, VPC routing and egress are yours, and every byte stays inside Paris, Amsterdam or Warsaw.
Buildpacks
Dockerfile or Buildpacks
Both supported. The agent writes a Dockerfile if your repository does not have one.