![](https://cdn.shopify.com/s/files/1/0779/4361/articles/server-wires.jpg?v=1704987717&width=600)
Infrastructure
We’re always working to build a platform that delivers a resilient and fast commerce experience to our merchants and their customers.
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/server-wires.jpg?v=1704987717&width=600)
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210719_72ppi_05_FlashIsAShapeNotASize.jpg?v=1674838084&width=600)
Performance Testing At Scale—for BFCM and Beyond
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220901_216ppi_03_SafelyAddingNOTNULLColumnsToYourDatabaseTables.jpg?v=1664548919&width=600)
Safely Adding NOT NULL Columns to Your Database Tables
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210719_72ppi_04_ModellingDeveloperTooling_57c1a52e-2009-4fcf-b84c-7c054ccdf389.jpg?v=1662045925&width=600)
Leveraging Go Worker Pools to Scale Server-side Data Sharing
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_72ppi_04_DebuggingsystemsintheCloud-MySQLKubernetesandCgroups_700ca906-da61-4e43-93c2-351e18947ed6.jpg?v=1657898065&width=600)
Spin Infrastructure Adventures: Containers, Systemd, and CGroups
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_72ppi_04_Mobius-TheOneEdge.jpg?v=1651176259&width=600)
Möbius: Shopify’s Unified Edge
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/image1.jpg?v=1647544983&width=600)
Using Terraform to Manage Infrastructure
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211209_72ppi_05_HowWeFixedTheDependencyConfusionVulnerabilityInOver600RubyApplications.jpg?v=1643224896&width=600)
How We Fixed the Dependency Confusion Vulnerability in Over 600 Ruby Applications
![An image of a fire extinguisher putting out a lock on fire](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211026_72ppi_03_ThatOneTimeAnOutageCouldHaveBeenWayWorse.jpg?v=1641930863&width=600)
That Old Certificate Expired and Started an Outage. This is What Happened Next
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211026_72ppi_02_UpgradingMySQLAtShopify.jpg?v=1638286539&width=600)
Upgrading MySQL at Shopify
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_72ppi_04_DebuggingsystemsintheCloud-MySQLKubernetesandCgroups.jpg?v=1634832350&width=600)
Debugging Systems in the Cloud: MySQL, Kubernetes, and Cgroups
![Shard Balancing: Moving Shops Confidently with Zero-Downtime at Terabyte-scale](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210913_72ppi_01_ShardBalancingMovingShops.jpg?v=1634153777&width=600)
Shard Balancing: Moving Shops Confidently with Zero-Downtime at Terabyte-scale
![A snail in profile with the spinning waiting symbol on its shell](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210630_72ppi_01_HighAvailabilityByOffloading.png?format=jpg&quality=90&v=1626811143&width=600)
High Availability by Offloading Work Into the Background
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Shop_Eng_Blog_Header_4.png?format=jpg&quality=90&v=1618938757&width=600)
Dynamic ProxySQL Query Rules
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Shop_Eng_Blog_Header_2.png?format=jpg&quality=90&v=1617992782&width=600)
How Shopify Dynamically Routes Storefront Traffic
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Erick_06.jpg?v=1614029735&width=600)
Read Consistency with Database Replicas
![How we manage GCP project-wide SSH keys at Shopify. Image by Samantha Lam on Unsplash](https://cdn.shopify.com/s/files/1/0779/4361/articles/samantha-lam-zFy6fOPZEu0-unsplash.jpg?v=1611765307&width=600)
Managing Google Cloud Platform Project-Wide SSH Keys
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/developer-leading-planning-session.jpg?v=1607627222&width=600)
Resiliency Planning for High-Traffic Events
![A line graph showing Shopify's global traffic from BFCM 2019 to BFCM 2020](https://cdn.shopify.com/s/files/1/0779/4361/articles/BFCM2020Traffic.jpg?v=1607016264&width=600)
Capacity Planning at Scale
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/woman-boxing.jpg?v=1606925064&width=600)
Pummelling the Platform–Performance Testing Shopify
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/P02R002_after_924x418_98e859cc-16c6-42df-8a96-be4661823772.png?format=jpg&quality=90&v=1596579457&width=600)
Using DNS Traffic Management to Add Resiliency to Shopify’s Services
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/P01R001_library_book_924x415_28a25021-3051-4c91-a95e-5a93a73807d9.png?format=jpg&quality=90&v=1596567590&width=600)
An Introduction to DNS Traffic Management
![The Brief History of TLS Certificates at Shopify](https://cdn.shopify.com/s/files/1/0779/4361/articles/combination-lock-secure_1.jpg?v=1589470127&width=600)
A Brief History of TLS Certificates at Shopify
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/YourCircuitBreakerIsMisconfigured_d89c674c-95b4-4270-8dd2-a1c4f89910ec.jpg?v=1582055933&width=600)
Your Circuit Breaker is Misconfigured
![Four Steps to Creating Effective Game Day Tests](https://cdn.shopify.com/s/files/1/0779/4361/articles/2_monitors_pink_room_pair_programming-wide.jpg?v=1573571377&width=600)
Four Steps to Creating Effective Game Day Tests
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/orange-computer-cables-plugged-in.jpg?v=1569868482&width=600)
How Shopify Manages Petabyte Scale MySQL Backup and Restore
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/macbook-on-lap-2.jpg?v=1556730978&width=600)
A New Kubectl Plugin for Kubernetes Ingress Controller ingress-nginx
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/cannabis-devices-large-5f7666a29eff9615ee55f2adf90d2c3a5d3f2cbd55744a70ca10ff59fd03b4f1.png?format=jpg&quality=90&v=1549492252&width=600)
Engineering a Historic Moment: Shopify Gets Ready for Cannabis in Canada
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/bfcm-sale-sign_4460x4460_768bd30e-aed2-42ff-9b51-e5497d4f05db.jpg?v=1545414529&width=600)
Preparing Shopify for Black Friday and Cyber Monday
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/developer-team-coding-javascript_4460x4460_cb145af7-002b-482b-ab94-de517b11e777.jpg?v=1544811901&width=600)
How an Intern Released 3 Terabytes Worth of Storage Before BFCM
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/coding-on-laptop_4460x4460_1_a3b7306e-e40d-49ae-abd8-eb2314a71e51.jpg?v=1541611078&width=600)
Running Apache Kafka on Kubernetes at Shopify
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/coding-on-laptop_4460x4460_1.jpg?v=1535737359&width=600)
Iterating Towards a More Scalable Ingress
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/shopify-rails-stack.png?format=jpg&quality=90&v=1533668622&width=600)
E-Commerce at Scale: Inside Shopify's Tech Stack - Stackshare.io
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/GC_shopify_TWG__900x450_1.png?format=jpg&quality=90&v=1522105379&width=600)
Shopify’s Infrastructure Collaboration with Google
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-03-02_at_2.29.48_PM.png?format=jpg&quality=90&v=1520019046&width=600)
A Pods Architecture To Allow Shopify To Scale
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/lightning-hard-enamel-lapel-pin_925x_9c5ae124-463d-484d-9a51-0e467f6aa232.jpg?v=1519669764&width=600)
Future Proofing Our Cloud Storage Usage
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?format=jpg&quality=90&v=1518538342&width=600)
Implementing ChatOps into our Incident Management Procedure
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/rails-5-upgrade.png?format=jpg&quality=90&v=1497980926&width=600)
Upgrading Shopify to Rails 5
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2017-05-17_at_10.03.00_AM.png?format=jpg&quality=90&v=1495029807&width=600)
Surviving Flashes of High-Write Traffic Using Scriptable Load Balancers (Part II)
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/lb-image.png?format=jpg&quality=90&v=1486574861&width=600)
Surviving Flashes of High-Write Traffic Using Scriptable Load Balancers (Part I)
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Production_Engineering.jpeg?v=1494878687&width=600)
Why Shopify Moved to The Production Engineering Model
![Adventures in Production Rails Debugging](https://cdn.shopify.com/s/files/1/0779/4361/articles/programmer-focused-on-code_4460x4460_2_20c43edd-e8c5-4984-b88d-2505b8997693.jpg?v=1551334613&width=600)
Adventures in Production Rails Debugging
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Docker_e7e8730f-1a9f-45b8-a05b-19b23315f4e9.png?format=jpg&quality=90&v=1494949625&width=600)
Secrets at Shopify - Introducing EJSON
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/coding-on-laptop_4460x4460_2ba0f25e-d153-4cc7-a931-05961430eecc.jpg?v=1521214533&width=600)
Tuning Ruby's Global Method Cache
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Docker_d35491e3-4d71-4170-aa60-263c240f5590.png?format=jpg&quality=90&v=1494879056&width=600)
Docker at Shopify: How We Built Containers that Power Over 100,000 Online Shops
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Docker.png?format=jpg&quality=90&v=1494878861&width=600)
Building an Internal Cloud with Docker and CoreOS
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/developer-coding-in-php_4460x4460_dc9f4607-1be6-44bd-beaa-89287ac13d34.jpg?v=1537886027&width=600)
Kafka Producer Pipeline for Ruby on Rails
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/developer-coding-in-php_4460x4460_8cdb4e9d-6ff1-4c60-9395-a6cd3d2743e5.jpg?v=1525141280&width=600)
Building a Rack Middleware
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/woman-codes_4460x4460_31ac8283-f0ff-427e-b35d-e6aad2d9350f.jpg?v=1525141498&width=600)
What Does Your Webserver Do When a User Hits Refresh?
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/coding-on-laptop_4460x4460_1f8db1d3-e3b1-4db3-bb84-1e320186af37.jpg?v=1525124482&width=600)