Migrating from AWS to dedicated servers allows you to reduce infrastructure costs by 5–10 times: a project with a $1,000/month budget on EC2 instances and an RDS database can be moved to a single powerful physical server costing $120–180 without losing performance or reliability.
Why migration from AWS to Dedicated saves up to 80% of the budget?
The main reason for the high cost of AWS is the markup for abstraction and "hidden" fees that are difficult to predict. When a project grows out of the MVP stage, cloud services start consuming the budget disproportionately to traffic growth.
Aws cost reduction when switching to dedicated hardware is achieved not only through the rental price but also by eliminating charges for every gigabyte of traffic, every disk request (IOPS), and every hour of load balancer operation.
Hidden billing traps of AWS
In AWS, you pay for everything. For example, a NAT Gateway costs about $32 per month just for existing, plus $0.045 for every gigabyte transferred. If your backend actively communicates with external APIs or downloads updates, a NAT Gateway can generate hundreds of dollars in unnecessary expenses. On a dedicated server, NAT is configured for free via iptables or nftables.
The difference between vCPU and physical cores
EC2 instances (except for bare metal series) use vCPUs—these are threads (hyper-threading) on shared physical processors. If your hypervisor neighbor starts getting "noisy," your application's performance drops (CPU Steal). On a dedicated server, you get 100% of the processor resources. An AMD Ryzen 9 7950X processor on a dedicated server delivers 3-4 times more performance per thread than a standard m5.xlarge instance, while costing less.
For those looking for more economical options for small backends, there is an AWS EC2 alternative for backend, where you can reduce costs even at the stage of using virtual servers.
Case 1: SaaS platform — from $800 on AWS to $120 on a dedicated server
A typical SaaS project on AWS often consists of 3-4 EC2 instances (t3.large), an RDS database (db.t3.medium), Redis in ElastiCache, and S3 for file storage. Add to this an Application Load Balancer (ALB) and traffic fees. On average, such a stack costs $750–900 per month.
SaaS project resource analysis
- EC2 (App layer): 3 nodes with 2 vCPUs / 8 GB RAM — $150/mo.
- RDS (Database): Multi-AZ, 2 vCPUs / 4 GB RAM — $200/mo.
- ElastiCache (Redis): $60/mo.
- Traffic (Egress): 5 TB — $450/mo.
Solution on Dedicated
Instead of a scattering of weak instances, we took one server with an Intel Xeon E-2388G processor, 64 GB RAM, and 2x960 GB NVMe. All components (App, DB, Redis) were packed into Docker containers. Thanks to the excess RAM, the database started working faster because most of the indexes now fit into the RAM (Buffer Pool).
Total cost: $120/mo. Savings: $680/mo or $8,160 per year. At the same time, the performance overhead increased 5 times.
Looking for a reliable server for your projects?
VPS from $10/mo and dedicated servers from $9/mo with NVMe, DDoS protection, and 24/7 support.
View offers →
Case 2: E-commerce project — how to lower the bill from $2,000 to $250
Large online stores on AWS suffer from the cost of EBS storage and traffic during sales. In our case, the project used C5 series instances for high computing power and RDS Aurora.
Aws migration in this case was motivated not only by price but also by disk subsystem latency.
Performance issues in the cloud
In AWS, EBS (Elastic Block Store) has IOPS limits. To get 10,000 IOPS, you have to pay for Provisioned IOPS, which sharply increases the bill. On a dedicated server with NVMe drives, you get 500,000+ IOPS "out of the box" at no extra cost. For an e-commerce database, this means instant category page generation and fast search.
Configuration comparison for E-commerce
| Parameter |
AWS (c5.4xlarge + Aurora) |
Dedicated (AMD Ryzen 7950X) |
| Processor |
16 vCPU (Shared) |
16 Cores / 32 Threads (Dedicated) |
| RAM |
32 GB |
128 GB DDR5 |
| Disk System |
EBS (Limited IOPS) |
2x1.92 TB NVMe (Enterprise) |
| Traffic |
Paid ($0.09/GB) |
Unlimited (1 Gbps) |
| Total Price |
~$2,100/mo |
~$240/mo |
For projects that fear blocks or payment difficulties, it is important to consider a Hetzner alternative, as European low-cost providers often require verification that is difficult to pass.
Technical plan: how migration from AWS happens step by step
Successful
migration from aws requires preparation. You cannot simply transfer an AMI Snapshot to a dedicated server directly, as an AMI is a proprietary image format for the Xen/KVM hypervisor in the AWS environment. The process is built on transferring data and configurations.
Step 1: Preparing the target server
Install a clean OS (Ubuntu 22.04/24.04). Set up basic security: SSH by keys, UFW, fail2ban. If you used AWS RDS, you need to install MySQL/PostgreSQL locally or in Docker.
# Example of basic firewall setup
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
Step 2: File synchronization
Use rsync to transfer static and user files. This is more efficient than downloading archives.
rsync -avz -e "ssh -i key.pem" --progress /var/www/html/ ubuntu@new-server-ip:/var/www/html/
Step 3: Database transfer
For small databases (up to 50 GB), mysqldump or pg_dump is sufficient. For large databases, it is better to set up replication (Master-Slave), where AWS RDS will be the master (via External Master) and your new server will be the slave.
If you used AWS Lightsail, the process will be similar but with fewer network settings. Read more about moving from simple clouds in the article how to move from DigitalOcean: snapshots, DNS, smooth cutover.
What to give up when moving: RDS, ALB, and CloudWatch
The process of
leaving aws is about giving up "convenient" services in favor of their open-source alternatives. Many fear losing Managed Database (RDS), but on modern hardware, DB administration has become easier thanks to automation tools.
Replacing AWS RDS
RDS provides automatic backups and patching. On a dedicated server, this is replaced by a combination of cron + restic (for backups to S3-compatible storage) and unattended-upgrades for OS security. The performance of a self-hosted PostgreSQL on NVMe will be higher than RDS on the same resources due to the lack of EBS network latency.
Replacing Application Load Balancer (ALB)
ALB in AWS is expensive and has configuration limits. Nginx or HAProxy on a dedicated server handle this task better. You get full control over headers, caching, and routing rules.
# Example of simple proxying in Nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Replacing S3 and CloudWatch
- S3: If you need object storage, use Minio on your server or switch to cheaper S3-compatible services (Backblaze B2, Wasabi).
- CloudWatch: Replaced by the Prometheus + Grafana stack. This provides more detailed monitoring with a 1-second polling frequency, while free CloudWatch provides 1 or 5 minutes.
When choosing a new provider, it's worth comparing offers. For example, OVH Eco vs Valebyte is a great comparison for those looking for a balance between price and reliability in Europe.
Safe cutover: minimizing downtime during the move
The most critical moment of an
aws to dedicated migration is the DNS switch. To avoid data loss and minimize downtime, follow a smooth switching strategy.
Switching algorithm
- Reduce TTL in DNS records to 300 seconds (5 minutes) 24 hours before the move.
- Put the application on AWS into "Maintenance" mode (Read-only).
- Perform a final database dump and file synchronization.
- Deploy data on the new server.
- Check site operation via IP or temporary domain.
- Change A-records in DNS to the IP of the new dedicated server.
For projects requiring maximum availability, you can use Nginx on the old server as a reverse proxy that will redirect traffic to the new IP while DNS caches update worldwide.
Alternatives and long-term strategy after leaving AWS
After completing the
aws migration, you will notice that the fixed cost of the server allows for better budget planning. No more surprises at the end of the month due to traffic spikes or bot attacks.
Choosing a location and provider
When choosing a dedicated server, it is important to consider connectivity with your audience. If your users are in Europe or the CIS, servers in the Netherlands or Germany will ensure minimal ping. Unlike AWS, where traffic between regions is expensive, many dedicated server providers offer 100 TB or complete unlimited.
Scaling on Dedicated
If one server is not enough, you can rent a second one and set up a Private Network between them. This will allow you to move the database to a separate machine, mimicking the AWS structure but at a fraction of its cost. For small auxiliary tasks, you can use an AWS Lightsail alternative to avoid overpaying for management infrastructure.
Conclusions
To save $500–2,000 per month, it is optimal to move the load from AWS to dedicated servers with NVMe drives and modern processors (Ryzen 9 or Xeon E-series). The main savings are achieved by refusing to pay for traffic and switching from virtual vCPUs to real physical cores, allowing one server for $150 to replace cloud infrastructure costing $1,000.
Ready to choose a server?
VPS and dedicated servers in 72+ countries with instant activation and full root access.
Start now →