Why the obvious approach breaks at scale
The naive implementation is straightforward: listen for Shopify product webhooks, then replicate the change to the other stores via the REST API. Works fine for a few hundred products and two stores. Falls apart quickly when you add a third store, a third currency, and 10,000+ SKUs.
The architecture that actually works
After two iterations, AAosync settled on a queue-based architecture. Webhook receivers verify HMAC, write to a MySQL queue, respond HTTP 200 immediately. A cron-driven processor handles the actual work ? fetching from master, applying FX rates with per-store multipliers, pushing via GraphQL bulk mutations.
Always respond HTTP 200 immediately after HMAC verification. Queue the work, don’t process it inline.
The result: 2.5 years without a failure
AAosync has been running in production since mid-2021. Over 2 million product update events processed. Zero critical failures.