Cloud Migration to Kubernetes: Lessons Learned from Government
Starting point: legacy J2EE on Oracle WebLogic
The situation is familiar in government and large shops: a business-critical application has run for years on an application server (here: Oracle WebLogic). Deployments take hours, releases are rare and risky, and the infrastructure is hard to scale.
The goal: move onto a container platform with Kubernetes without putting the running service at risk.
The migration strategy
Instead of a risky big-bang cutover we took it in phases:
Phase 1: Containerise
The first step was to containerise the existing application, still without Kubernetes. Same application in a Docker container, same behaviour as the WebLogic deploy.
Phase 2: Framework migration (J2EE → Quarkus)
In parallel we replaced J2EE-specific APIs with Quarkus equivalents. Quarkus starts faster and is built for containers.
Phase 3: Kubernetes deployment
Once containerised, the application went onto the Kubernetes platform (Rancher):
Phase 4: Monitoring and hardening
Outcome
Five lessons
1. Strangler fig works
Phased migration delivered value at each step and could be accepted separately.
2. Infrastructure as code from day one
Terraform was not negotiable. Every change went through review and was versioned. That stopped configuration drift more than once.
3. A service mesh is not a luxury
Istio gave mTLS, canary traffic splits and observability without touching application code.
4. Government compliance takes time
Security clearances, privacy reviews and acceptances take longer than in a startup. Plan for it. It can easily be 30% of the calendar.
5. Do not underestimate developer onboarding
WebLogic to Kubernetes is a paradigm shift. We booked internal workshops and pairing.
Close
Migrations in regulated environments work if you go in phases, pick the right tools and plan the organisational overhead. Kubernetes, Terraform, Helm and a mesh are the technical base. Success still hangs on handover and stakeholder communication.
If you are planning a cutover: the Kubernetes migration assessment is the written brief before you commit.
A call
30 minutes. If the use case does not belong in production, I'll say so.