Experiences from large project maintenance at the Norwegian tax authority
summary
A national taxation system of over a hundred services turns into a maintainability problem after a 2014–2018 JVM rewrite leaves 70→~20 developers and a half million-line homegrown framework that nobody fully understands. Migration replaces that framework by Spring Boot starters, modularizing integrations and enabling per-service upgrades across ~1,000 services bundled into 100 apps. Choices include ditching Kotlin/Groovy/Lombok for Java 17, standardizing on Postgres/Oracle, running monthly full recomputations to diff tax outputs, and storing 12 TB in one Oracle instance to speed ops and auditing.
AI-written summary · about
chapters (23)
- 0:00Introduction to Norwegian taxes
- 2:00The taxation process
- 4:37Legacy system and team
- 6:27Development practices
- 8:26Technical debt and challenges
- 10:06Event-driven architecture
- 11:26Technology stack evolution
- 12:26Homegrown framework issues
- 16:19Framework modularization
- 19:30Implementing spring boot
- 21:04Local development and tests
- 24:19Event and task handling
- 27:44Migration strategies
- 29:07Human resources and teams
- 31:28Tech stack simplification
- 34:06Strict coding standards
- 35:40Managing yearly releases
- 37:56Production data access
- 39:13Security and auditing
- 41:08Internal admin tooling
- 42:31Quality assurance processes
- 43:28Final lessons summary
- 45:30Q&A session
related talks
52mFrom Monolith to Microservices at the Tax Authority
55mModernizing Legacy Code - While Not Bringing Down Prod
52mEscaping Developer Nightmares
50mModern Java microservices in the Cloud
53mSolving technical debt of a microservices architecture
40mGrowing Pains: Scaling and Re-architecting Apps Under Fire
35mA Reactive Architecture Approach for a Tax Information System Modernization
48mLegacy, for lack of a better word, is good
