Magento 1.8 – Using AWS for Hosting Magento

amazon-web-servicesmagento-1.8varnish

I am considering a migration over to AWS for my Magento instance since I have been told that it is the best solution for handling high traffic volume and huge catalog 100, 000+ products.

Could anyone recommend how to go about the migration over to AWS please?

I have found this link to their page but wanted to make sure that I am signing up for the correct service with the right configuration including Varnish cache beforehand…

I would really like a step by step guide to the process if its not too much trouble. Is it as simple as a regular migration from a shared host or dedicated server?

Any advice will be much appreciated!

Best Answer

You've been advised poorly.

Remember that AWS doesn't do infinite scaling miracles, its just a virtual server provider

AWS is nothing more than a set of virtual servers, running in a contended, shared environment. Coupled with the fact it runs older generation hardware, that has its resources crippled by the AWS hypervisor - its performance is less than stellar if speed is important.

Its multi-tenant, so your performance isn't guaranteed

What you need to understand is that AWS is an entirely multi-tenant environment - from the physical hardware, to the internal networking, to the external networking. The performance you see will be heavily influenced by activity from other users of AWS. So you could have moments of "normal" performance, followed by catastrophically slow performance. You could opt for enhanced/clustered networking - but it is still effectively a public network performing a balancing act with QoS/CoS to try and improve latency/bandwidth to some users whilst limiting it for others.

Underlying hardware is a gamble of old technology

Also consider that you really have no idea what hardware your different instances are sat on. Some may benefit from newer generation CPU's, others significantly older - it is effectively pot luck as to what you get - and computationally how one instance may perform compared to another.

Scaling traffic isn't that easy, you'll hit a vertical ceiling almost instantly

In terms of handling high traffic, you are talking scalability, and AWS is constrained there too. You can only effectively scale horizontally. The capacity to scale vertically is limited to 32 cores - which is going to cripple any efforts to scale vertically.

But you can almost infinitely scale horizontally

So at this point, horizontal scaling is your only mechanism. Once you start scaling horizontally, you've got to add in considerations for

  1. Load balancing
  2. Shared/common storage
  3. Availability

... and worrying about the fact that with each additional instance you run, the risk of failure is amplifying by as much. So high availability must then be built into your service.

When scaling horizontally, you are also back to the common bottleneck of contented networking. So whilst you can spin up infinite instances for load balancing, web servers, db servers and cache servers - your baseline performance will be dominated by the low communication speed between said instances.

AWS isn't that cheap

Once you dig into the costs of "the cloud", you'll suddenly realise that you're actually paying close to 2x or 3x as much you actually would for a dedicated server. Now this is for a reason, you can create/destroy instances on a whim - so you are paying a premium for the flexibility of reducing cost.

But your, and many others', main reason for looking to use cloud hosting is to have infrastructure that will support your growing business, this means that your business is growing (or plans to),

Ie. the plans are to outgrow the original VPS and you want infrastructure to support it

So now, the original premise of cost savings (but running only what you need) is effectively gone - and once your business has grown, and is using the extra resources that you wished for - you'll suddenly realise that you are actually paying about 3x as much as you would have been if you just opted for a dedicated box to begin with - not to mention, have significantly worse performance.

The burden of management, deployment and configuration is entirely on you

The very fact you are asking about setting up AWS is evidence enough that you shouldn't attempt this endeavour at all. At best on AWS, you'll get an average performance Magento store - at worst, you'll have a terrifically slow, unreliable store.

Don't expect any support from Amazon - not even email support. You are limited to community forums for help (which, if the worst is happening and you are losing sales (£££) by the minute, is costing your business significantly). You can opt for paid support, if you can afford the costs (read: not cheap) - but don't expect the person on the other end to be able to offer any application specific help for Magento.


My advice

There are plenty of capable Magento hosts out there that run specialised infrastructure designed to scale - and plenty of which who have experience with both high volume stores and large catalogue stores.

You would be mad to go it alone, especially if you think that your magic bullet resides in AWS's promise of infinite scalability.

Related Topic