With Coherence, it's easy to migrate your app from Heroku to AWS or GCP. You get the compliance, cost, customizability you want. And you can use your cloud credits too, especially if you're a startup. Coherence gives everything you loved on Heroku, like built-in CI/CD, Console access in the browser, and preview environments. And we add on some cool new tools like Workspaces and Velocity analytics.
Here's how you can migrate in just a few steps. You can watch a video of this whole process right here.
Connect Coherence to Github and AWS/GCP
Go to app.withcoherence.com, create an account, and create an application - following our simple onboarding flow.
Configure your Coherence application
Set environment variables
Copy over any environment variables. Similar to Heroku, managed resources like databases will have their variables automatically injected by Coherence and you don't need to copy over things like
REDIS_URL. See more on environment variables here.
Choose repo or UI for config
You can choose between managing your
coherence.yml file in your repo for a "gitops" style of working, or in our UI for more flexability.
Generate your Coherence.yml
With either approach, we'll help you generate a draft
yml file using our AI-powered agent. Just click the "Generate" button, edit as desired, and choose your config option. When editing your config, compare it to your Heroku
Procfile to capture the same commands in the appropriate places. See the video above for an example.
One commong thing to check that we call out in our
popular frameworks docs is the "Virtual Environments" or similar configuration for your language (e.g.
venv for python or
profile for ruby). You'll need to add this to the start of your command in
dev in the dockerfile when moving over from the
Procfile. One day we'll teach our GPT agent to catch this one consistently! You can skip this step if you're writing your own
Dockerfile - only applies if using
nixpacks, which is our equivalent of Heroku's
(Optional) Configure advanced features
Test your application, check out preview environments
Make sure your app works from end-to-end. You'll know best how to test your app but common things to check on the infra side are: static assets, database connections, workers/crons, and logging.
Migrate production, including any databases and DNS
This is the most complex and important part of the migration. Please get in touch with the Coherence team if you've got any questions - we're happy to help!
In general, here's the flow:
- Migrate data from Heroku to cloud while running in Heroku. This means no changes for your users or systems until you are all done with the migration.
- Connect to heroku DB: https://devcenter.heroku.com/articles/connecting-heroku-postgres
- Connect to cloud DB using Coherence instructions
- Migrate data from heroku to the cloud
- Schedule the DNS switch, warn users about possible downtime if you have an SLA. Do this at an off-hour if you can.
- Set up custom domain in Coherence UI, add the records, switch in your DNS provider's UI
- Do another data migration as per above to catch any data that got added between when the migration ran last and when the DNS propogated to everyone (can take up to 24h but is much quicker for most clients)
- Test system end-to-end, notify clients downtime is over if you messaged anything about interruptions
- All done!