Back to all work
● Production2023 - PresentState of Alaska / DEED

Migrating a legacy government portfolio to Azure without making the work feel fragile.

Alaska education systems depend on a constellation of long-lived .NET applications. The migration work is part cloud platform, part application modernization, and part operational discipline.

Role
Lead engineer
Team
3 devs
Scope
30+ systems
Window
Multi-year

§ 01Where it started

The portfolio includes legacy .NET applications, deployment scripts, databases, and operational knowledge accumulated over years of state education work. The directive was straightforward: modernize the stack, move infrastructure to Azure, and keep critical services reliable for the people who depend on them.

Treating the work as a single lift-and-shift would have created a brittle cloud copy of the same operational problems. The better approach was to build repeatable migration patterns, then apply those patterns system by system.

Migration projects succeed when the platform work becomes boring enough for the next system to follow the same playbook.

§ 02The approach

  • Modernize each application toward .NET 8 and current ASP.NET Core conventions.
  • Express infrastructure as reusable Terraform modules with environment-specific configuration.
  • Wire CI/CD through Azure DevOps with controlled promotion and repeatable deployments.
  • Use staged cutovers, monitoring, and rollback paths so service owners keep confidence.
.NET 8 App
App Service
Azure Front Door
CDN / WAF
Data Layer
SQL / private access
Terraform / Azure DevOps / Key Vault / Application Insights

§ 03What changed

30+
Systems in scope

Applications, repositories, pipelines, and databases moving from on-premise infrastructure.

.NET 8
Modernization target

Legacy .NET Framework applications lifted into current ASP.NET Core patterns.

IaC
Infrastructure baseline

Terraform-managed Azure resources, deployment automation, and repeatable environments.

The durable outcome is not just cloud hosting. It is a platform baseline: secrets management, infrastructure as code, deployment automation, observability, and accessibility practices that new and migrated systems can inherit.

§ 04What I would repeat

The most useful work is the documentation and automation that turns one successful migration into the next team member's repeatable path. Each decision that becomes a module, pipeline template, or checklist reduces the amount of institutional memory needed for the next application.