intercity / intercity-next

Web control panel to deploy apps on your servers (with Dokku)
https://intercity.io/
MIT License
116 stars 23 forks source link

Migrating from Heroku #210

Open beydogan opened 8 years ago

beydogan commented 8 years ago

A migrator tool from Heroku would be really handy for people who wants to leave Heroku. I haven't check if this can be done via Heroku API but we can discuss this.

I think it will make easy to onboarding new IC users.

jvanbaarsen commented 8 years ago

@beydogan The first step for this would be a feature where you can import database exports. That way it will make switching from another provider to us a lot easier.

Via this feature, people can make an export from their Heroku PG. And then just upload the file in the IC interface (When they have the PG plugin enabled for their server).

When I'm typing this, I also realise that this implies that we rework the Plugin system. Since some plugins gain extra behaviour.

What do you think about this approach?

beydogan commented 8 years ago

@jvanbaarsen Exporting and importing through IC interface make things easier but still has overhead for people just want to try out IC quickly.

I think most Heroku users are a potential IC user too, so we can do something specific for Heroku. One click migration from Heroku to IC might be a great future but i'm not sure if its fully doable.

I was thinking something like this;

Then IC;

What do you think about this?

When I'm typing this, I also realise that this implies that we rework the Plugin system. Since some plugins gain extra behaviour.

I haven't checked the Plugin system in IC, i will check it out and reply :)

jvanbaarsen commented 8 years ago

@beydogan I think the following parts can be done with relative ease:

1) Creating the app 2) Sync env vars 3) Sync domains

Without knowing anything about the Heroku API, we might be able to do the following for the database: 1) Assume user is running Postgres 2) Link the Postgres plugin to the app (And install it on the server if it was not already installed) 3) Export the database from Heroku 4) Import the database in our system

Adding supported plugins will be hard at this time I think. So I would propose to do that afterwards. Let's try and break this up in small updates. So we don't have to ship one massive thing :-)

I can see the first step being: 1) Connect your Heroku account (Oauth info has to be configurable within the IC interface) 2) See apps you have running on Heroku 3) Select app to import 4) Create app in our interface

The next logical step after the above is implemented would be to work on syncing the ENV vars and domains in the creation step.

What do you think?

beydogan commented 8 years ago

@jvanbaarsen It looks good for me, I will have sometime to work on this in this and next week. We can worry about plugins later, as you said just assume user is using Postgres, that will cover most of the users.(for now)

So, I will start by Heroku Oauth integration and see how it goes. Will keep you updated.

jvanbaarsen commented 8 years ago

@beydogan Perfect! Let me know if you need any help :-)

retronoodle commented 7 years ago

+1 on the database import app. (for those coming from Heroku, as well as those not coming from Heroku, like me)

Consider the use case: You have a couple apps on your server, and one of them gets big, and you want to move it to another server including data.