Loading…
Spin Cycle: Shopify’s SFN Team Overcomes a Cloud-Development Spiral
2023-10-18
- Source
- Shopify
- Published
- Added to Yomu
Summary
Shopify’s Fulfillment Network (SFN) worked to run its monolithic Rails application in Spin, a cloud-based development tool that provides on-demand Kubernetes containers instead of local service environments. Because SFN glues together Shopify and many external services, the team had to decide whether to run, mock, or share each dependency, while frequent changes to SFN, Spin, and those dependencies created regressions. The three-engineer team identified a human feedback dynamic: painful Spin experiences discouraged adoption, which allowed more Spin-specific breakage, while regular use could expose regressions before merge. To break that spiral, the team prioritized basic functionality for common validation flows, fixed disruptions there, and asked developers to use Spin daily and add missing capabilities; the intended outcome was a self-reinforcing “Loop of Happy Equilibrium,” though the transition is described as a hypothesis.
Context
SFN wanted cloud-based development through Spin to support on-demand environments, easier sharing of work in progress, changes spanning codebases, and safer experimentation with ephemeral instances. The challenge was that SFN depends heavily on Shopify and other external services, while its codebase, Spin, and those dependencies change frequently. Developers could avoid Spin when it was painful, allowing regressions to accumulate and potentially creating a downward adoption spiral.
Approach / What changed
The three-engineer SFN-on-Spin team chose how to handle each dependency by running it in the Spin container, mocking it, or using a shared instance. Rather than make every SFN flow work immediately, they focused on basic functionality for the most common validation flows, prioritized fixes that disrupted those flows, and asked other developers to use Spin in daily work. Developers were encouraged to add the missing functionality they needed.
Takeaways
- SFN is a monolithic Rails application whose value depends on coordinating Shopify and external services such as shipping-label and warehouse-operations systems.
- Dependency handling in Spin can involve running a service in the same container, mocking it, or using a shared staging or live-test instance.
- The team aimed to counter a negative adoption loop by making common Spin workflows reliable enough for daily use and having developers expose and repair remaining gaps.