Client: Power IT S.R.L.
Legacy Java platform modernization
Modernizing a 10,000+ LOC legacy Java application: 400+ classes refactored, environments standardized in Docker, and a national registry integration added.
Context
A long-running Java platform for the Moldovan wine industry, carrying years of accumulated change and the business processes that depend on it. The work ran for nearly three years, alongside the platform staying in service the whole time.
What made it hard
Legacy systems resist change for structural reasons. There is rarely a test suite to tell you whether a refactor was safe, the environment setup lives in the heads of whoever has been there longest, and every module has a reason for being strange that is not written down anywhere. None of that can be fixed by a rewrite when the business is running on the thing you would be rewriting.
What I built
- Refactored 400+ Java classes across a 10,000+ LOC application
- Standardized local development environments with Docker
- Built a new reporting module
- Integrated the national cadastral registry API
- Performance work on core services
Results
- p95 latency down ~32% on the three hottest endpoints
- List, cart and checkout, measured in APM on live traffic — the week before the release against the week after. GET /orders went from 820 ms to 560 ms at p95. The cause was specific rather than general: an N+1 removed, a composite index added on (user_id, created_at), and reference data moved into Redis behind a 5-minute TTL.
- Developer onboarding from ~2 days to ~3 hours
- Timed from cloning the repository to the first green test run, across three new developers. Previously ~2 days of manual setup following an outdated README; afterwards `docker compose up`, seed data, and a rewritten README.
Stack
- Java
- Spring Boot
- Spring Security
- Hibernate/JPA
- Docker
- Redis
- SQL
- JUnit