What's Specific For Magento
- Compilation in the build, not the deploy. Composer
install,
bin/magento setup:di:compile, and
setup:static-content:deploy run during image build.
Deploy windows are seconds, not the 10–20 minutes you've grown to
expect.
- Per-slot external Redis (object cache + FPC). Blue
and green slots have independent cache instances; a deploy never
FLUSHDBs your live cache. Sessions stay valid via a shared session
Redis across slots — true zero-downtime deploys, with no cold start
and no dropped cart.
- Magento config cache as a third Redis — independent
from object cache so deploys don't trigger a full
di.xml/plugin-chain recompile.
- Migration classifier on every deploy. Code-only goes
standard blue/green. Additive schema runs while old code still
serves. Breaking
setup:upgrade blocks on approval and
opens a brief maintenance window — no surprises.
- OpenSearch per tenant (operator-managed). Catalog
rebuild after deploy is automated.
What synmage Gets You That Generic Magento Hosting Doesn't
- Diagnostic report on every deploy. Slow product page
after a release? We trace the request through the layout XML, the
block class, and the SQL that the collection issued — and name the
line.
- Module-level cost attribution. Which module is
burning the most cron time? Which observer is dragging your checkout?
The observability stack ties every span back to the originating
module.
- Per-tenant MySQL with XtraBackup + binlog shipping.
Weekly fulls, hourly incrementals, PITR to any point in the last
14 days. A bad
UPDATE catalog_product_entity doesn't end your week.
- Data Patch dynamic classification. Static analysis
misses arbitrary PHP in Data Patches; we clone, dry-run, and tell you
what the patch actually does before it touches production.
- MCP server for your agent. Cursor or Claude Code can
deploy, roll back, flush the FPC + config cache, kill a runaway catalog
query, and pull traces without leaving your IDE. Same tool surface our
internal team uses.
What A synmage Diagnostic Looks Like
Real finding shape. Every report carries a finding ID, the evidence
trace, the exact file:line, and a recommended fix — in your stack's
idioms, not a generic dashboard widget.
Product collection loading every attribute in checkout
Evidence
trace 9a13c7e: checkout → cart_save observer → mysql
slowest span: catalog_product_entity + 47 EAV joins
addAttributeToSelect('*') · 6.2s · 12,400 rows Code Location
app/code/Acme/Checkout/Observer/CartSave.php:58
$collection->addAttributeToSelect('*')->load(); Recommended Fix
1. Select only needed attributes (sku, price, name)
2. Move the work off the synchronous checkout path
Expected p99: 6.2s → ~140ms