Building and Testing Resilient Ruby on Rails Applications - Shopify
Jan 29, 2015

Summary
This post details Shopify's efforts to improve system resiliency in preparation for high traffic events. It introduces Toxiproxy, a TCP proxy for simulating network conditions in integration tests, and discusses the application of circuit breakers and Semian to handle slow or unavailable external services. The post outlines a strategy for identifying service dependencies and creating matrices to test application behavior under degraded external service states. It also explains how decorators are used to provide fallbacks for unavailable resources and how Semian leverages connection pooling concepts to fail fast when acquiring external resources.