Links

Migrate own App

Learn how to best migrate your app to Humanitec.

Introduction

Building your own Internal Developer Platform using Humanitec offers great benefits for both, you as a DevOps team as well as your developers using the Internal Developer Platform. One challenge to getting to these benefits is migrating your application(s) to the Internal Developer Platform. This section explains how to best tackle the migration step by step. It is based on the feedback from Hundreds of teams that already went through this process.

Sketch out the Infrastructure

Before moving anything it makes sense to sit down and sketch out the infrastructure you are using or want to use for your different environments. We have seen these steps work nicely for teams.
  1. 1.
    Create a list of all the Workloads that compose your App.
  2. 2.
    List all dependencies of your App by going through each Workload and identifying dependencies of the specific Workload (e.g., databases, exposed URLs, sidecar deployments).
  3. 3.
    Create a table that lists all the environment types you plan to have and all the dependencies you found. The dependencies will mostly be External Resources in Humanitec but there might be exceptions (e.g., sidecar deployments to connect with your monitoring tool).
  4. 4.
    Decide which infrastructure to use for each type of environment (e.g., GKE for Kubernetes, Google CloudSQL for databases) and mark which of this infrastructure already exists and which you will need to create.
The result of this first step will allow you to manage the other steps of the migration much quicker.
If you need with creating this infrastructure overview or want to go through the result to make sure that Humanitec supports all the infrastructure you need then please reach out to us and we are happy to help.

Create 1st Development Environment

Once you sketched out the infrastructure you need you can start with the migration process. We recommend starting by (re-)creating a development Environment for your App in Humanitec. This will allow you to check whether everything works before moving into more essential types of Environments such as Staging or Production.
The typical steps of creating your 1st development Environment are:
  1. 1.
    Connect the required CI pipelines to make the Images available in Humanitec.
  2. 2.
    Connect the required infrastructure (especially the Kubernetes cluster you want to use and the required databases). You might want to mock some of the Workloads for the beginning. That depends a lot on the structure of your App.
  3. 3.
    Assign the connected infrastructure to the Environment Type development. Note that this step is not mandatory since development is the default Environment Type in Humanitec but we still recommend making this connection explicit.
  4. 4.
    Create your App in Humanitec and add all required Workloads.
  5. 5.
    Configure all Workloads. Especially define Environment Variables, Secrets, and dependencies.
  6. 6.
    Run your first deployment and check whether everything is working as expected.
If you need help with setting up your 1st development Environment then please reach out to us. Our team is there to help.

Externalize Configuration

Once you managed to create your 1st development Environment in Humanitec it's time to look at your application configuration. In order to allow your developers to easily create new environments as needed, all environment-specific application configuration needs to be externalized. You want to make sure that developers can create new Environments that are completely separated from the Environment they cloned.
This step might be challenging and it typically involves the developers responsible for the individual Workloads. However, once you externalized all your environment-specific configuration the next steps are relatively easy.
If you need help with externalizing your application configuration then please reach out to us. We partnered with all major DevOps consultancies and are happy to make recommendations depending on your current setup.

Create all other Environments

Once you made sure that all of your application is externalized, you can go ahead and create all other required environments. Always start by adding the infrastructure and defining the Environment Type. Once that's done clone one of your existing environments and use the new Environment Type. Confirm whether everything is working.
Moving your Production environment to your Internal Developer Platform is probably the biggest step. We typically recommend creating a clone of your Production environment first, test everything, and then do a data migration.
If you need help with moving your Production environment to Humanitec then please reach out to us. Our team is there to help.

Invite the Team

If your application is running you might want to let your developers test their daily workflows with an Internal Developer Platform. Check the Manage Users & Permissions section to learn how to assign roles.