One of the most common engagements Magento's Expert Consulting Group (ECG) has is that of the Performance Review. Issues around performance and scalability are, more often than not, the driver for customers to seek ECG's assistance when doing implementation assessments.
The reason for this is no secret. Magento is a full featured application and framework, and that expandability does come at the cost of performance, and the decreased performance, though easily justifiable from a development cost perspective, does have an impact on customer interaction and retention.
Oftentimes many of these issues can be minimized through a good understanding of the components that are used to support Magento and how Magento interacts with them from an infrastructure's point of view.
One of the ways we work with customers is through our training program, and a good course to help you wade through the ins-and-outs of Magento is the Magento Performance & System Optimization for System Administrators course offered by Magento U. Most of our courses are aimed at developers learning how to make customizations to Magento, whereas the purpose of this course is to give sysadmins the information they need to help them work with Magento in high-performance, scalable environments.
There are several core topics that we look at in the class:
Load Balancing and High Availability
While these are two distinct concepts, often their implementation is tied together. But there is more to high availability than just adding another server and more to scaling Magento than simply adding more servers beyond that. Understanding some of the different options available for both load balancing and high availability can definitely have an impact.
Everyone knows that Magento uses MySQL, but many people do not know how to tune MySQL for Magento's use, or often which parameters will yield the most benefit. MySQL is not the only service that Magento uses. Caching plays a big part in how Magento works and there are multiple different caches that can be implemented. And while the web server is a given, understanding the differences between how different web servers work can be critical to developing a stable and scalable infrastructure.
One of the big things that Administrators often miss (and never mind developers!) is proper instrumentation of their site. It's not that they don't have it but that they don't often know what to look for or they may not understand how certain values affect Magento. One of the things we do in the performance course is take a look at various numbers that tools such as atop, top or vmstat generate and what those numbers mean.
In the following video snippet from one of the recordings from our Performance course, we describe how PHP works on a low level, and how opcode caches can be used to increase performance, complete with benchmarks to prove it. We take this approach of low level explanation followed by demonstration and exercises for several different topics such as web servers, load balancing (DNS, hardware, software), scaling MySQL, using caches, instrumentation and load testing, plus several more topics.
This course goes beyond simply having someone recite words from a script. Instead we have real-world administrators who have real-world experience demonstrating real-world examples to real-world students.
About Kevin (from his blog profile):
I have been a sys admin, programmer, consultant and evangelist. Over the past 5 years I’ve spent most of them at Zend Technologies, spent a 6 month stint trying to start a mobile company (too little, too late) and I am now the Technical Manager for Education and Consulting for Magento at Magento U and ECG. I’ve done some writing. I am co-author of The IBM i Programmer’s Guide to PHP and the book You want to do WHAT with PHP?, which has nothing to do with the IBM i Series, and I'm now working on a third book that should be completed in early fall. You can find me on Twitter or LinkedIn or , unless you’re a spammer. Ignore this if you’re a spammer.