Over the past decade, the internet and mobile devices became the dominant computing platforms. In parallel, the family of software architecture styles that support distributed computing are the ways we build systems to tie these platforms together. Styles fall in and out of favor as technologies evolve and as we, the community of software developers, gain experience building ever more deeply connected systems. If you’re building an app to integrate two or more systems, you’ll need to bridge between two different domain models, communication protocols, and/or messaging styles. This is the situation that our team found itself in as we were building an application to integrate with Amazon’s online marketplace. This post talks about some of our experiences integrating two well-established but very different commerce platforms. Shopify is a multi-channel commerce platform enabling merchants to sell online, in stores, via social channels (Facebook, Messenger and Pinterest), and on marketplaces like Amazon from within a single app. Our goals for the Amazon channel were to enable merchants to use Shopify to: Publish products from Shopify to Amazon Automatically sync orders that were placed on Amazon back to Shopify Manage synced orders by pushing updates such as fulfillments and refunds back to Amazon At Shopify, we deal with enormous scale as the number of merchants on our platform grows. In the beginning, to limit the scale that our Amazon app would face, we set several design constraints including: Ensure the data is in sync to enable merchants to meet Amazon’s SLAs Limit the growth of the data our app stores by not saving order data In theory, the number of orders our app processes is unbounded and increases with usage. By not storing order data, we believed that we could limit the rate of growth of our database, deferring the need to build complex scaling solutions such as database sharding. That was our plan, but we discovered during implementation that the differences between the Amazon and Shopify systems required our app to do more work and
NayaRead shows a summary and links to the original article. The full article is hosted on shopify.engineering.