“We couldn’t find anyone else offering the combination of engineering time, on-call SLA, and infrastructure that Lithus provides. Instead of just migrating our infrastructure, they solved problems we’d been struggling with for months, without us having to hire additional staff.”
Keith Brink, Founder, PrepBusiness
The Situation
PrepBusiness (part of the Jasara group) is a Canadian SaaS company that provides warehouse management and logistics software for Amazon FBA prep centres around the world.
They were running on AWS with a mix of ECS, EKS, and RDS, and recurring 1 to 2 minute outages kept hitting customer-facing services without a clear cause. Their RDS instance was under-resourced, external contractors were handling their AWS maintenance, and the team did not have the observability tooling needed to see what was happening inside the database when requests timed out.
What We Built & Migrated
Dedicated bare-metal Kubernetes cluster
We deployed a multi-node bare-metal cluster in Germany running our full managed Kubernetes stack: RKE2, Cilium with WireGuard encryption and BGP routing, AES-256-GCM encrypted OpenEBS ZFS storage, and replicated Mayastor NVMe-oF volumes. The new cluster more than doubled their available compute and memory at the same monthly cost they were paying AWS.
15-minute database cutover from AWS RDS
We established a private network link between their AWS VPC and our cluster and configured live logical replication from AWS RDS into a high-availability PostgreSQL cluster managed by StackGres. PrepBusiness chose a weekend maintenance window for the final switchover, which completed in 15 minutes. The entire migration from contract signing to production go-live took 45 days.
Isolating the recurring 2-minute database lockups
The sporadic 1 to 2 minute freezes persisted after the migration, which showed us that the underlying AWS hardware was not the root cause. While we investigated, we used the spare capacity on the new bare-metal nodes to double the database’s CPU and memory allocation at no extra cost.
We used our observability stack (Prometheus metrics, Loki logging rules, and custom Grafana dashboards) to instrument the PostgreSQL layer over several weeks. The metrics showed that long-running application queries, PostgreSQL autovacuum, and scheduled business maintenance jobs were all running on the database at the same time. CPU usage stayed at around 20 cores during those windows, saturating the database so that customer web requests queued up and timed out after 30 seconds. Once we could see the overlapping loads in Grafana, we rescheduled the maintenance jobs and tuned the query patterns so they no longer competed with live traffic, which ended the outages.
“We were struggling to pin down an issue that would cause unpredictable downtime for all our customers. Lithus dug into it with us, built dashboards to help us observe performance across all our services, and ultimately isolated the issue so that we could push out a fix.”
Keith Brink, Founder, PrepBusiness
Consolidating a Second Cloud (DigitalOcean) at No Additional Cost
In 2026, Jasara was also running a high-throughput label-generation service (AZLabels, rendering hundreds of shipping labels per minute) on a separate DigitalOcean Managed Kubernetes (DOKS) cluster backed by DigitalOcean Managed PostgreSQL and Valkey. A DigitalOcean network blip severed their in-cluster NFS provisioner and caused a 12-hour outage where every web and queue pod hung in uninterruptible sleep while Kubernetes health checks still reported the pods as healthy.
Because their Lithus bare-metal cluster already had ample headroom, we worked with their engineers to move AZLabels onto the existing cluster at no additional cost. Together we removed the fragile shared NFS mount by moving cross-process handoffs to object storage, job status tracking to PostgreSQL, and render scratch files to fast pod-local NVMe storage (which also prevented a race condition where two workers could occasionally process the same render job twice). We added Redis Sentinel support to their Laravel application, verified and restored all 4.9 million rows of their PostgreSQL database onto StackGres, and cut DNS over to the Lithus cluster, retiring their DigitalOcean Kubernetes cluster and managed databases completely.
Alongside their production applications, we also run KubeVirt virtual machines on the cluster to host dedicated GitHub Actions CI/CD runners, and we have upgraded their PHP application runtime from the deprecated NGINX Unit server to FrankenPHP as part of their included engineering time.
Before & After
| Area | Before (AWS + DigitalOcean) | After (Lithus Bare Metal) |
|---|---|---|
| Infrastructure footprint | AWS ECS, EKS, and RDS plus a separate DigitalOcean DOKS and Managed DB stack | Multi-node dedicated bare-metal cluster running all 3 SaaS products side by side |
| Compute & memory | Under-resourced cloud instances at a fixed budget ceiling | More than 2× compute and memory on enterprise NVMe hardware at the same monthly spend |
| Database reliability | Recurring 1–2 minute lockups on AWS RDS with 30-second web timeouts | HA StackGres PostgreSQL clusters on encrypted NVMe with zero lockup outages |
| Label render pipeline | In-cluster NFS on DigitalOcean that caused a 12-hour D-state pod hang | Stateless pod-local NVMe scratch + object storage running on existing cluster capacity |
| CI/CD runners | Managed externally across cloud accounts | Self-hosted GitHub Actions runners inside KubeVirt VMs on the cluster |
| Operations & support | Ad-hoc external contractors with limited observability | Direct Slack channel with Lithus engineers, 24/7 on-call, and custom Grafana dashboards |
More case studies
We migrated XDI Systems from a $25,000 per month AWS setup to a 10-node bare-metal cluster with 200 Gbps storage and custom KubeVirt tooling, cutting costs by 45%.
Read case study →Futurepump: IoT TelemetryMoving from Google Cloud to dedicated bare metal cut dashboard analytics query times from 600ms to 300ms and has kept monthly costs flat for over two years.
Read case study →Talk directly with an engineer who runs production clusters.
- 1Book a 30-minute call with one of our engineers to walk through your current stack
- 2Optionally share a recent cloud bill so we can model your exact hardware and savings
- 3Receive a costed migration plan, a fixed monthly price, and a candid view on whether we are a good fit
Locked into a cloud contract right now? Ask us to check back in 3, 6, or 12 months →