Cloud & Tooling Migration

Moving workloads and tooling without a weekend outage, including the migrations nobody writes a guide for because no official importer exists.

Who it is for
Teams moving off on-premises hardware, or off a tool they have outgrown, who want the cloud-native version rather than the same servers in a different building.
What you get
  • Workload migration to AWS or GCP
  • Source control migration
  • Artifact repository migration
  • CI runner fleet migration
What I need from you
An inventory of what runs where, and a window in which things may move.
Overview

What this is

Migrations fail when they are treated as lift-and-shift. Moving virtual machines to EC2 is not cloud-native, it is the same estate with a different invoice, and the team that inherits it has all the old problems plus a new bill.

The harder part is rarely the technology. On a source control migration the technology is a day; working out who owns each repository, from commit history and old Slack threads, is the month. I plan for that part explicitly, because it is the part that decides whether the cutover happens on the date you told people.

Capabilities

What you get

Workload migration

  • Assessment of what moves, what gets rebuilt and what gets switched off
  • AWS and GCP landing zones with accounts, networking and guardrails
  • Containerisation where it pays, and honesty where it does not
  • Staged cutover with a rollback that stays available throughout

Source control migration

  • Bitbucket, GitLab and self-hosted Git to GitHub, at organisation scale
  • Custom Go tooling where no official importer covers the case
  • Full commit history, tags and branches preserved
  • Repository ownership reconstructed from commit history and message archives
  • Permissions and team structure mapped rather than recreated by hand

Artifact and registry migration

  • Nexus and Artifactory to CodeArtifact, Artifact Registry or GitHub Packages
  • Checksum-verified transfer with a reconciliation report
  • Consumer cutover in stages, with both sources live during the overlap
  • Retention and cost policies set before the new one fills up

CI runner migration

  • Self-hosted VM fleets to managed Kubernetes runners
  • Autoscaling to zero between pipelines
  • Build caches that survive the move
  • Cost and queue-time comparison, before and after, measured the same way
Evidence

What I can show you

ICF is early, so there are no named client logos here yet. What there is: public code you can open and read, and work described without naming whose it was.

Approach

How I work

01

Inventory

What exists, who owns it, and what is already dead. The last category is usually larger than anyone expects and it is free to move nothing.

02

Dry run

The whole migration against a copy, timed, so the cutover window is a measurement rather than an estimate.

03

Staged cutover

In groups, with both systems live during the overlap and the rollback available at every step.

04

Decommission

The old system switched off deliberately, on a date, after the reconciliation report is clean.

Technology

Stack

AWSGCPTerraformKubernetesGitHubGitLabBitbucketNexusCodeArtifactGo
When to engage

Signs this is the work you need

A data centre contract ends and nobody has run the numbers

The official importer does not cover your case

Nobody can say who owns half the repositories

A previous migration stalled and left you running both systems

Related Services

You may also need

Is this the work you need?

Tell me what you are running and what is slowing you down. I reply within one business day, and I will say so if this is not work I should take.

Taking a small number of contracts