Industry: Industrial Automation / Manufacturing
Role: Backend Engineer & Consultant
Tech Stack: Java, Spring Boot, DDD, Vaadin, Docker, MS SQL
Author: Ugur Akcelik · Updated October 5, 2026

1. Operational Context & Challenge

A high-throughput factory automation facility relied on an established monolithic Java application to orchestrate production lines, track work-in-progress components, and generate critical engineering audit reports. Over years of operation, accumulated undocumented domain rules and tight coupling with legacy SQL schemas had made updates high-risk and slowed releases.

2. Monolithic Architectural Vulnerabilities

3. Incremental Modernization Strategy

Rather than attempting a complete rewrite, Ugur followed an evolutionary Domain-Driven Design (DDD) modernization path:

  1. Characterization Test Coverage: Wrote automated integration tests to lock down and verify existing complex calculation routines before altering code.
  2. Bounded Context Isolation: Separated Order Processing, Floor Monitoring, and Reporting contexts away from database details.
  3. Spring Boot & OpenAPI Migration: Transitioned monolithic routines into modular Spring Boot services with OpenAPI documentation.
  4. Docker Containerization: Implemented standardized Docker images, eliminating environment discrepancies across staging and plant servers.

Components and boundaries

The starting point was a Java monolith connected to MS SQL Server. The work separated order processing, floor monitoring and reporting logic from persistence details, moving routines towards Spring Boot modules with documented APIs. Docker supplied reproducible environment images. Defining a module boundary preceded moving it: changing frameworks without clarifying those boundaries would retain the coupling.

4. Technical changes and monitoring

Tests Existing behavior documented before refactoring
Modules Separation of orders, monitoring and reporting
Docker Standardized images for reproducible build and deployment environments

What the Naples-to-Turin ping measured

Monitoring used a ping command from Naples to a PC in Turin, observing response latency in milliseconds and network reachability. An ICMP response establishes that the destination responds to that check; it does not establish that reports are correct, transactions succeed or the production line is operating. Quantifying those outcomes requires application checks and production records with a defined observation window and failure criteria.

5. Engineering Takeaways

Modernizing legacy software that production depends on requires respect for existing business logic and disciplined architectural boundaries. Domain boundaries and tests help verify changes; operational continuity needs measurements suited to the actual process.

6. Frequently Asked Questions on This Project

What were the primary engineering constraints before modernizing this industrial software? ▾

The plant operated around the clock (24/7) on a monolithic Java backend tightly coupled to a legacy MS SQL relational database. Any production downtime would halt physical assembly lines, completely ruling out high-risk "Big Bang" rewrites.

How was operational continuity managed during the migration? ▾

Ugur documented I/O flows with characterization tests before changing the application. The new Spring Boot service and the monolith ran in parallel using the Strangler Fig pattern and Docker. Ping monitoring from Naples to a PC in Turin observed network reachability and latency; it does not establish application availability or production-line downtime.

Which technical changes does this project document? ▾

The project documents characterization tests, separation of business contexts, Spring Boot modules with documented APIs, and Docker images for reproducible environments. Ping latency is a network measurement; it cannot quantify report-development speed or production-line downtime.

Have a legacy Java system requiring modernization?

See our service for modernizing legacy Java applications, including assessment and incremental migration planning.

Explore Java Modernization Service → Request a Technical Evaluation

Let's discuss your project

Tell us what you want to build or improve: a business web app, customer portal, booking system or another business application. Kineto Soft will reply with an initial view of scope, price and timing in writing, usually within 48 hours.

📍
Location Turin, Italy
⏱️
Response Time Within 48 hours