At MageMojo we offer code level support to all of our customers, but what does that really mean?
If you’ve ever seen Ferris Beullers Day Off, leaving your car with a valet might freak you out a bit. You know there’s always a chance your car may come back with a brand new scratch, free of charge. Now imagine a world where MageMojo parks your car. The valet hands your keys back and says, “I noticed things weren’t quite working properly so I went ahead and tuned her up. She should be running like new. Also, you may want to get the timing belt changed soon. If you have any other problems you can call me any time of the day, free of charge.”
The support that we offer for our hosting customers is a true 360 degree view of the server, it's hardware, and how that interacts with the Magento code base. We then go one step further to dig down, find, and sometimes fix those pesky issues that slow your site down or lock it up altogether.
Other hosting providers have this option if you’re willing to fork out the big bucks. What makes us stand out is that we provide individual support to every customer, no need for a massive wallet or special partnership.
Code level support is something we’re very proud of here at MageMojo so let’s go ahead and break it down.
There’s a million and one things that can go wrong with a Magento site. Most issues come from either the site code or how that code and all its extensions interact with the server. So many people get stuck with performance. Drilling down to the specific line of code and saying “here’s what’s wrong” versus saying “awww that’s probably code related.” This is where we get to fill the annoying gap between code and server, helping customers know exactly where the problem is hiding.
Our team starts by solving any possible problems of how code is configured with the server so clients can stop wondering where issues are coming from. We then go into the code and help identify the smoking gun. This allows us to view performance as a whole, not just as individual puzzle pieces that still need solving.
Anytime a customer has a performance issue they can open up a ticket. They say “hey, my store is live, it’s broken, can you help me?” or “hey, my store is running really slow. The search is slow and these category pages are slow. Can you help me?”
We look at the code to help find a root cause. We let them know the piece of code down to the line number, or tell the customer they’re abusing a collection in the loop or have a database deadlock. We’ve even found issues of customers making remote calls to a third party services that are slow to respond. Whatever the problem turns out to be, we’ll be there to help solve it.
Some hosts may do this for VIP’s or big agencies - this level of service is open for all of our customers - no need for a secret handshake. We don’t have different layers of support with different prices. Customers don’t have to be well-known in the Magento community. They don’t have to be spending X dollars for hosting a month. In fact, it’s written directly into our SLA.
A lot of hosting companies do this on a case by case basis but we do this across the board, 100% of the time, for everyone.
Some people feel that MageMojo is a little expensive because of how much support we offer. If you want a shared server for $10-20 a month, they are out there. We don't focus ourselves in that market. That’s just not us. It’s not what we do. We could never provide this level of service for $10 a month. What we can do is promise that we make up for more than the difference with incredible support from a reliable team (and affordable dedicated hosting).
We support the Magento core itself. Being a Magento specific host gives us the ability to not only know the in’s and out’s of our servers but to know how customer’s software will integrate every step of the way. This means if someone is tinkering with the core and it breaks, we’ll be able to show you exactly where things went wrong.
We understand the server and we understand Magento so we understand how Magento is interacting with the server. Even when people know they have a code problem causing poor performance they need to understand how code is interacting with the server hardware to understand why it’s a code problem.
Our specialty is taking server level expertise and combining it with Magento level expertise and offering that to every customer. That’s the 360 degree view of a customer's support needs.
When we have customers migrate to us from other hosting companies, a lot of times we hear a similar story. The other hosts will support them to the extent that they'll say "yes this service is running", "the server is not out of memory", or "MySQL looks like it's tuned properly.”
Well what if you're running into slow pages and it turns out that there are full table scans being done in mySQL - a lot of times you have to go in there and get those queries out for people. So you have to say what queries are running long and which are locking and where it’s coming from in the code.
And very few developers know how to get this server-level information.
When a customer reports to us that their site is running slow, we will identify whether the problem is server-related or within the code - down to the specific line of code. Whether that's in the core or in a 3rd party extension we find out what is causing that bottleneck.
Take all of that a step further and look at how the code is interacting with the database. So there may be things that can be done on the database side like maybe a query cache is needed - query cache may not even be enabled. Some people might think why would it? Sometimes query cache hurts people, sometimes it helps people. It’s a controversial topic. In 5.6, mySQL disabled query cache by default. Up to 5.5 it was enabled. Query cache is something a customer may need to turn on.
Maybe the way a customer is reading the tables could benefit from an index. We can see fixes like that. Add an index on this key and boom your query is flying now. Or maybe they have sql deadlocks and are not a database expert - I mean the queries that come from Magento are massive - we understand those. We can generate query plans and help optimize them. We will even help with deadlocks.
If customers need a specific MySQL parameter tuned because what they’re doing requires something that’s outside of what works for everybody else, we will help. That’s code level support. We step in and solve those really really hard problems that the average host can’t or won’t. We’re here to do this for every customer, they don’t even have to ask.
Everyone knows that sinking feeling in the pit of your stomach when your site stops working. If a customer is in production and broken we come in and troubleshoot. We’ll help determine the root cause of the issue.
If a customer is in production and their site is broken, we’ll come in and look at the issue. We take action to get problems fixed so the site is operational again. We give customers the smoking gun of what went wrong, after we get their store running again.
If the issue relates to an extension we let the customer know exactly what extension is broken. If we know exactly how the extension is breaking we’ll inform clients on what is broken down to the line of offending code. If we don’t know exactly how to fix the issue we'll let customers know what extension it is and recommend that they disable it and talk to the extension vendor.
Our response to a client’s issue also depends on their experience and willingness to work on the problem. We know it’s a database problem and point out a locking query but we usually stop there. Our customers then have the option to ask us to take care of the problem or to continue working with us on the resolution. Either way, it’s no extra charge.
If we think it’s an index, we’ll drop in an index and just like that the problem is solved. Otherwise, if it requires more interaction with the developer and the customer has a developer or is a developer, we will happily continue the conversation and give more and more details as the issue unfolds. We extend this quality of support for some very difficult, hard to solve problems.
Some hosts may provide this depth of support but not without the customer pulling out their pocketbook. If a customer is having database deadlocks but it’s not happening all the time, for other hosts it is about $300/hour. Their DBA will have to sit there for a few days waiting for the problem to happen and customers end up spending $10,000 to fix the problem.
We do auto-patching for all of our customers. By default, everyone is opted in. As far as we can tell, we are the only Magento hosting company that offers this to all of our customers by default.
We’ve been able to figure out programmatic ways to do this auto-patching for everybody. Not only does this process include default templates but every customer's server is setup for auto-patching including custom templates as well.
There are other hosting companies that may offer this to some of their customers - perhaps to their VIPs or larger customers - but what differentiates us is that we offer this to every single one of our customers.
In the auto-patching process we don't just roll default patches out across the board. A lot of patching, if applied across the board, would leave your site vulnerable. We modify the patches and roll them into our own patch script to give additional security protection for your site.
For example, if a patch adds a foreign key to a template. Updates will patch the default templates but they will not patch custom template files. We will go in and patch your custom templates to ensure you a more secure and consistent site. This applies to everyone, not just VIPs.
We started doing this as of the Shoplift bug. When Shoplift hit, we realized that we had to do this - we know our customers, and our customers are, by and large, mid-market or the higher end of the small business market. Many times they paid someone else to build their site and they don't even know what a patch is.
If auto-patching ever fails because the core has been modified then we’ll notify our clients. When it comes to bigger issues with core modification in regards to how patches are working we will usually refer them to a developer. We also send automated patch emails that go out once a week and remind customers if they’re not patched. The reminder basically says “You need to patch these. This is dangerous. This is why it’s dangerous. Here’s how to fix it.”
It’s not uncommon to run into speed and functionality problems when adding extensions with server interactions to a website’s code. Part of our code level support is going into the server to make sure that any extensions are properly configured.
For example - if a customer comes in and they want to enable Varnish we’ll go ahead and install turpentine for them. We then configure Varnish on the server and go into the Turpentine settings to configure it to work well with the server. Once we have configured all the server side settings in Turpentine we know when you save it - it’s pushing your VCL to Varnish. Also, any other aspects like crawl that need to be configured - we will configure for you as well.
Or when a customer wants SOLR. We’ll install it for them with whatever extension they’re using and look at the server side settings of that extension and make sure they are working with SOLR. We don’t just install extensions and make customers go do the rest on their own. We guarantee whatever extension is being added will work with the server.
Extensions that have non-trivial server integration or some server side component that needs to be set up. We’ll install and configure it. The whole 9 yards.
Most hosts are not set up to handle this additional level of support. For us, it’s built right into our workflow. We have a team of frontline support guys and we have a team of hardcore sysadmins. Our workflow is set up between our help desk and Jira - when an issue like that comes in we can generate a ticket for a sysadmin to work with so they can take over and work on it.
Our sysadmins are always there - we have a couple onboard around the clock - this is so you don’t have to hire a sysadmin around the clock just to monitor your issue until they catch it. We always have someone there 24/7. Our processes are built around customer support which is how we can afford this level of care for every single client.
Our philosophy is to make sure that you always know the server is working. We don’t ever want customers to be in a position where the don’t know where issues are coming from. We understand the server and we understand Magento so that you can know exactly how the two of them are interacting to help solve possible issues whether they’re big or small.
Our database experts come together with our Magento experts to provide customers with the most responsive and thorough support of any Magento host. A full 360° view of the delicate balance between code base and server hardware.
So when it comes down to what code level support really means, it means we’re willing to go the extra mile for our customers. It means less downtime, faster load times, and in the end, a more profitable business.