Skip to content
Back to Case Studies

Cloud Migration & Application Modernization for a Scientific Publisher

Migrating an acquired on-premise monolith to AWS microservices, re-architecting a data science module to absorb a costly Solr upgrade, and embedding with the operations team to drive adoption of an entirely new way of working.

Year

2024

Duration

8 months

Client

A Scientific Journal Publisher

Services
Cloud Migration
Application Modernization
Data Science Engineering
Cloud Architecture

The Challenge

A scientific publisher acquired an on-premise platform – a monolithic Java backend, jQuery frontend, and a data science module that operations teams used daily for precision and recall corrections. The v1 DS module was pure Java with zero external dependencies: it ran in under 2 minutes per user, fast enough for synchronous, UI-driven execution. But a planned v2 upgrade would bolt on Apache Solr for text-based feature extraction, ballooning runtime to 30+ minutes. Worse, the existing per-user session model meant each user would need a dedicated Solr workspace – prohibitively expensive at scale. The migration couldn't just lift-and-shift; it had to absorb v2's Solr dependency without inheriting its scalability problems.

Our Approach

  • Broke the monolith into independently deployable microservices on AWS – workspace management, application logic, and DS pipeline each got their own service
  • Replaced the jQuery frontend with React, giving the operations team a modern, component-based UI
  • Designed a shared workspace model to sidestep the per-user Solr problem: one shared Solr workspace for collaborative editing, one for production – 2 instances instead of N
  • Profiled and optimized the v2 DS module's Solr integration, cutting execution from 30+ minutes down to 15-20 minutes
  • Wired up AWS Batch to run the DS module every 15-20 minutes on the shared workspace, decoupling execution from the UI and eliminating always-on compute costs
  • Worked hands-on with the operations team to adopt the new shared workspace and async execution model – redesigning their daily workflows, not just the technology underneath

Architecture Transformation

Before
Architecture before migration – on-premise monolith
After
Architecture after migration – AWS microservices

The Process

1

Monolith Decomposition

Mapped service boundaries in the monolithic Java app and carved it into three microservices – workspace management, application services, and the DS pipeline – each independently deployable and scalable on AWS.

2

Frontend Modernization

Rebuilt the operations team's UI from jQuery to React, preserving all precision and recall workflows while unlocking modern state management and faster iteration.

3

Shared Workspace Architecture

The v1 DS module had no external dependencies, but v2 needed Solr. Migrating per-user sessions as-is would mean a Solr instance per user – cost-prohibitive. We introduced two shared workspaces instead: one where ops teams collaboratively tune precision and recall, and one production workspace where validated changes get committed. N instances collapsed to 2.

4

DS Module Optimization

Profiled the v2 module end-to-end, identified bottlenecks in the Solr integration layer, and applied targeted fixes to bring execution from 30+ minutes down to 15-20 minutes.

5

AWS Batch Scheduler

Set up AWS Batch to run the DS module on the shared workspace every 15-20 minutes (or on-demand when triggered). Compute spins up only when needed – no idle infrastructure. Results are immediately available to all users regardless of which data section they're working on.

6

Operations Team Adoption

Technology is only half the job. The shift from isolated per-user sessions to a shared, async model was a fundamental change in how the operations team worked day-to-day. We embedded with the team to redesign their workflows, walked them through the new collaborative model, and stayed through the transition until the new way of working felt natural – not just deployed, but adopted.

The Solution

We delivered end-to-end – from architecture to adoption. The monolith became microservices, jQuery gave way to React, and we re-architected the DS module ahead of its v2 Solr upgrade with a shared workspace concept: ops teams collaboratively tune precision and recall on a single shared Solr workspace, then commit validated changes to production. That collapsed infrastructure from N Solr instances to 2. We optimized v2 to run in 15-20 minutes (down from 30+) and plugged it into AWS Batch on the shared workspace. But shipping the platform was only part of the job. The move from isolated, synchronous, per-user sessions to a collaborative async model meant the operations team's daily workflows had to change too. We put ourselves in their shoes – embedded with the team, redesigned their processes around the new model, and stayed until adoption was second nature. Technology delivered and owned, end to end.

Impact & Results

50%

Faster DS Execution

~90%

Infra Cost Reduction

2

Solr Instances vs N per User

15min

Execution Cycle Time

Monolith decomposed into independently deployable AWS microservices

jQuery frontend replaced with a modern React application

v2 DS execution cut from 30+ minutes to 15-20 minutes

Shared workspace model: 2 Solr instances instead of N per user

Operations team shifted from isolated per-user workflows to collaborative shared workspace

AWS Batch eliminated idle compute with scheduled and on-demand DS execution

Embedded with the operations team to redesign workflows and drive adoption – not just deployment, but end-to-end delivery

Technology Stack

We've partnered with organizations across sectors, bringing industry-specific expertise to every engagement.

AWS AWS
React React
Python Python