Magento(Adobe) Commerce Cloud Performance test of anovaculenary.com

I promised Adobe to test popular Magneto 2 sites hosted on Magento Cloud to check real performance. I have found Anova website. This is a well-known company in the SF Bay Area.

Anova Culinary (known legally as Anova Applied Electronics, Inc.) is a San Francisco-based smart kitchen company that provides connected precision cooking appliances, such as a sous vide device for the home cook in 2013 with the Anova One. In 2014, the firm introduced the first connected precision cooking device with the Bluetooth-enabled Anova Precision Cooker, followed by a Wi-Fi-enabled version in 2015.

Anova was acquired by home appliance company Electrolux on February 6, 2017 for $250 million USD, marking the first multimillion-dollar acquisition of a smart kitchen brand.

The company uses M2 and Magento Adobe Commerce Cloud as a hosting solution.

Architecture for The Magento/Adobe Cloud Platform As A Service: DNS setup routes all HTTP requests to the Fastly CDN, from which it is handed off to an Elastic Load Balancer which distributes the traffic to available Nginx/PHP-FPM based Magento instances (hard-limited by 3 nodes). Each instance hosts the entire application stack (MySQL, Redis, PHP-FPM, GlusterFS, ElasticSearch, RebbitMQ, HA PROXY, NewRelic). All the resources are divided into each service (PHP 40%, MySQL 30%, Redis 10%, ElasticSearch 10%, GlusterFS 10%). Magento cloud uses outdated discounted by AWS hardware. A new generation of servers has 15% better CPU performance : M4 Instance has 2.4 GHz Intel Xeon E5–2676 v3 (Haswell) vs M5 3.1 GHz Intel Xeon Platinum 8175 (Skylake)

Image for post
Image for post
Magento Commerce Cloud Architecture topology

Many merchants asking about Magento Commerce Cloud efficiency.

Magento 2 Core itself has a lot of performance and architectural problem. However, when you are using M2 with its cloud is an expansive disaster:

The starter Magento Cloud plan has 4 virtual cores per server (2 threads per 2 physical. CPU Intel’s Hyperthreading technology) with everything running on it. PHP, MySQL, Galera Cluster, Redis, ElasticSearch, Java, HaProxy, Nginx, ZooKeeper, heavy Magento Crons, RenitMQ, Docker, NewRelic, BlackFire, GlusterFS Network File Server, other stuff and all these infrastructure elements run twice x2(production and staging share the same instance). And all these processes load 2 outdated physical cores (M4 instance: 2.4 GHz Intel Xeon E5 — 2676 v3 Haswell)…

No comments! How this solution can work properly? And Adobe/Magento gives a one-year free trial on this or you need to pay $1500+ with original resource price 200$. It is even impossible to load test because Magento Cloud doesn’t have auto-scaling. Only the pages from the Fastly cache are fast however it is not cloud performance. Flush the cache and feel the difference.

Further DB load balancer distributes SQL queries over three MariaDB installation in the form of a Galera cluster. Writes go to a single Master. What’s interesting is that all three instances are synchronous Masters, with the Load Balancer electing which instance carries the role of Master in case of failure. The same with Redis it is replicated between all instances with one Master.

Magento Commerce Cloud also has cron a lock provider to prevent the launch of duplicate cron jobs and cron groups.

Magento uses the database to save locks by default. Magento Commerce Cloud uses Zookeeper as the lock provider. Magento Cloud has an issue, when crons are running they are divided around all 3 web instances and slowing down incoming HTTP requests because all CPUs are busy.

Image for post
Image for post

Also Magento Commerce Cloud staging environment and production environment run on the same web nodes. Staging web site(MySQL, PHP,Redis) utilizes resources of the production website. That ensures identical configuration between them but can produce performance problem for production if the load generated during QA and browsing on a staging environment.

OK, can’t wait to get my hands on that!

Let’s analyze the “cloud” performance of Anova eCommerce website.

For the test, I’m using Apheac benchmark tools: https://www.petefreitag.com/item/689.cfm

https://shop.anovaculinary.com/en-us/products

This is home page of the M2 shop. The main web site uses WordPress:

Image for post
Image for post

1 Concurrent request: 467ms

5 Concurrent requests: 446ms

10 Concurrent requests: 838ms

20 Concurrent requests: 1264ms

Image for post
Image for post
Magento 2 Commerce Cloud Performance

What we can see Magento can’t handle 10 simultaneous requests without the doubling response time. 100ms increase of response time leads to a 1% revenue drop (Amazon research);

On Magento, the real page view generates 2–5 Alex requests. Checkout Page generates around 10 Ajax requests.

How about the Product Page? CMS page it is to easy.

concurrency 1: 1049ms

Image for post
Image for post

Pretty Stable result for Magento 1000ms+. When Google’s recommendation is 300ms. Also, Magento has a big response deviation 287ms

2 Concurrent requests: 1620ms

Image for post
Image for post

After 2 concurrent requests, we are having 60% response time growth.

5 concurrent request: 1726ms

Image for post
Image for post

10 concurrent requests: 1818ms

Image for post
Image for post
Image for post
Image for post

What we can see Magento Cloud capable handle 5 simultaneous requests without doubling response time. Even 2 requests lead tot he response-time degradation. I believe even GoDaddy can handle more web traffic than 5 requests without slowdown.

