One of the items that I am asked about frequently is what an appropriate infrastructure (server) foot print looks like for Magento Enterprise. This is a really tough one to answer quickly as there are many, many variables that impact this. That being said, I want to share a few guidelines about what you need to consider when specking out your environment.
For most merchants doing $5 million or more online in a given year, you should have start with the assumption that at a minimum, you’ll want two servers. One will be a dedicated database server and the second will be a web server. Magento Enterprise was designed to operate in this type of environment. While the web server can be virtualized, we recommend you consider having your database server setup as a dedicated device and don’t skimp on the memory. MySQL will consume and utilize every GB of RAM you can give it. MySQL can be greedy, and if you are running the database and web services on the same box, you will eventually run into performance issues as the two different ends of the site compete for memory and processor time. Also, if you’re catalog is going to exceed 10k SKUs, or if you are going to run multiple store fronts, you need to move your database to a dedicated host.
What’s the significance of $5 million in annual online revenue? I agree that it’s a little bit of an arbitrary number, but we assume at that level that your product catalog is reasonably large (7500 SKU’s or more), your daily site volume is reasonable and growing (1000 visitors or more per day), and that you are also integrated into a backend system such as an ERP solution, which actually adds processing overhead for each integration transaction, just like web visitor traffic.
The next question merchants of this size have is if they need multiple web servers. Our general rule of thumb is that you should assume the answer is yes, at least 2 web servers should be in place. Why? It’s not just about volume. Magento is fantastic at leveraging caching tools (and has some caching built into it, see our blog at http://levementum.com/interview-with-an-expert-russell-mantilla-talks-about-caching-in-magento-enterprise/ ). At a minimum, a second front end server allows you to distribute load while enabling caching to create scale for your bursts in traffic. More important than capacity though, having horizontal scale matters to avoid unplanned downtime is critical. Servers do fail, and even with great SLA response times (which you rarely get from your low end purely virtual cloud hosting companies), you don’t want to have a 2, 3, or 4 hour outages. Having a network load balanced front end gives you fault tolerance you need to not only avoid disruptions to order volume, but to ensure your brand is consistently represented.
For merchants under $5 million in annual revenue, you’re in a grey area. Our guidance is that if you have 10k or more SKUs, you need a dedicated database device. If you have 5k or greater (but less than 10k) SKUs, you need to look at your web analytics very carefully. Pay particular attention to response times and be sure to periodically browse your own site from multiple connections and device types outside of your office. If you refresh your catalog to update inventory often, or if you have a very high conversion rate and a lot of order activity being integrated to your back office solutions, you should at a minimum, begin planning for a two server environment. If you are using a 1 server environment, make sure you up the amount of RAM as high as you can; 36GB or more is not unreasonable. Also make sure you tune your MySQL engine carefully so it doesn’t take all resources away from Apache / PHP stack.
Infrastructure planning is not a cut and dry science. There are a number of variables that can impact it. But with a reasonable framework of questions to ask yourself, you can narrow the range of appropriate options down quickly and prepare an environment that will meet or exceed your needs.
Disclaimer: The company I work for is partners with several vendors - http://levementum.com/company-information/partners/