Migrating Odoo From On-Premises to Cloud

Executive Summary
A small enterprise migrated its critical Odoo ERP workloads from a legacy on-premises server to a highly available, scalable architecture on AWS. By leveraging AWS Graviton processors (t4g), Aurora Serverless’s Scale-to-Zero capabilities, and flexible storage solutions, the organization reduced its Total Cost of Ownership (TCO) by nearly 50% over a 3-year period while achieving 99.9% availability and automated disaster recovery.
1. The Challenge: On-Premises Limitations #
Prior to migration, the Odoo deployment ran on a dedicated on-premises server.
- High CAPEX: Over-provisioned hardware (64GB RAM, 16 cores) to handle occasional peak loads, leaving resources idle 80% of the time.
- Single Point of Failure: A motherboard or power supply failure meant total ERP downtime until parts could be replaced (hours to days).
- Operational Toil: IT professionals spent ~10 hours/month on manual backups, OS patching, and hardware maintenance.
2. The Solution: AWS Cloud Architecture #
The new architecture prioritizes cost-efficiency without sacrificing high availability (HA).

Architecture Highlights: #
- Compute Strategy:
- Primary: 1x
t4g.2xlarge(ARM-based Graviton2) in Availability Zone 1 (AZ1). Covered by a 3-Year All Upfront Savings Plan for maximum discount. - Failover: An Auto Scaling Group (ASG) configured to launch an On-Demand instance in AZ2 only if the primary AZ1 instance becomes unhealthy.
- Primary: 1x
- Database Efficiency:
- Amazon Aurora Postgres Serverless: Configured with Min: 0 ACU and Max: 8 ACU.
- Impact: The database automatically pauses during nights/weekends (scaling to 0) and instantly bursts up to 16GB RAM equivalent (8 ACUs) during month-end close.
- Storage & Traffic:
- Amazon EFS: Stores the Odoo
filestore(attachments, images) and session data, allowing any instance (primary or failover) to mount the same data immediately. - ALB (Application Load Balancer): In public subnets; routes traffic to the private EC2 instance. Handles SSL termination.
- Amazon EFS: Stores the Odoo
3. Financial Analysis: 3-Year TCO Comparison #
These are estimates based on standard AWS US East (N. Virginia) pricing.
A. On-Premises (Baseline) #
A Single Server scenario which is risky but common among small enterprises.
| Expense Category | Item Detail | Type | Cost (3 Years) |
|---|---|---|---|
| Hardware | High-perf Server (32GB RAM, RAID SSDs) + UPS + Network Gear | CAPEX | $5,500 |
| Maintenance | Hardware AMC, Drive replacements, Battery replacements | OPEX | $1,200 |
| Power & Cooling | 24/7 Operation (~350W continuous @ $0.12/kWh + Cooling) | OPEX | $1,500 |
| IT Labor | 5 hrs/mo @ $50/hr (Patching, Backup checks, Troubleshooting) | OPEX | $9,000 |
| Offsite Backup | Cloud storage subscription or Tape rotation | OPEX | $1,080 |
| Total | ~$18,280 |
B. AWS Cloud (Implemented) #
Key Efficiency: The Savings Plan drastically cuts compute cost, and “Scale to 0” eliminates database costs during idle hours (weekends, holidays, etc.).
| Expense Category | Item Detail | Type | Cost (3 Years) |
|---|---|---|---|
| Compute (Primary) | t4g.2xlarge (Savings Plan, 3-Yr All Upfront) | CAPEX | $2,950 |
| Compute (Failover) | Buffer for occasional ASG health checks/patching (est. 50 hrs/yr) | OPEX | $50 |
| Database | Aurora Serverless v2 (Avg 2 ACU business hrs, 0 ACU off-hours) | OPEX | $3,600 |
| Load Balancer | Application Load Balancer (Hourly + LCU charges) | OPEX | $950 |
| Storage | EFS (Standard, ~50GB) + EBS Root Volume | OPEX | $900 |
| Backup | AWS Backup (Retention 30 days) | OPEX | $750 |
| Total | ~$9,200 |
4. The Results #
📉 Cost Reduction #
- Total Savings: ~$9,080 over 3 years (~49.6% reduction).
- CAPEX Shift: Shifted from heavy hardware refreshes to a lean, predictable 3-year upfront reservation.
🚀 Operational Wins #
- Automated “Sleep” Mode: Unlike the on-prem server which drew power 24/7, Aurora Serverless v2 stops billing for compute when no users are logged in (nights/weekends).
- Zero-Touch Failover: If AZ1 goes down, the ASG detects the failure via ALB health checks and launches the AZ2 instance. It auto-mounts the EFS drive, recovering the system typically within minutes without human intervention.
- Backup Confidence: AWS Backup provides point-in-time recovery. No more manual tape swaps or fears of corrupted local drives.
- Performance: The
t4g(Graviton) instances provide ~40% better price-performance for Odoo (Python-based) workloads compared to x86 legacy servers.