ShopWare 6.1 vs Adobe Commerce (Magento 2) performance
Guys from BMW asked to test the performance of the new ShopWare 6.1 vs. the latest Adobe Magento 2.3.3.
Shopware 6 is getting a complete overhaul.
One of the key improvements of Shopware 6 (SW6) is that it isn’t just another iteration of previous versions. Shopware has redesigned the platform from scratch. This means we can look forward to modern features such as cloud integration. Better interactions between the backend and front end. SW6 codebase using modern technologies such as Vue.JS and PHP Symfony 4.
A Shopware backend designed for modern needs
As you’ve probably gathered, we’re big fans of a responsive backend. But what truly excites us is the promise of new backend features that make managing your site even more accessible. This includes artificial intelligence that can present admin recommendations and menus that can be customized to suit your unique needs. Another exciting development is the newly reimagined API, which is at the heart of Shopware's “Headless Commerce” solution. Essentially, this means that the API can control all functions of Shopware 6. This paves the way for Shopware 6 integrations in voice assistants, wearable devices, mobile apps, and more. This flexibility is the stuff of dreams for third-party developers and could lead to some exciting additions to the platform.
Core SW6 features:
- The Asset component manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files, and image files.
- The Cache component provides a comprehensive PSR-6 implementation and a PSR-16 “Simple Cache” implementation. It is designed for performance and resiliency and ships with ready-to-use adapters for the most common caching backends, including proxies for adapting from/to Doctrine Cache.
- With HTTP Caching (Varnish), you cache the entire output of a page (i.e., the response) and bypass your application entirely on subsequent requests. With Edge Side Includes (ESI), you can use the power of HTTP caching on only fragments of your site. It relies on the simplicity and control of the HTTP cache as defined in RFC 7234 — Caching. Instead of reinventing a caching methodology, Symfony embraces the standard defining essential Web communication. Once you understand the fundamental HTTP validation and expiration caching models, you’ll be ready to master the Symfony cache system.
- Cache-contracts: The abstractions in this package are helpful to achieve loose coupling and interoperability. Using the provided interfaces as type hints, you can reuse any implementations matching their contracts.
- The Config component provides several classes to help you find, load, combine, fill and validate configuration values of any kind, whatever their source may be (YAML, XML, INI files, or for instance, a database).
- The same Symfony Magento 2 console.
- The TwigBundle integrates the Twig library in Symfony applications to render templates.
- This is a Flysystem adapter for the aws-sdk-php v3. Magento still doesn’t have this feature, so running an app in the cloud is important.
- The Symfony profiler is a powerful development tool that gives detailed information about the execution of any request.
- THE powerful PHP database abstraction layer (DBAL) has many features for database schema introspection and management with migration features. Theoretically, you can use Postgre SQL with SW6.
Let's test the latest version of Magento 2.3 and SW6.1.
Test running without FPC to show actual page generation performance. Other types of caches are enabled, and MySQL query_cache is enabled.
Environment:
- AWS EC2 C5.large 2vCPU 4GB
- RDS 2vCPU 4GB
- ElasticCache Redis 2GB T2.medium
- The same environment for both tests.
- Magento 2.3.3 CE and SW6.1 + sample data without any customizations
Test cases:
1. Home Page
M2:
Result: 125ms
SW6:
Result: 185ms
2. Category Page
M2:
Result: 270ms
SW6:
Result: 152ms
3. Simple Product Page
M2:
Result: 251 ms
SW 6:
Result: 107 ms
4. Configurable product
M2:
Result: 272ms
SW6:
Result: 111ms
5. Cart page (Empty)
M2:
Result: 167
SW6:
Result: 79
6. Add to cart Ajax
I will use https://tideways.com/ profiler to check this scenario by sending them from the browser
M2:
Result: 380ms
SW6:
Result: 60ms
7. Cart Private Section/Block Ajax
M2:
Result: 249 ms
SW6:
Result: 40 ms
8. Search
M2:
Result: 264 ms
SW6:
Result: 111 ms
Test with FPC enabled:
M2:
Result: 65 ms
SW6:
Result: 10 ms
Shopware 6 shows excellent results for a new product. Also, it offers great results for Rest API services. Because 40% of page generation time takes Twig template rendering. The Twig template is the main performance problem of the SW6/Symfony front end. Using block cache(Shopware Developer Blog future improvement) or Vue Storefront headless PWA theme, we can avoid this problem. SW6 Add To Cart API is 5 times faster than M2 Add to Cart request. FPC also is awesome fast 5 times faster than M2.
Thanks a lot for the idea and technical support of this test Wouter Dieters (https://www.linkedin.com/in/wouterdieters)
Pivot Table:
+------------------------------------------------------+
| Page Response Time (less is better) |
+-------------------------+---------+--------+---------+
| | M 2.3.3 | SW 6.1 | DIFF |
+-------------------------+---------+--------+---------+
| 1. Home Page | 125 | 185 | -32.43% |
+-------------------------+---------+--------+---------+
| 2. Category | 270 | 152 | 77.63% |
+-------------------------+---------+--------+---------+
| 3. Product Simple | 251 | 107 | 134.58% |
+-------------------------+---------+--------+---------+
| 4. Product Configurable | 272 | 111 | 145.05% |
+-------------------------+---------+--------+---------+
| 5. Cart Page | 167 | 79 | 111.39% |
+-------------------------+---------+--------+---------+
| 6. Add to Cart Ajax | 380 | 60 | 533.33% |
+-------------------------+---------+--------+---------+
| 7. Cart Section Ajax | 249 | 40 | 522.50% |
+-------------------------+---------+--------+---------+
| 8. Search | 264 | 111 | 137.84% |
+-------------------------+---------+--------+---------+
| 9. FPC | 65 | 10 | 550.00% |
+-------------------------+---------+--------+---------+
Disclaimer:
The opinions expressed in this blog are my own views, and I have based my review on my personal experience after purchasing, and using these products. I have no affiliation with the manufacturers, nor is my blog sponsored by any of them. I also cannot vouch for the absoluteness of my suggestions. Use discretion before buying or utilizing any product, and seek professional counsel in case of any issue.