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.
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.
Create a list of all the Workloads that compose your App.
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).
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).
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.
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
The typical steps of creating your 1st development Environment are:
Connect the required CI pipelines to make the Images available in Humanitec.
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.
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.
Create your App in Humanitec and add all required Workloads.
Configure all Workloads. Especially define Environment Variables, Secrets, and dependencies.
Run your first deployment and check whether everything is working as expected.
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.
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.
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.