New Year Resolutions 2025
The lovely thing about a personal blog almost nobody ever reads is that you can use it almost like a diary. So I can use this post for personal encouragement and as a reference point throughout this year to check on my own objectives.
Context
In my day job environment, we have been building a cloud platform based on Microsoft Azure for a group of approximately 60 engineers developing applications used by more than 50000 daily active users.
This platform implements a Hub-Spoke Landing Zone model, multiple shared Kubernetes environments and by the end of this year a central API Management solution.
Growing Pains
Right now, the platform is developed and maintained using Terraform orchestrated by Terragrunt. When scaling the platform for a growing number of Landing Zones and solutions (services like Kubernetes, API Management, central Firewall), multiple limiting factors have been identified.
Modularization
Limiting ourselves to Terraform and the accommodating Hashicorp Configuration Language, we struggle with modularization (lack of central registry makes it hard to push updates to users).
Local Development Experience
In addition to that, tracing issues locally is hard without a local debugger and external dependencies that are only available when running from a central CI solution.
Also, automated linting, syntax validation and other programming features are afterthoughts in the world of Terraform leading to lack of consistency across an ever-increasing code base.
Deployment Speed
As of more, dependencies are modeled using Terragrunt Inputs effectively coupling multiple Terraform projects that were independent if there was a consistent configuration database available as a datasource. This setup increases deployment time by a lot.
Additionally, Terraform including provider downloads and initialization is potentially less performant than comparable IaC solutions.
Platform Objectives
Going forward, the platform should be migrated to Pulumi using the Python SDK. To improve on Deployment Speed and Local Development Experience, alternative deployment solutions like Dagger.io or the Pulumi Kubernetes Operator should be evaluated.
Personal Objectives and Resolutions
Applying a beginners mind, I want to use this blog as a learning tool to tackle challenges and issues that we face over the course of this years projects. By providing rather tactical fixes and solutions, the scope should be increased throughout this year working towards more global advice.