A few weeks ago, we had to move from an IBMCloud account to another , the cause was some enterprise constraints , you know the movie π€·βββ .
As IBMCloud doesnβt provide tools out of the box for it, our migration was based on our daily CI/CD pipeline! Wow π€¦βββ
Now, let's see what we need to move to the new Cloud:
β‘οΈ 30 CloudFoundry
β‘οΈ 10 PostgreSql
β‘οΈ 2 MongoDB
β‘οΈ 3 AppID (OPIDC)
β‘οΈ 4 domain names
Okey 49 assets to move, seems good.
Now we have seen the most asset we have, the idea is to use CI/CD pipelines for most of our deployments.
So, what's about our applicationβs pipeline:
- β Some applications are deployed with GitlabCI pipeline => should be OK
- β Some applications are deployed with IBMCloud Devops pipeline => which is not cloud agnostic
- β No Infrastructure as code for BDD, AppId ...etc. => Hmm manually provisioning ?
- β Data migration? all our assets have an API for import/export => it's should be OK.
We have some bad and good thinks, moving all that stuff with a minimal down want be the best way , so without too much thinking
π‘ Blue Green deployment is the best way
More about blue green deployment from Martin Fowler here
The Gif below describe in visual way how we proceed:
The process can be splitted to 6 steps describes as below:
Step 1 - unifying our deployment Pipeline by moving all our CI/CD pipeline to GitlabCI.
Step 2 - Move all non-production assets . As we are working in an agile mode we move the dev environment first then, when needed, staging , sandbox
Step 3 - Move the production assets, then data migration, then push the provisional production URL to the Business analyst / Product Owner for a Go/No GO
Step 4 - Once we have the GO -> Migrate the domain name from the legacy cloud to the New IBMCloud
Step 5 - Remove the death pipeline code , and remove the old assets from legacy Cloud
Step 6 Celebrate with the Team. π ππ π
So, without going too deep into details of every step , this how we do the work .
In the end, it's been not easy, and having a devops culture helps a lot and i can resume what we have learn :
1- we have to be cloud agnostic:
A toolchain must be a cloud agnostic. If we want a change our
deployment strategy, it must me smooth.
2 - Devops culture is a must
The pipeline source must be versioned, involved with the code source. The dev Team is the owner of the pipeline
3 - Start Easy
Dev environment first, as we work on agile , the other environments will be deployed in an iterative and incremental way
4 - If itβs hard manually, then script it .
Special attention to the Data migration for every type of asset. ( AppId , SQL , NoSql , Cloud object Storage β¦etc )
That's all folks, and how will you do in the same situation ?
Top comments (0)