I’m considering this is the smallest hosting plan Magento has = 3 * m4.xlarge = 12 vCPU. The same “cloud” you can buy directly with AWS for 3 * 150$ = 450$ months + 10$ Fastly traffic. The better solution is just to install single web node — M5.4xlage EC2 / 3.1 GHz Intel Xeon Platinum 8175 (Skylake) /16 vCPU / 64 GiB memory (or use DigitalOcean $320 months similar instance) and install everything on it except MySQL + RDS MYSQL Aurora Serverless DB with auto-scaling (60$ Months)!! If you wanna scale your app you can just replace a new instance as a copy of the existing one (AMI) and assigned elastic IP address of the previous instance and you will have better performance with no complexity and 0 downtimes. Any developer accomplishes this in 15 minutes easier than write the Magento 2 simple plugin. Magento Cloud has approximately 30–60 downtime during scaling.

The bigger plan maybe will have a little bit better throughput but does it wors this money? Magento Cloud Start from $40,000 year the smallest starter plan.

3 * 16 vCPU = 48 vCPU for $375K*/yearly($31K/month) + $10K setup fee + 50GB space for $6,657 = $391,657. The same AWS configuration costs 1,261$ months + 3 * 50GB = 150GB of storage 15$ months. x3 Because different instances have different storage spaces synced by GlusterFS. Total AWS resources cost = 15,132$ + 180$ = 15,312$ year.

Image for post
Image for post
Magento 2 Cloud Pricing (license fee excluded. EE License is extra cost)

* Magento Price is based on the Magento quote provided by the merchant (not Anova)

Magento Commerce Cloud is a fraud and a waste of money. (merchant)

You can just buy the biggest EC2 possible: C5.24XLARGE / 3.0 GHz Intel Xeon Platinum 8275L / 96 vCPU / 192 GiB memory / 25 Gigabit networking performance (DigitalOcean ocean doesn’t have so big instance size max is 40vCPU) and have awesome fast performance better tan Magento Cloud just per 3000$/month or 1000$ if to buy spot instance. This 96 core instance can generate 100 pages/per second without any scaling.

Image for post
Image for post
Magento Commerce Cloud Pricing comparison chart

Some merchants asking about Support. Yeh, Magento Cloud Support outsourced to India will cost you $376,345 per year. For this money, you can hire several rock star cloud gurus and they will fix hosting if something happened + will fix PHP Magento 2 bugs and contribute fixes to Adobe for free.

If you wanna have less price you need auto-scaling or use AWS PaaS Beanstalk deployment.

Git hub repo of the AWS Magento cloud :

Image for post
Image for post

Small Business AWS Cloud Computing Resources Price:

Image for post
Image for post
AWS Magento hosting Cost with auto-scaling

FPC can improve cached pages performance but it doesn’t eliminate backed performance. This web site has 14 products in total. Maybe the Magento cloud is a good solution for small merchants. If you have more than 1000 products you can cover everything with the CACHE + Checkouts/Cart + Cache invalidation +Search Queries + Layered Navigation + AJAX Requests.

We have found 2 issues with Magento cloud 1 it is a response of Magento 2 itself 1000ms where the Google recommendation is 300ms

Comparison of Magento 1 performance vs Magneto 2:

Image for post
Image for post

Magento 1 has significantly lower response time and better performance. The same environment for Magento 1 can produce twice more requests even without scaling.

The second issue is the Magento Cloud environment’s low performance. This issue will be hidden soon by PWA implementation. To measure real server performance for PWA is difficult. Even with the lower performance, you will see a preloading image (spinner) instead of the blank page and magneto will claim that it is awesome fast. Real Back-end performance will be the same if not worse because PWA sends more requests than legacy front-end. I’m considering good response time for the PWA API should be 30–80ms. Magneto has response time over 200 ms per simple API. Good Idea lets test Magento GraphQL performance of this site.

Magneto Cloud Graph QL performance:

or GraphQL query is like this with the total result of 14 items

{"query":"{\n  products(filter:{ sku: { like: \"%\" } }, pageSize:20)
...
}
Image for post
Image for post

concurrency 1: 567sm /* 5 times slower than my consideration about performance */

Image for post
Image for post

concurrency 2: 726ms

Image for post
Image for post

concurrency 5: 662ms

Image for post
Image for post

concurrency 10: 669ms

Image for post
Image for post

concurrency 20: 1433ms

As we can see for the smaller request server can generate more pages per second. Now we are heaving significant response time degradation after 10 concurrent requests. However, with PWA one page can produce 10 API requests easily. Magneto 2 Graph API can provide more requests per second but it doesn’t mean that Magneto Core or Server infrastructure has better performance. We just split one bigger request into several smaller ones.

In the next post, we will analyze why it has so bad performance and learn how not to build a cloud.

Don’t ask why the best are building a Highly Scalable E-Commerce Platform on AWS:

Kevin Chung from Under Armour explains how they built a highly scalable e-commerce platform on AWS with a red/black deployment model ready for their holiday season. You will learn how they use Spinnaker to orchestrate the cluster and test for more than 200k requests per minute. The Regular eCommerce cluster size is 75 web nodes and. It is not Mgentos 3 fixed nodes always.

Written by

Magento/APP Cloud Architect. Melting metal server infrastructure into cloud solutions.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store