loading...
Cover image for  [ πŸ‡¬πŸ‡§ ] Move from an IBM Cloud account to another

[ πŸ‡¬πŸ‡§ ] Move from an IBM Cloud account to another

bzinoun profile image bzinoun Updated on ・2 min read

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

Dak'aa

The Gif below describe in visual way how we proceed:

migrationgif

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 ?

Posted on Dec 16 '19 by:

bzinoun profile

bzinoun

@bzinoun

Making stuff arround : Java - Cloud - Devops - Cloud Native - Architecture - Craftsmanship

Discussion

markdown guide