Logistics SaaS: On-Prem Data Centre to AWS in 10 Weeks
A logistics software company with 85 enterprise customers ran everything in a co-located data centre with a lease expiring in 12 weeks. We migrated 14 services to AWS without missing a single customer SLA.
The Challenge
The migration was non-negotiable - the data centre lease was ending. The technical challenges were significant: services written in Java 8, tightly coupled via internal IP addresses, an Oracle database with a 2TB schema, and no existing containerisation. The business challenge was harder: 85 enterprise customers on strict SLAs with change-notification requirements of 30 days minimum.
The Approach
We ran lift-and-shift first - get everything running in AWS exactly as it ran on-prem - then optimise. This minimised the blast radius of changes during the migration window. We used AWS Application Migration Service (MGN) for the initial lift, then incrementally replaced Oracle with Aurora PostgreSQL for two services after migration.
The Implementation
Migration planning and dependency mapping
We used AWS Application Discovery Service to map all inter-service network dependencies automatically. This revealed three undocumented internal API calls that would have broken in migration. We documented all 14 services, their ports, and their SLA requirements before touching anything.
Staged lift-and-shift with MGN
Using AWS MGN, we ran continuous replication from on-prem to EC2 for 3 weeks before cutover. Migration happened service by service over 4 weekends, starting with the two lowest-risk batch services and ending with the customer-facing API. Each service had a tested rollback plan.
Network and security baseline
On-prem services communicated over a flat network with no segmentation. In AWS, we built a VPC with private subnets per service tier, Security Groups replacing the flat network, and AWS PrivateLink for external integrations. CloudTrail and GuardDuty enabled from day one.
Oracle to Aurora PostgreSQL migration
After the initial lift, we migrated the two highest-cost Oracle service databases to Aurora PostgreSQL using AWS SCT and DMS. This eliminated $38K/year in Oracle licensing and improved query performance by 30% on the migrated services.
Key Takeaways
- Lift-and-shift first is the right call under time pressure - optimise after you are safely in the cloud
- Dependency mapping before migration is not optional - undocumented internal calls are the most common migration blocker
- AWS MGN continuous replication gives you a tested rollback path at every stage, which is what makes SLA-sensitive migrations safe
- Oracle to Aurora PostgreSQL migration pays back within 12 months for almost any database under 5TB
Facing Similar Challenges?
Book a free 30-minute audit and I will tell you what I see.