Its been a while but thought our use case would be helpful...
First + point on AWS.
We have a Dedicated Server at a well known host. It a huge spec, and been trying to run Magento stores for ages. We have tweaked and played with configuration in a manner that wont bring down the sites. Our host had not installed APC (before I started) so they installed it even though we paid them to build a Magento Server, brought our sites down for 3 hours with a broken PHP version. We managed to get it going again with a disabled APC.
in AWS We have an exact replica of all our AMI's (NGINX, NGINX+Varnish, Control Server) sat waiting on AWS that we can fire up and play with at any time. We can clone the EBS volume that our Vhosts data is sat on map some IPs to our VPC internal IP addresses, latch them to the server and be up and running in no time at all. Do our TEST make sure all is ok and make change to the LIVE system and shut down the replica until its needed again. At this point the changes we made to config, we clone into a new version AMI.
Second + point for AWS.
We hit an IP Address limit on our current Host.
In AWS We have any number of Internal VPC IP addresses and have allocated to our account 20 elastic external IP's that we can map to internal IP addresses. The Network features in AWS VPC are absolutely amazing. Its just unreal how they have packaged this up for low level network admins. It took 3 days to get some New IP Addresses on our host and added to their firewall.
This is where I give AWS another +
Backups on our current dedicated server are just a clone of a folder held on a backup vault. Basically a mounted drive. A mounted drive only available to that server. So in the case of a massive outage, we would have to get a new server setup, mount the backup store, install and configure our new server exactly the same way (big task), then recreate the data. Our host boast 4 hour turn around for new Hardware but that means nothing at all to me. Its getting the configuration and sites set back up.
Our business offers solutions to businesses for the whole web life cycle. Consultancy, design, SEO, support and maintenance. If we had an outage on our dedicated we would go out of business, because it would be days before we got on our feet again. We cannot have this scenario even on our what if map. It just cannot happen.
In AWS currently we have our web content on AWS Instances mounted on EBS Volumes at 750IOPS and a second Instance (what we call a control server) that Rsyncs the Data into another Availability Zone on schedule and updates an Instance for the latest config in case we need to fire up an Instance from that AMI. It rsyncs all NGINX configs, PHP-FPM setup files for this.
So now we have two sets of data; an AMI that's a clone of the production NGINX web server, and a copy of the Vhosts directory content with config files and Vhosts in case we needed to fire up a new server.
This is where AWS gets another +
Our Dedicated Server struggles at peak times. Yes we run Magento so it a little different from some apps. We have a Quad Core 32GB Raid Disk Setup and it struggles at times even has outages when a customer sends a email campaign or two do at the same time. We cant barely do anything. It has MySQL on it locally, its memory optimised for MYSQL but the disks are poor.
In AWS we run 3 High CPU instances. 2 NGINX/PHP-FPM Web Servers, plus an NGINX SSL + Varnish Cache Instance. We then have a smaller Magento Admin server that hosts all images and media that is then mapped via CNAMES through Cloudfront. This is all reserved instances to keep costs down.
We then have our databases in RDS on a 2000IOPS Large Instance that both the Web Servers connect to it that takes snapshots each night. With a little down time (we have maintenance pages for our stores) we can resize the IOPS and instance size. The best thing about RDS is we can take a latest snapshot and create a new DB for testing and development. Then shut down. Its just fantastic.
We use Elastic Cache + and now testing Redis for management of cache for the front end web servers. Again we can resize up and down.
We can add new Servers High CPU On Demand Instances (by cloning our NGINX frontend) into the mix with some manual work to help out at Xmas and if we need to when a customer tells us they will be sending a 100,000 strong email campaign selling of products with 75% discount.
We are now TESTING our auto scaling in Amazon and how we get servers to fire, add ip addresses, update NGINX configs etc and start working without issues but then to also take the server out and shut down during quiet times (nigh time).
AWS + +
Moving data on our dedicated is service disrupting. Copying, Rsync MV etc will hit the disks IO which in turn slows sites.
Using volumes and snapshots in AWS is just so easy. Don't really need to say anything here.
AWS +++++++
General Server management and control. There is actually no really visibility into our Dedicated Server. Its just SSH in and some really bad server report that our Host sends monthly.
AWS we can see stats that although are not fully accurate in my eyes on the applications performance, they do give you a good idea on how the actual Instance is working. We have alarms setup to detect issue.
Conclusion
*AWS vs Dedicated - Pure Power.*
For all the AWS Trolls I'm not saying or even going to try and say AWS will out perform a dedicated with two Quads, SSD loads of memory etc. Even AWS wont try and tell you this.
There are things you can do to up performance, EBS Optimised, IOPS provisioning and resize instances but I know that a pure bare bones dedicated will outperform.
AWS vs Dedicated - Architecture for a Proper Solution
Dedicated Servers sat in a lonely rack somewhere just wont cut it for me. This is not a real world situation or suitable as a solution in my eyes when providing businesses with a solution to run their stores or sites.
We have our whole server network in AWS VPC, we can expand, contract, see where all our resources are in one place. As a solution I would never want to move back to a Dedicated Server.
If I was running a site that could deal with a massive outage and we could wait to rebuild a new server with the host, or was willing to use two hosts or AWS as backup and move a site if a dedicated went down then this is the only way I would do this. This in itself is a time consuming issue.
Costs
The reason why Dedicated Servers are now so cheap is because AWS is offering cheap ways to manage your own mini data centre which is what many data centres used to add premium for. There is a shift in pricing and data centres now have to use slagging techniques against AWS to sell their services or shout about Raw Server power and lack of in some AWS instance types.
People who compare a dedicated Server to an AWS instance should really take into account all the extra services that AWS offer around that Server Instance and map that into a dedicated price. Let me expand. When leaving and giving notice on the contract to our current host they said AWS this, bad performance EBS costs etc etc. So we sent a solution map of what we wanted.
- Private LAN with security/routing policies and firewalls
- 20 External Ip addresses, with the ability to remap across servers on the fly or through control panel
- 4 servers with 8 Cores each with 16 threads
- 32 GB Ram
- Database Server with the ability to provide up to 10000 IOPS but generally about 2000IOP
- Point and Click Backups
- No Contract or just 12 months
Not only could they not do all this, they said if they could provide the software stack to do it our setup costs would have been around £10,000 plus monthly fees.
Dedicated Servers will outperform Clouds but this is a thing of the past now. You can see it in the marketing against cloud computing. Cloud computing is the full solution that bridges small business to having their own data centre. In my eyes and after setting many AWS solutions AWS is the business solution at the moment
I know when I buy an AWS Instance its not just the Instance, but all the kit attached to it. I know when I buy a Dedicated Server it really is just a server dumped in a rack with a cable attached.
I know £ for £ a dedicated server will be better than AWS, but for my customers and ACTUAL business needs AWS outweighs dedicated solutions massively