Shopify Engineering

https://shopify.engineering

Shopify powers millions of businesses in more than 175 countries with essential commerce infrastructure. Our engineers and developers work on challenging and impactful projects spanning frontend, backend, mobile and data.

フィード

記事のアイキャッチ画像
How River takes security work from a fix to merge
Shopify Engineering
River, Shopify’s AI agent in Slack, enables autonomous vulnerability remediation, not just detection.
2時間前
記事のアイキャッチ画像
Gisting: Compressing LLM Agent context to ↑ throughput and ↓ cost
Shopify Engineering
Gisting compresses context into a set of learned tokens, preserving its quality while making the model faster and cheaper.
14日前
記事のアイキャッチ画像
How we raised mobile end-to-end test stability to 98%
Shopify Engineering
We rebuilt our mobile end-to-end testing framework with a strict API and computer vision, raising test stability drastically.
21日前
記事のアイキャッチ画像
Sidekick's continual learning loop
Shopify Engineering
How we compress production failures into model weights every day, beat frontier-model quality, and cut serving costs 96%.
1ヶ月前
記事のアイキャッチ画像
Building an agentic harness that outlasts the model
Shopify Engineering
We built an agentic code review and test oracle harness that discovers vulnerabilities, proves them with real tests, and provides Shopify-tuned fixes.
1ヶ月前
記事のアイキャッチ画像
Upgrading Checkout Blocks app to Polaris web components
Shopify Engineering
We moved five high-traffic checkout extensions to remote-dom and Polaris web components, cutting bundle sizes drastically and making checkout faster.
2ヶ月前
記事のアイキャッチ画像
Inside Shopify Hack Days: Building a prototype for music-playing pages
Shopify Engineering
How a Hack Days team built a music player, custom GLSL visualizers, and an artist toolkit for storefronts, all in three days.
2ヶ月前
記事のアイキャッチ画像
Clustering billions of products for agentic commerce with Catalog API
Shopify Engineering
Building an LLM-powered pipeline to match product listings across millions of merchants into a unified catalog that AI agents can search.
3ヶ月前
記事のアイキャッチ画像
Teaching Sidekick to say no: automated data curation with LLM judge consensus
Shopify Engineering
Production training data only captures successful queries; it can't teach a model when to say no. We built an automated curation pipeline using LLM judge consensus to close that gap.
3ヶ月前
記事のアイキャッチ画像
Quick: An internal hosting platform for the AI era
Shopify Engineering
Quick lets anyone at Shopify ship a site in seconds. It has changed the culture of how we build and share.
3ヶ月前
記事のアイキャッチ画像
Under the River
Shopify Engineering
What it took to ship our Slack-native agent River, lessons learned, and the substrate that runs beneath it. Co-authored by River.
3ヶ月前
記事のアイキャッチ画像
We replaced Redis with MySQL for inventory reservations—and it scaled
Shopify Engineering
How we used SKIP LOCKED, composite primary keys, and connection visibility to hit our scale targets.
4ヶ月前
記事のアイキャッチ画像
Flow generation through natural language: An agentic modeling approach
Shopify Engineering
We fine-tuned Qwen3-32B into a tool-calling agent that generates Flow automations from natural language—faster, cheaper, and more accurate than the frontier model it replaced, with a weekly retraining flywheel built on real merchant data.
4ヶ月前
記事のアイキャッチ画像
Autoresearch isn’t just for training models
Shopify Engineering
Tobi and I generalized Karpathy’s Autoresearch to improve 40+ metrics across Shopify, then we open-sourced our project.
5ヶ月前
記事のアイキャッチ画像
Building a Magic Mirror: AI retail experiences with Remix
Shopify Engineering
The technical blueprint for an AI-powered mirror that sees customers, analyzes their appearance, and delivers personalized product recommendations in real-time.
5ヶ月前
記事のアイキャッチ画像
Shopify’s journey to faster breadth-first GraphQL execution
Shopify Engineering
Conventional GraphQL execution uses depth-first traversal that incurs many hidden costs. We questioned why, rewrote it in a faster breadth-first manner, and saw dramatic results.
6ヶ月前
記事のアイキャッチ画像
2,000 robots walk into a shop...
Shopify Engineering
SimGym infrastructure for synthetic customers at scale. A Shopify + NVIDIA collaboration.
6ヶ月前
記事のアイキャッチ画像
The generative recommender behind Shopify's commerce engine
Shopify Engineering
Treating buyer journeys as sequences instead of simplified signals, and building a model fast enough to serve at scale.
6ヶ月前
記事のアイキャッチ画像
SkyPilot at Shopify: Multi-cloud GPUs without the pain
Shopify Engineering
GPUs are annoying. Shopify uses SkyPilot to make them less so: one YAML file, multiple clouds, clean development ergonomics.
7ヶ月前
記事のアイキャッチ画像
Building the Universal Commerce Protocol
Shopify Engineering
We built UCP to power agentic commerce. Here's the architecture behind it.
8ヶ月前
記事のアイキャッチ画像
Tangle: An open-source ML experimentation platform built at Shopify scale
Shopify Engineering
Tangle saves months of compute time, makes every experiment automatically reproducible, and allows teammates to share computation without coordination.
9ヶ月前
記事のアイキャッチ画像
Behind the build: 2025's BFCM globe in a pinball machine 🌎🕹️
Shopify Engineering
Real-time merchant sales rendered on our globe, Easter eggs galore, and a pinball machine because... why not?
9ヶ月前
記事のアイキャッチ画像
Run for your money: Engineering a treadmill that prints store credit
Shopify Engineering
We combined FTMS sensors, Socket.IO, and POS UI extensions to turn a manual treadmill into a discount-printing machine.
9ヶ月前
記事のアイキャッチ画像
How we prepare Shopify for BFCM
Shopify Engineering
From March to October we simulated traffic tsunamis, injected chaos, and fixed every bottleneck before our merchants needed us most.
9ヶ月前
記事のアイキャッチ画像
Building world-class product search at Shopify: Where C++ excellence meets ML innovation
Shopify Engineering
Learn how we solved a major search engineering dilemma—running machine learning models at native C++ speed.
10ヶ月前
記事のアイキャッチ画像
Beyond classification: How AI agents are evolving Shopify's product taxonomy at scale
Shopify Engineering
Last year, over 875 million people bought items from Shopify merchants. Building on our prior Vision Language Model-based product classification, this post explores how AI agents are evolving the taxonomy itself.
1年前
記事のアイキャッチ画像
Building production-ready agentic systems: Lessons from Shopify Sidekick
Shopify Engineering
Learn how we evolved our AI assistant architecture and built robust evaluation frameworks for real-world deployment.
1年前
記事のアイキャッチ画像
MCP UI: Breaking the text wall with interactive components
Shopify Engineering
MCP UI extends the Model Context Protocol to enable AI agents to return fully interactive UI components. It solves the critical challenge that commerce experiences require visual and interactive elements like product selectors, image galleries, and cart flows. This open-source protocol allows agents to embed commerce components while maintaining control through an intent-based messaging system, delivering shopping experiences that go far beyond traditional text-only AI interactions.
1年前
記事のアイキャッチ画像
FlashList v2: A ground-up rewrite for React Native's New Architecture
Shopify Engineering
FlashList v2 is a complete rewrite, delivering faster load times, improved scrolling performance, and precise rendering without requiring item size estimates. It powers thousands of lists in the Shopify mobile app and is now production-ready.
1年前
記事のアイキャッチ画像
Leveraging multimodal LLMs for Shopify’s global catalogue: Recap of expo talk at ICLR 2025
Shopify Engineering
Our Global Catalogue demonstrates the impact of multimodal LLMs on one of commerce’s hardest problems: building a unified, structured, and continuously evolving understanding of billions of product listings created by millions of merchants.
1年前
記事のアイキャッチ画像
Augmented commerce: Machine learning at Shopify
Shopify Engineering
Commerce is a dynamic ecosystem where our mission is to empower every merchant to succeed. We optimize each step of their journey—from product creation to customer delivery—using advanced tools, infrastructure, and partnerships to solve a complex optimization challenge.
1年前
記事のアイキャッチ画像
Remixing Shopify's Admin: How We Made It 30% Faster and AI-Ready
Shopify Engineering
Learn how we just made Shopify's Admin 30% faster while setting it up for AI superpowers. We overhauled admin.shopify.com, transforming the system that supports 67 million daily page views and empowers merchants in managing their businesses.
1年前
記事のアイキャッチ画像
The Future of React Native Graphics: WebGPU, Skia, and Beyond
Shopify Engineering
WebGPU is revolutionizing React Native graphics by enabling a unified backend architecture, leveraging web ecosystem giants like Three.js for 3D experiences, and facilitating general-purpose GPU computing for tasks like machine learning. This has directly led to significant performance enhancements and expanded platform support for React Native Skia, with the upcoming Skia Graphite promising features like automatic threading and seamless 2D/3D composition.
1年前
記事のアイキャッチ画像
Introducing Roast: Structured AI workflows made easy
Shopify Engineering
Our Augmented Engineering DX team tackles developer productivity challenges like flaky tests and low test coverage using AI agents. We discovered breaking complex tasks into discrete steps was key to reliable AI performance, leading to the creation and open-sourcing of Roast, a tool designed to structure AI workflows effectively.
1年前
記事のアイキャッチ画像
Introducing the commerce payments protocol
Shopify Engineering
Learn how we partnered with Coinbase to bring payments onchain at scale with a new smart contract protocol to meet the complex requirements of commerce.
1年前
記事のアイキャッチ画像
Resilient Import Maps - Better Theme Development and Beyond
Shopify Engineering
Import maps are great for both performance and developer experience, but their original limitations made them hard to use, especially at Shopify’s scale. We stepped up and pushed changes across the HTML spec, Chromium and WebKit to fix these issues at the web platform level. Now, developers can interleave JavaScript modules and multiple import maps on their HTML pages without worrying about correctness issues.
1年前
記事のアイキャッチ画像
Evolution of Product Classification at Shopify: From Categories to Comprehensive Product Understanding
Shopify Engineering
Shopify’s product classification system has evolved from basic categorization to an AI-driven framework using Vision Language Models and the Shopify Product Taxonomy. It accurately classifies products, extracts attributes, and processes over 30 million predictions daily, improving search, discovery, trust, and efficiency for merchants and buyers.
1年前
記事のアイキャッチ画像
Mobile Bridge: Making WebViews Feel Native
Shopify Engineering
Learn how we tackled the main issues of traditional WebViews—performance, appearance, and integration—and how Mobile Bridge became a game-changer in our mobile development strategy, even allowing us to accelerate the migration to React Native.
1年前
記事のアイキャッチ画像
Five years of React Native at Shopify
Shopify Engineering
2年前
記事のアイキャッチ画像
How We Built the BFCM 2023 Globe
Shopify Engineering
2年前
記事のアイキャッチ画像
Tophat: Crafting a Delightful Mobile Developer Experience
Shopify Engineering
Insight into how Shopify created a seamless one-click manual testing experience (known as "tophatting") for mobile applications by creating a macOS app.
2年前
記事のアイキャッチ画像
Shipping support for module script integrity in Chrome & Safari
Shopify Engineering
How we shipped ES module integrity in browsers and made commerce and the web better for everyone!
2年前
記事のアイキャッチ画像
Improving Shopify App’s Performance
Shopify Engineering
2年前
記事のアイキャッチ画像
A Packwerk Retrospective
Shopify Engineering
3年前
記事のアイキャッチ画像
Horizontally scaling the Rails backend of Shop app with Vitess
Shopify Engineering
Shop app horizontally scaled a Ruby on Rails app with Vitess. This blog describes Vitess and our detailed approach for introducing Vitess to a Rails app.
3年前
記事のアイキャッチ画像
Getting Started with React Native Skia
Shopify Engineering
3年前
記事のアイキャッチ画像
Introducing Ruvy
Shopify Engineering
3年前
記事のアイキャッチ画像
Building a ShopifyQL Code Editor
Shopify Engineering
3年前
記事のアイキャッチ画像
Contributing support for a Wasm instruction to Winch
Shopify Engineering
Jeff Charles, a Senior Shopify Developer, shares key learnings from his successful pull request to Winch. The pull request aimed to add support for various WebAssembly instructions to Wasmtime's baseline (non-optimizing) compiler.
3年前
記事のアイキャッチ画像
Creating a Flexible Order Routing System with Shopify Functions
Shopify Engineering
In this article, I’ll cover how we added flexibility to our previous one-size-fits-all order routing system with the introduction of “routing rules”, and how we dogfooded our own Shopify Functions feature to give merchants the ability to create their own routing rules.
3年前
記事のアイキャッチ画像
Adventures in Garbage Collection: Improving GC Performance in our Massive Monolith
Shopify Engineering
At the beginning of this year, we ran several experiments aimed at reducing the latency impact of the Ruby garbage collector (GC) in Shopify's monolith. In this article, Jean talks about the changes we made to improve GC performance, and more importantly, how we got to these changes.
3年前
記事のアイキャッチ画像
How Migrating from Vanilla Redux to Redux Toolkit Improved State Management in Shopify POS
Shopify Engineering
A look at Shopify’s experience improving state management in the Shopify POS app by migrating from a Vanilla Redux codebase to Redux Toolkit one.
3年前
記事のアイキャッチ画像
What Being a Staff Developer Means at Shopify
Shopify Engineering
A staff developer is an adaptable engineering leader that's comfortable working with ambiguity.
3年前
記事のアイキャッチ画像
Supporting Passkeys in Shop's Authentication Flows
Shopify Engineering
Passkeys are a new login credential based on public-key cryptography that replace the need for username and password sign-ins.
3年前
記事のアイキャッチ画像
Lessons From Linguistics: i18n Best Practices for Front-End Developers
Shopify Engineering
Here are a few internationalization (i18n) best practices to help front-end developers avoid errors and serve more robust text content on multilingual websites and apps.
3年前
記事のアイキャッチ画像
Unlocking Real-time Predictions with Shopify's Machine Learning Platform
Shopify Engineering
Learn how Shopify Data built new online inference capabilities into its Machine Learning Platform to deploy and serve models for real-time prediction at scale.
3年前
記事のアイキャッチ画像
Improving the Developer Experience with the Ruby LSP
Shopify Engineering
The Ruby LSP is a new language server built at Shopify that makes coding in Ruby even better by providing extra Ruby features for any editor that has a client layer for the LSP. In this article, we’ll cover how we built the Ruby LSP, the features included within it, and how you can install it.
4年前
記事のアイキャッチ画像
The Case Against Monkey Patching, From a Rails Core Team Member
Shopify Engineering
Monkey patching is considered one of the more powerful features of the Ruby programming language. However, by the end of this post I’m hoping to convince you that they should be used sparingly, if at all, because they are brittle, dangerous, and often unnecessary. I’ll also share tips on how to use them as safely as possible in the rare cases where you do need to monkey patch.
4年前
記事のアイキャッチ画像
The 25 Percent Rule for Tackling Technical Debt
Shopify Engineering
Let’s talk about technical debt. Let’s talk about practical usable approaches for actually paying it down on a daily, weekly, monthly, and yearly basis. Let’s talk about what debt needs to be fixed now versus what can wait for better planning.
4年前
記事のアイキャッチ画像
ShopifyQL Notebooks: Simplifying Querying with Commerce Data Models
Shopify Engineering
We recently released ShopifyQL Notebooks, a powerful self-serve tool which enables merchants to explore their business metrics without any SQL expertise. Here’s how we used ShopifyQL and commerce data models to make it possible.
4年前
記事のアイキャッチ画像
Bringing Javascript to WebAssembly for Shopify Functions
Shopify Engineering
While we’re working on getting our Shopify Functions infrastructure ready for the public beta, we thought we’d use this opportunity to shine some light on how we brought JavaScript to WebAssembly, how we made everything fit within our very tight Shopify Function constraints, and what our plans for the future look like.
4年前
記事のアイキャッチ画像
The Complex Data Models Behind Shopify's Tax Insights Feature
Shopify Engineering
The intensive data work behind Shopify's Tax Insights feature required building functionality to handle dynamically changing information
4年前
記事のアイキャッチ画像
The Hardest Part of Writing Tests is Getting Started
Shopify Engineering
The hardest part of writing tests is setting things up. Full test suites have a lot of complicated helper tools, stubs, and fixtures. They’re not easy to understand as a beginner, let alone set up for yourself. This post covers the four things you can do to get started.
4年前
記事のアイキャッチ画像
Performance Testing At Scale—for BFCM and Beyond
Shopify Engineering
Let’s unpack our approach to BFCM Scale Testing to explore some of what it takes to ensure that our ecommerce platform can handle the busiest weekend of the year.
4年前
記事のアイキャッチ画像
From Farmer to Security Engineer: How Dev Degree Helped Me Find My Dream Job
Shopify Engineering
This story looks at the opportunity Dev Degree gave me, the challenges I overcame, and the weaknesses that turned out to be strengths. If you’re thinking about a career in tech, but don’t think you have the stuff for it, this story is for you.
4年前
記事のアイキャッチ画像
Ruby 3.2’s YJIT is Production-Ready
Shopify Engineering
YJIT, a just-in-time (JIT) implementation on top of CRuby built at Shopify, is now production-ready and delivering major improvements to performance and speed. Maxime (Senior Staff Engineer and leader of the YJIT project) shares the updates that have been made in this newest version of YJIT, and future plans for further optimization.
4年前
記事のアイキャッチ画像
How Good Documentation Can Improve Productivity
Shopify Engineering
Good documentation has many benefits, but first and foremost it boosts engineers’ productivity. Here are a few tips to encourage a strong writing culture.
4年前
記事のアイキャッチ画像
From Ruby to Node: Overhauling Shopify’s CLI for a Better Developer Experience
Shopify Engineering
In this blog post, Pedro explains why we rewrote Shopify CLI into Node instead of Ruby, the tradeoffs that came with the decision, the principles we embraced in this new iteration, and the challenges and ideas ahead of us to explore.
4年前
記事のアイキャッチ画像
Reliving Your Happiest HTTP Interactions with Ruby’s VCR Gem
Shopify Engineering
VCR is a Ruby library that records HTTP interactions and plays them back to your test suite, verifying input and returning predictable output. If you're struggling with difficult to maintain mocks, misbehaving APIs or complex multi-step interactions and would like tests that are more reliable, faster, and easier to debug, VCR can help you get there. Here’s how.
4年前
記事のアイキャッチ画像
Migrating our Largest Mobile App to React Native
Shopify Engineering
In 2020, we announced that React Native is the future of mobile at Shopify. As part of that journey, we’ve been migrating Shopify Mobile (our largest app at 300 screens per platform) from native to React Native. Here’s how it’s going.
4年前
記事のアイキャッチ画像
Optimizing Ruby’s Memory Layout: Variable Width Allocation
Shopify Engineering
Shopify is improving CRuby’s performance in Ruby 3.2 by optimizing the memory layout in the garbage collector through the Variable Width Allocation project.
4年前
記事のアイキャッチ画像
Year in Review 2022: Tenderlove's Ruby and Rails Reflections and Predictions
Shopify Engineering
Senior Staff Engineer and Rails core team member Aaron Patterson recaps his favourite Ruby and Rails updates of 2022 and some predictions (okay, so maybe it’s more of a wish list) for 2023.
4年前
記事のアイキャッチ画像
Automatically Rotating GitHub Tokens (So You Don’t Have To)
Shopify Engineering
We encountered a problem that lives in the gap between two tried-and-true GitHub authentication methods: personal access tokens and built-in authentication. Our solution? Build a system to automatically rotate GitHub access tokens. Here’s how we did it and how you can do it too.
4年前
記事のアイキャッチ画像
Shopify Embraces Rust for Systems Programming
Shopify Engineering
Shopify is adopting Rust as our systems programming language, and joining the Rust Foundation.
4年前
記事のアイキャッチ画像
Three Essential Remote Work Practices for Engineering Teams
Shopify Engineering
It’s been around two and a half years since Shopify became a fully remote-first company. James Stanier shares three big learnings that are essential to succeeding remotely.
4年前
記事のアイキャッチ画像
Planning in Bets: Risk Mitigation at Scale
Shopify Engineering
What do you do with a finite amount of time to deal with an infinite number of things that can go wrong? This post breaks down a high-level risk mitigation process into four questions that can be applied to nearly any scenario in order to help you make the best use of your time and resources available.
4年前
記事のアイキャッチ画像
Our Solution for Measuring React Native Rendering Times
Shopify Engineering
After Shopify went all-in on React Native, we had to find a way to confirm our mobile apps are fast. The solution is an open-source @shopify/react-native-performance library, which measures rendering times in React Native apps.
4年前
記事のアイキャッチ画像
Implementing Server-Driven UI Architecture on the Shop App
Shopify Engineering
Ashwin explains why and how we implemented server-driven UI in the Shop App’s Store Screen, and his experience working on the project as a Dev Degree intern.
4年前
記事のアイキャッチ画像
What We Learned from Open-Sourcing FlashList
Shopify Engineering
Here's how we launched the React Native List library FlashList as an open-source project, and how you can make your next open-source project a success.
4年前
記事のアイキャッチ画像
Apollo Cache is Your Friend, If You Get To Know It
Shopify Engineering
Shopify's Raman Lally delves into the Apollo GraphQL client cache and the life cycle of objects that are cached within it.
4年前
記事のアイキャッチ画像
Mixing It Up: Remix Joins Shopify to Push the Web Forward
Shopify Engineering
At Shopify, the Remix open-source community has a strong sponsor and supporter that will enable the web framework to accelerate its roadmap.
4年前
記事のアイキャッチ画像
A Software Engineer's Guide to Working Across Time Zones
Shopify Engineering
A few tips to make asynchronous communication across time zones a positive experience
4年前
記事のアイキャッチ画像
On the Importance of Pull Request Discipline
Shopify Engineering
Unorganized pull requests are the bane of large codebases. Follow Yash's tips to prevent your PRs from getting roasted in the group chat.
4年前
記事のアイキャッチ画像
The Engineering Story Behind Flex Comp
Shopify Engineering
How we built Flex Comp: Shopify's new approach to compensation that gives employees the ability to choose how they want to allocate their total reward between base salary, Restricted Stock Units (RSUs), and Stock Options today, with new features like Shop Cash in the future.
4年前
記事のアイキャッチ画像
Safely Adding NOT NULL Columns to Your Database Tables
Shopify Engineering
Recommendations from Shopify's Data Migrations team for adding NOT NULL columns safely to your own database tables, based on a recent investigation into schema change safety using using the popular Large Hadron Migrator (LHM) gem.
4年前
記事のアイキャッチ画像
A Software Engineer’s Guide to Giving Feedback that Actually Matters
Shopify Engineering
If you see something wrong in a codebase or architecture, and you don’t say something, you will suffer the consequences. Jack teaches how to give feedback that matters to get positive results.
4年前
記事のアイキャッチ画像
Lessons From Building Android Widgets
Shopify Engineering
4年前
記事のアイキャッチ画像
Lessons From Building iOS Widgets
Shopify Engineering
4年前
記事のアイキャッチ画像
What is a Full Stack Data Scientist?
Shopify Engineering
4年前
記事のアイキャッチ画像
Four Approaches to Debugging Server-side WebAssembly
Shopify Engineering
Shopify Functions enables customizing the business logic of Shopify’s back end with server-side WebAssembly. There are many benefits to using a WebAssembly environment to host these customizations such as low cold-start latency and robust security compared to other alternatives. However, WebAssembly poses new challenges when debugging.
4年前
記事のアイキャッチ画像
Focus On Behavior, Not State, for a More Maintainable Codebase
Shopify Engineering
How we moved from focusing on state (what an object is) towards behavior (what an object does) while building our Purchase Options APIs as a way to create a more maintainable codebase.
4年前
記事のアイキャッチ画像
RailsConf 2022: 10 Shopify Tech Talks You Might Have Missed
Shopify Engineering
Watch Shopify's tech talent tackle topics ranging from virtual machines, performance improvements, and investing in open source teams
4年前
記事のアイキャッチ画像
When Culture and Code Reviews Collide, Communication is Key
Shopify Engineering
When we understand each other’s cultural context, the emphasis in code reviews can shift from confrontation to collaboration.
4年前
記事のアイキャッチ画像
When is JIT Faster Than A Compiler?
Shopify Engineering
4年前
記事のアイキャッチ画像
Six Tips for Staying Technical as a CTO
Shopify Engineering
Here's what’s on my mind as a technical leader: How do I gain the credibility of the smart people on my team who are far more technical and detailed than I am, in order to lead them?
4年前
記事のアイキャッチ画像
Mastering React’s Stable Values
Shopify Engineering
The concept of stable value is a distinctly React term, and especially relevant since the introduction of Functional Components. It refers to values (usually coming from a hook) that have the same value across multiple renders. And they’re immediately confusing. In this post, Colin Gray, Principal Developer at Shopify, walks through some cases where they really matter and how to make sense of them.
4年前
記事のアイキャッチ画像
10 Tips for Building Resilient Payment Systems
Shopify Engineering
The top 10 tips and tricks for building resilient payment systems from a Staff Developer working on Shopify’s payment infrastructure.
4年前
記事のアイキャッチ画像
5 Steps to Bounce Back from a Negative Performance Review
Shopify Engineering
Ebun breaks down how she used a not-so-great performance review to set clear development goals for herself and increase alignment with her lead, ultimately leading to a successful next review.
4年前
記事のアイキャッチ画像
Shopify’s Technical Interview Process: What to Expect and How to Prepare
Shopify Engineering
The interview process can be one of the most daunting aspects of finding a new gig—but it doesn’t have to be. This guide pulls back the curtain on what to expect during the interview process for technical roles at Shopify and sets you up for success with tips for each stage.
4年前
記事のアイキャッチ画像
Navigating Recurring Payments in India: A Backend Perspective
Shopify Engineering
To address the new RBI framework for recurring payments in Shopify’s billing platform, we worked with a local payment provider that could accommodate both card-based payments as well as a local payment method called Unified Payments Interface (UPI).
4年前
記事のアイキャッチ画像
Perspectives on Onboarding: Joining Shopify as an Engineering Leader
Shopify Engineering
What’s it really like for new engineering leaders at Shopify? I asked Avanti Ketkar and Maria Robledo, who both joined the team this past year, to spill the tea about their first few months. They share their perspectives on how the onboarding experience helped them build context, relationships, and trust.
4年前
記事のアイキャッチ画像
How We Built Hydrogen: A React Framework for Building Custom Storefronts
Shopify Engineering
We’ve been building Hydrogen for more than a year. Here’s a look behind the scenes at how we did it, what we learned from making big bets, and what it was like building a new framework from the ground up on experimental technology.
4年前
記事のアイキャッチ画像
Making Open Source Safer for Everyone with Shopify’s Bug Bounty Program
Shopify Engineering
Zack Deveau, Senior Application Security Engineer at Shopify, shares the details behind a recent contribution to the Rails library, inspired by a bug bounty report we received. He'll go over the report and its root cause, how we fixed it in our system, and how we took it a step further to make Rails more secure by updating the default serializer for a few classes to use safe defaults.
4年前
記事のアイキャッチ画像
How We Built Shopify Party
Shopify Engineering
Shopify Party is a browser-based internal tool that we built to make our virtual hangouts more fun. With Shopify’s move to remote, we wanted to explore how to give people a break from video fatigue and create a new space designed for social interaction. Here's how we built it.
4年前
記事のアイキャッチ画像
The Journey to Cloud Development: How Shopify Went All-in on Spin
Shopify Engineering
How we reinvented our developer environment by going cloud native to keep up with increasing complexity and exponential growth.
4年前
記事のアイキャッチ画像
Building a Form with Polaris
Shopify Engineering
4年前
記事のアイキャッチ画像
Implementing Equality in Ruby
Shopify Engineering
4年前
記事のアイキャッチ画像
Our Favorite Moments From RailsConf 2022
Shopify Engineering
The Rails community gathered in Portland for the first in-person RailsConf in two years. Shopify developers recap a few highlights from the three-day event.
4年前
記事のアイキャッチ画像
Our Experience Porting the YJIT Ruby Compiler to Rust
Shopify Engineering
In this post, I want to give a nuanced perspective on our experience porting YJIT from C to Rust. I'll talk about the positives, but also discuss the things that we found challenging or suboptimal in our experience.
4年前
記事のアイキャッチ画像
Talk Nerdy to Me: 10 Tech Podcast Recommendations from Shopify Engineering
Shopify Engineering
We asked our tech talent which podcasts they’re tuning into and curated a list of their favorites. Whether you’re in the mood for something quick and informative, or witty and conversational, we think you’ll find something on this list you’ll enjoy.
4年前
記事のアイキャッチ画像
Möbius: Shopify’s Unified Edge
Shopify Engineering
4年前
記事のアイキャッチ画像
A Data Scientist’s Guide To Measuring Product Success
Shopify Engineering
If you’re a data scientist on a product team, much of your work involves getting a product ready for release. You may conduct exploratory data analyses to understand your product’s market, or build the data models and pipelines needed to power a new product feature, or design a machine learning model to unlock new product functionality. But your work doesn’t end once a product goes live. After a product is released, it’s your job to help identify if your product is a success.
4年前
記事のアイキャッチ画像
Shopify’s Bug Bounty Program Raises Maximum Payout in 2022
Shopify Engineering
In 2022, Shopify's Bug Bounty Program is doubling the maximum reward to $100,000 and moving key services into the highest severity level.
4年前
記事のアイキャッチ画像
After the Refactor: A Path to Faster Rendering with Liquid-C
Shopify Engineering
Not every feature of open-source template language Liquid has been ported over to Liquid-C, such as the If tag and For Tag. I started to look into how to compile Liquid’s If tag from Liquid-C, a process that would improve parsing time.
4年前
記事のアイキャッチ画像
7 Tips For Optimizing Apache Flink Applications
Shopify Engineering
We’ve spent a lot of time on performance tuning our Apache Flink application. We’ll walk you through key lessons for optimizing large stateful Apache Flink applications.
4年前
記事のアイキャッチ画像
Adding the V8 CPU Profiler to v8go
Shopify Engineering
4年前
記事のアイキャッチ画像
Changing a polymorphic_type in Rails
Shopify Engineering
5年前
記事のアイキャッチ画像
Upgrading MySQL at Shopify
Shopify Engineering
5年前
記事のアイキャッチ画像
Remote rendering: Shopify’s take on extensible UI
Shopify Engineering
A deep dive into the latest generation of our technology that allows developers to extend Shopify’s UI.
5年前
記事のアイキャッチ画像
Building an App Clip with React Native
Shopify Engineering
5年前
記事のアイキャッチ画像
Five Tips for Growing Your Engineering Career
Shopify Engineering
The beginning stages of a career in engineering can be daunting. You’re trying to make the most of the opportunity at your new job and learning as much as you can, and as a result, it can be hard to find time and energy to focus on growth. Here are five practical tips that can help you grow as you navigate your engineering career.
5年前
記事のアイキャッチ画像
The Vitality of Core Web Vitals
Shopify Engineering
5年前
記事のアイキャッチ画像
The AWARE Development Plan
Shopify Engineering
5年前
記事のアイキャッチ画像
Try Out YJIT for Faster Rubying
Shopify Engineering
5年前
記事のアイキャッチ画像
Shard Balancing: Moving Shops Confidently with Zero-Downtime at Terabyte-scale
Shopify Engineering
Moving a shop from one shard to another requires engineering solutions around large, interconnected systems. The flexibility to move shops from shard to shard allows Shopify to provide a stable, well-balanced infrastructure for our merchants. With merchants creating their livelihood on the platform, it’s more important than ever that Shopify remains a sturdy backbone. High-confidence shard rebalancing is simply one of the ways we can do this.
5年前
記事のアイキャッチ画像
Connecting with Mob Programming
Shopify Engineering
5年前
記事のアイキャッチ画像
Shopify-Made Patterns in Our Rails Apps
Shopify Engineering
5年前
記事のアイキャッチ画像
Querying Strategies for GraphQL Clients
Shopify Engineering
5年前
記事のアイキャッチ画像
Schematizing Deletion at Scale
Shopify Engineering
5年前
記事のアイキャッチ画像
Updating Illustrations at Scale
Shopify Engineering
The Polaris team creates tools, education and documentation that helps unite teams across Shopify to build better experiences. We created Polaris, our design system, and continue to maintain it. We are a multidisciplinary team with a range of experience. Some people have been at Shopify for over 6 years and others, like me, are a part of our Dev Degree program.
5年前
記事のアイキャッチ画像
Other Driven Developments
Shopify Engineering
Mental models within an industry, company, or even a person, change constantly. As methodologies mature, we see the long term effects our choices have wrought and can adjust accordingly. As a team or company grows, methodologies that worked well for five people may not work as well for 40 people. If all employees could keep an entire app in their head, we’d need fewer rules and checks and balances on our development, but that is not the case. As a result, we summarize things we notice have been implicit in our work.
5年前
記事のアイキャッチ画像
How I Define My Boundaries to Prevent Burnout
Shopify Engineering
There’s a way to build a model for your life and the other demands on you. It doesn’t have to be 100 hours a week. It might not even be 40 hours a week. Whatever sustainable model you come up with, prioritize fiercely and communicate expectations accordingly. I’ve worked this way for three decades through different phases of my life. The hours have changed, but the basic model and principles remain the same: Define the time, prioritize the work, and communicate those two effectively.
5年前
記事のアイキャッチ画像
Dynamic ProxySQL Query Rules
Shopify Engineering
ProxySQL comes with a powerful feature called query rules. The main use of these rules at Shopify is to reroute, rewrite, or reject queries matching a specified regex. However, with great power comes great responsibility. These rules are powerful and can have unexpected consequences if used incorrectly. At Shopify’s scale, we’re running thousands of ProxySQL instances, so applying query rules to each one is a painful and time consuming process, especially during an incident. We’ve built a tool to help us address these challenges and make deploying new rules safe and scalable.
5年前
記事のアイキャッチ画像
Management of Native Code and React Native at Shopify
Shopify Engineering
A year ago, we announced our decision to place our bets, and our developer resources, on React Native. As you could expect, the move was met internally with a mix of excitement and apprehension, but a year later, we are still convinced that we made the right decision.
5年前
記事のアイキャッチ画像
How to Build a Web App with and without Rails Libraries
Shopify Engineering
How would we build a web application only using the standard Ruby libraries? In this article, I’ll break down the key foundational concepts of how a web application works while building one from the ground up. If we can build a web application only using Ruby libraries, why would we need web server interfaces like Rack and web applications like Ruby on Rails? By the end of this article, you’ll gain a new appreciation for Rails and its magic.
5年前
記事のアイキャッチ画像
Remove Circular Dependencies by Using Dependency Injection and the Repository Pattern in Ruby
Shopify Engineering
There are dependencies between gems and the platforms that use them. In scenarios where the platforms have the data and the gem has the knowledge, there is a direct circular dependency between the two and both need to talk to each other. I’ll show you how we used the Repository pattern in Ruby to remove that circular dependency and help us make gems thin and stateless. Plus, I’ll show you how using Sorbet in the implementation made our code typed and cleaner.
5年前
記事のアイキャッチ画像
Capturing Every Change From Shopify’s Sharded Monolith
Shopify Engineering
Shopify is moving from existing query-based CDC (Change-Data Capture) tooling (Longboat) to an immutable, append-only, log-based mechanism. This has required a complete re-platforming, involving a shift to new, open source technology such as Kafka Connect and Debezium.
5年前
記事のアイキャッチ画像
Updates on Shopify’s Bug Bounty Program
Shopify Engineering
For three years we, Shopify’s Application Security team, have set aside time to reflect on our bug bounty program and share recent insights. This past year has been quite a ride, as our program has been busier than ever! We’re excited to share what we have learned, and share some of the great things we have planned!
5年前
記事のアイキャッチ画像
4 Tips for Shipping Data Products Fast
Shopify Engineering
5年前
記事のアイキャッチ画像
Keeping Developers Happy with a Fast CI
Shopify Engineering
Slow CI systems are often responsible for making frustrated developers. Keeping these systems fast requires an ongoing effort. However, before jumping into implementing performance tweaks, it's important to set up a solid monitoring system.
6年前
記事のアイキャッチ画像
Read Consistency with Database Replicas
Shopify Engineering
6年前
記事のアイキャッチ画像
Using Betas to Deploy New Features Safely
Shopify Engineering
For companies like Shopify that practice continuous deployment, our code is changing multiple times every day. We have to de-risk new features to ship safely and confidently without impacting the million+ merchants using our platform. Beta flags are one approach to feature development that gives us a number of notable advantages.
6年前
記事のアイキャッチ画像
Managing Google Cloud Platform Project-Wide SSH Keys
Shopify Engineering
As a member of the Infrastructure Security team, Cailyn set out to create an application to silently and effectively manage SSH keys that persist inside of Shopify's Google Cloud Platform project-wide metadata.
6年前
記事のアイキャッチ画像
Capacity Planning at Scale
Shopify Engineering
6年前
記事のアイキャッチ画像
Vouching for Docker Images
Shopify Engineering
6年前
記事のアイキャッチ画像
Adopting Sorbet at Scale
Shopify Engineering
6年前
記事のアイキャッチ画像
Static Typing for Ruby
Shopify Engineering
6年前
記事のアイキャッチ画像
Tophatting in React Native
Shopify Engineering
6年前
記事のアイキャッチ画像
Building Reliable Mobile Applications
Shopify Engineering
6年前
記事のアイキャッチ画像
ShipIt! Presents: AR/VR at Shopify
Shopify Engineering
6年前
記事のアイキャッチ画像
How We Built Size.link
Shopify Engineering
6年前
記事のアイキャッチ画像
Media at Scale: Callbacks vs pipelines
Shopify Engineering
6年前
記事のアイキャッチ画像
A First Look at Reanimated 2
Shopify Engineering
6年前
記事のアイキャッチ画像
Spark Joy by Running Fewer Tests
Shopify Engineering
6年前
記事のアイキャッチ画像
Understanding Programs Using Graphs
Shopify Engineering
6年前
記事のアイキャッチ画像
ShipIt! Presents: How Shopify Uses Nix
Shopify Engineering
6年前
記事のアイキャッチ画像
What Is Nix
Shopify Engineering
6年前
記事のアイキャッチ画像
Dev Degree: Behind the Scenes
Shopify Engineering
6年前
記事のアイキャッチ画像
How to Fix Slow Code in Ruby
Shopify Engineering
6年前
記事のアイキャッチ画像
Categorizing Products at Scale
Shopify Engineering
6年前
記事のアイキャッチ画像
Software Release Culture at Shopify
Shopify Engineering
6年前
記事のアイキャッチ画像
Your Circuit Breaker is Misconfigured
Shopify Engineering
7年前
記事のアイキャッチ画像
Bug Bounty Year in Review 2019
Shopify Engineering
7年前
記事のアイキャッチ画像
Make Great Decisions Quickly with TOMASP
Shopify Engineering
7年前
記事のアイキャッチ画像
How to Write Fast Code in Ruby on Rails
Shopify Engineering
7年前
記事のアイキャッチ画像
Living on the Edge of Rails
Shopify Engineering
7年前
記事のアイキャッチ画像
Pagination with Relative Cursors
Shopify Engineering
7年前
記事のアイキャッチ画像
Componentizing Shopify’s Tax Engine
Shopify Engineering
7年前
記事のアイキャッチ画像
Pair Programming Explained
Shopify Engineering
Pair Programming is when two people write, debug, or explore code together. It’s simple, but getting the most out of your pairing session can take some work.
7年前
記事のアイキャッチ画像
One Million Dollars in Bug Bounties
Shopify Engineering
7年前
記事のアイキャッチ画像
Developer Kirsten Westeinde talks Developing a Growth Mindset, the Early Days of Shopify, and Working with Go
Shopify Engineering
Meet Kirsten Westeinde, she’s a Development Manager based in San Francisco, California. She’s been working at Shopify for just over five years now and has seen the ebbs and flows of the company as it’s continued to scale dramatically over the years.
7年前
記事のアイキャッチ画像
Unifying Our GraphQL Design Patterns and Best Practices with Tutorials
Shopify Engineering
Read Time: 5 minutes In 2015, Shopify began a journey to put mobile first. The biggest undertaking was rebuilding our native Shopify Mobile app and improving the tools and technology to accomplish this. We experimented with GraphQL to build the next generation of APIs that power our mobile apps and give our 600,000+ merchants the same seamless experience when using Shopify. There are currently hundreds Shopify developers across teams and offices contributing to our GraphQL APIs including our two public APIs: Admin and Storefront.
8年前
記事のアイキャッチ画像
Attracting Local Talent And Building Mobile Apps: A Developer Hiring Initiative
Shopify Engineering
Shopify is a commerce platform that serves over 600,000+ merchants and employs over 3000 people across the globe. We’re always on the lookout for highly skilled individuals with diverse backgrounds to join our team, and that requires us to connect with them outside traditional recruitment channels. That’s why last year we ran the “Build Things, Show Shopify” initiative inviting developers outside of Shopify to build an app and showcase their finished product to a multidisciplinary panel of Shopify employees as well as in front of hiring managers and VCs. The outcome? Not only did we build a local developer community in Ottawa, but we added a number of potential hires to our recruiting pipeline.
8年前
記事のアイキャッチ画像
Bug Bounty Year in Review 2018
Shopify Engineering
8年前
記事のアイキャッチ画像
Director of Engineering, Lawrence Mandel Talks Road to Leadership, Growth, and Finding Balance.
Shopify Engineering
Lawrence Mandel is a Director of Production Engineering leading Shopify’s Developer Acceleration team and has been at Shopify for over a year. He previously worked at IBM and Mozilla where he started as a software developer before transitioning into leadership roles. Through all his work experience, he’s learned to understand the meaning of time management and to prioritize the most important things in his life, which are his family, health, and work.
8年前
記事のアイキャッチ画像
Introducing the Deprecation Toolkit
Shopify Engineering
8年前
記事のアイキャッチ画像
Mobile Tophatting at Shopify
Shopify Engineering
8年前
記事のアイキャッチ画像
E-Commerce at Scale: Inside Shopify's Tech Stack - Stackshare.io
Shopify Engineering
9 minute read Before 2015, we had an Operations and Performance team. Around this time, we decided to create the Production Engineering department and merge the teams. The department is responsible for building and maintaining common infrastructure that allows the rest of product development teams to run their code. Both Production Engineering and all the product development teams share responsibility for the ongoing operation of our end user applications. This means all technical roles share monitoring and incident response, with escalation happening laterally to bring in any skill set required to restore service in case of problems.
8年前
記事のアイキャッチ画像
Behind The Code: Jennice Colaco, Backend Developer
Shopify Engineering
Behind the Code is an initiative with the purpose of sharing the various career stories of our engineers at Shopify, to show that the path to development is non-linear and quite interesting. The features will showcase people just starting their careers, those who made career switches, and those who've been in the industry for many years. Enjoy!
8年前
記事のアイキャッチ画像
Scaling iOS CI with Anka
Shopify Engineering
8年前
記事のアイキャッチ画像
Introducing the Merge Queue
Shopify Engineering
8年前
記事のアイキャッチ画像
A Pods Architecture To Allow Shopify To Scale
Shopify Engineering
In 2015, it was no longer possible to continue buying a larger database server for Shopify. We finally had no choice but to shard the database, which allowed us to horizontally scale our databases and continue our growth. However, what we gained in performance and scalability we lost in resilience. Throughout the Shopify codebase was code like this: Sharding.with_each_shard do some_action end If any of our shards went down, that entire action would be unavailable across the platform. We realized this would become a major problem as the number of shards continued to increase. In 2016 we sat down to reorganize Shopify’s runtime architecture.
8年前
記事のアイキャッチ画像
Accelerating Android Talent Through Community Bootcamps
Shopify Engineering
6 minute read The mobile team knew they needed developers, particularly Android developers. A few years ago, Shopify pivoted to mobile-first, which led to the launches of Shopify Mobile, Shopify Pay, Frenzy, and others. To maintain momentum, Shopify had to keep building up its mobile talent. Back when Shopify's mobile teams spun up, many of our then-early mobile developers never did any mobile development before, instead teaching themselves how to do it on the job. From this observation, we had an insight: what if we could teach developers how to build an Android app, via a Shopify-hosted workshop? The benefits were obvious: this educational initiative could help our local developer community pick up some new skills, while potentially allowing us to meet exciting new talent. The idea for Android Bootcamp was born.
9年前
記事のアイキャッチ画像
Future Proofing Our Cloud Storage Usage
Shopify Engineering
How we reduced error rates, and dropped latencies across merchants’ flows Reading Time: 6 Minutes Shopify merchants trust that when they build their stores on our platform, we’ve got their back. They can focus on their business, while we handle everything else. Any failures or degradations that happen put our promise of a sturdy, battle-tested platform at risk. To do so, we need to ensure that the platform stays up and stays reliable. Shopify since 2016 has grown from 375,000 merchants to over 600,000. As of today, an average of 450,000 S3 operations per second are being made through our platform. However, that rapid growth also came with an increased S3 error rate, and increased read and write latencies. While we use S3 at Shopify, if your application uses any flavor of cloud storage, and its use of cloud storage strongly correlates with the growth of your user base—whether it’s storing user or event data—I’m hoping this post provides some insight into how to optimize your cloud stora
9年前
記事のアイキャッチ画像
2017 Bug Bounty Year in Review
Shopify Engineering
7 minute read At Shopify, our bounty program complements our security strategy and allows us to leverage a community of thousands of researchers who help secure our platform and create a better Shopify user experience. We first launched the program in 2013 and moved to the HackerOne platform in 2015 to increase hacker awareness. Since then, we've continued to see increasing value in the reports submitted, and 2017 was no exception.
9年前
記事のアイキャッチ画像
Implementing ChatOps into our Incident Management Procedure
Shopify Engineering
8 minute read Production engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices. At Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team.
9年前
記事のアイキャッチ画像
How We Enable Our Interns to Make an Impact
Shopify Engineering
Making an Impact When interns join Shopify for their internship term, they work on projects that will impact our merchants, partners, and even their fellow developers. Some of these projects will alleviate a merchant's pain points, like the ability to sell their products on different channels, or simplify a complicated process for our developers. We want interns to leave knowing they worked on real projects with real impact.
9年前
記事のアイキャッチ画像
Tell Your Stories: The Benefits of Strategic Engineering Communications
Shopify Engineering
In early 2016, we faced a problem at Shopify. We were growing quickly, and decisions could no longer be made across the room, so to speak. Four offices became five, accommodating that growth raised interesting questions like: how would new people know the history of the company, and how could existing Shopifolk keep up with new developments? In addition to sharing knowledge inside the company, we also wanted to let people outside Shopify know what we were working on to give back to the community and to support recruitment efforts. Engineering communications was born to solve a specific problem. A valued saying here is “do things, tell people,” but, while we’re very good at the first part, we weren’t living up to expectations on the second. Ad hoc worked when we were smaller, but with technical stories now coming from teams as varied as production engineering, mobile, front-end development, and data engineering, we needed something more formalized. Strong communications inside the engin
9年前
記事のアイキャッチ画像
Code Style Consistency for Shopify’s Decade-Old Codebase
Shopify Engineering
5 minute read Over the course of Shopify's 13-year codebase history, the core platform has never been rewritten. That meant a slew of outdated code styles, piling atop of one another and without a lot of consistency. By 2012, our CEO Tobi created a draft Ruby style guide to keep up with the growth. Unfortunately, it never became embedded in our programming culture and many people didn't even know it existed.
9年前
記事のアイキャッチ画像
How We Support Intern Growth through Challenge and Practice
Shopify Engineering
4 minute read An essential part of working as a developer is getting practical experience in the real world, of which internships can play a meaningful part. The Shopify internship program, which started back in 2011, runs for four months during the summer, fall, and winter terms. Interns can work from one of our offices in Waterloo, Toronto, Ottawa, and Montreal.
9年前
記事のアイキャッチ画像
How We Optimized Product Syncing for Facebook
Shopify Engineering
4 minute read Merchants can sell their products on Shopify in many ways. In addition to their own website, merchants can integrate with some of the biggest social media channels on the internet. Over 140,000 merchants participate in our Facebook channel, where they can display and sell their products on Facebook.
9年前
記事のアイキャッチ画像
How Shopify Capital Uses Quantile Regression To Help Merchants Succeed
Shopify Engineering
6 minute read Shopify Capital provides funding to help merchants on Shopify grow their businesses. But how does Shopify Capital award these merchant cash advances? In this post, I'll dive deep into the machine-learning technique our Risk-Algorithms team uses to decide eligibility for cash advances. The exact features that go into the predictive model that powers Shopify Capital are secret, but I can share the key technique we use: quantile regression.
9年前
記事のアイキャッチ画像
Upgrading Shopify to Rails 5
Shopify Engineering
Today, Shopify runs on Rails 5.0, the latest version. It’s important to us to stay on the latest version so we can improve the performance and stability of the application without having to increase the maintenance cost of applying monkey patches. This guarantees we would always be in the version maintained by the community; and, that we would have access to new features soon. Upgrading the Shopify monolith—one of the oldest and the largest Rails applications in the industry—from Rails 4.2 to 5.0 took us nearly a year. In this post, I’ll share our upgrade story and the lessons we learned. If you're wondering how the Shopify scale looks like or you plan a major Rails upgrade, this post is for you.
9年前
記事のアイキャッチ画像
Maintaining a Swift and Objective-C Hybrid Codebase
Shopify Engineering
6 minute read Swift is gaining popularity among iOS developers, which is of no surprise. It's strictly typed, which means you can prove the correctness of your program at compile time, given that your typesystem describes the domain well. It's a modern language offering syntax constructs encouraging developers to write better architecture using fewer lines of code, making it expressive. It's more fun to work with, and all the new Cocoa projects are being written in Swift. At Shopify, we want to adopt Swift where it makes sense, while understanding that many existing projects have an extensive codebase (some of them written years ago) in Objective-C (OBJC) that are still actively supported. It's tempting to write new code in Swift, but we can't migrate all the existing OBJC codebase quickly. And sometimes it just isn't worth the effort.
9年前
記事のアイキャッチ画像
How 17 Lines of Code Improved Shopify.com Loading by 50%
Shopify Engineering
3 minute read Big improvements don't have to be hard nor take a long time to implement. It took, for example, only 17 lines of code to decrease the time to display text on Shopify.com by 50%. That saved visitors 1.2 seconds: each second matters given that 40% of users expect a website to load within two seconds and those same users will abandon a site if it takes longer than three.
9年前
記事のアイキャッチ画像
Bootsnap: Optimizing Ruby App Boot Time
Shopify Engineering
8 minute read Hundreds of Shopify developers work on our largest codebase, the monolithic Rails application that powers most of our product offering. There are various benefits to having a “majestic monolith,” but also a few downsides. Chief among them is the amount of time people spend waiting for Rails to boot. Doing development, two of the most common tasks are running a development server and running a unit test file. By improving the performance of these tasks, we will also improve the experience for developers working on this codebase and achieve higher iteration speed. We started measuring and profiling the following code paths: Development server: time to first request Unit testing: time to first unit test
9年前
記事のアイキャッチ画像
Building a Dynamic Mobile CI System
Shopify Engineering
18 minute read The mobile space has changed quickly, even within the past few years. At Shopify, the world’s largest Rails application, we have seen the growth and potential of the mobile market and set a goal of becoming a mobile-first company. Today, over 130,000 merchants are using Shopify Mobile to set up and run their stores from their smartphones. Through the inherent simplicity and flexibility of the mobile platform, many mobile-focused products have found success. This post was co-written with Arham Ahmed, and shout-outs to Sean Corcoran of MacStadium and Tim Lucas of Buildkite.
9年前
記事のアイキャッチ画像
The Side Hustle: Building a Quadcopter Controller for iOS
Shopify Engineering
Our engineering blog is home to our stories sharing technical knowledge and lessons learned. But that's only part of the story: we hire passionate people who love what they do and are invested in mastering their craft. Today we launch "The Side Hustle," an occasional series highlighting some side projects from our devs while off the Shopify clock. When Gabriel O'Flaherty-Chan noticed quadcopter controllers on mobile mostly translated analog controls to digital, he took it upon himself to find a better design. 7 minute read For under $50, you can get ahold of a loud little flying piece of plastic from Amazon, and they’re a lot of fun. Some of them even come with cameras and Wi-Fi for control via a mobile app. Unfortunately, these apps are pretty low quality — they’re unreliable and frustrating to use, and look out of place in 2017. The more I used these apps, the more frustrated I got, so I started thinking about ways I could provide a better solution, and two months later I emerged wit
9年前
記事のアイキャッチ画像
Sharing the Philosophy Behind Shopify's Bug Bounty
Shopify Engineering
2 minute read Bug bounties have become commonplace as companies realize the advantages to distributing the hunt for flaws and vulnerabilities among talented people around the world. We're no different, launching a security response program in 2012 before evolving it into a bug bounty with HackerOne in 2015. Since then, we've seen meaningful results including nearly 400 fixes from 250 researchers, to the tune of bounties totalling over half a million dollars. Security is vital for us. With the number of shops and volume of info on our platform, it's about maintaining trust with our merchants. Entrepreneurs are running their businesses and they don't want to worry about security, so anything we can do to protect them is how we measure our success. As Tobi recently mentioned on Hacker News, “We host the livelihoods of hundreds of thousands of other businesses. If we are down or compromised all of them can't make money.” So, we have to ensure any issue gets addressed.
10年前
記事のアイキャッチ画像
Surviving Flashes of High-Write Traffic Using Scriptable Load Balancers (Part II)
Shopify Engineering
7 minute read In the first post of this series, I outlined Shopify’s history with flash sales, our move to Nginx and Lua to help manage traffic, and the initial attempt we made to throttle traffic that didn’t account sufficiently for customer experience. We had underestimated the impact of not giving preference to customers who’d entered the queue at the beginning of the sale, and now we needed to find another way to protect the platform without ruining the customer experience.
10年前
記事のアイキャッチ画像
Surviving Flashes of High-Write Traffic Using Scriptable Load Balancers (Part I)
Shopify Engineering
7 minute read This Sunday, over 100 million viewers will watch the Super Bowl. Whether they’re catching the match-up between the Falcons and the Patriots, or there for the commercials between the action, that’s a lot of eyeballs—and that’s only counting America. But all that attention doesn’t just stay on the screen, it gets directed to the web, and if you’re not prepared curious visitors could be rewarded with a sad error page. The Super Bowl makes us misty-eyed because our first big flash sale happened in 2007, after the Colts beat the Bears. Fans rushed online for T-shirts celebrating the win, giving us a taste of what can happen when a flood of people convene on one site in a very short duration of time. Since then, we’ve been continually levelling up our ability to handle flash sales, and our merchants have put us to the test: on any given day, they’ll hurl Super Bowl-sized traffic, often without notice.
10年前
記事のアイキャッチ画像
Why Shopify Moved to The Production Engineering Model
Shopify Engineering
6 minute read The traditional model of running large-scale computer systems divides work into Development and Operations as distinct and separate teams. This split works reasonably well for computer systems that are changed or updated very rarely, and organizations sometimes require this if they’re deploying and operating software built by a different company or organization. However, this rigid divide fails for large-scale web applications that are undergoing frequent or even continuous change. DevOps is the term for a movement that’s gathered steam in the past decade to bring together these disciplines.
10年前
記事のアイキャッチ画像
Automatic Deployment at Shopify
Shopify Engineering
6 minute read Hi, I'm Graeme Johnson, and I work on Shopify's Developer Acceleration team. Our mission is to provide tools that let developers ship fast and safely. Recently we began shipping Shopify automatically as developers hit the merge button in GitHub. This removes the final manual step in our deploy pipeline, which now looks like this: Merge → Build container → Run CI → Hit deploy button → Ship to production We have invested a lot of engineering effort to make this pipeline fast enough to run end-to-end in about 15 minutes—still too slow for our taste—and robust enough to allow cancellation at any stage in the process. Automating the actual deploy trigger was the next logical step.
10年前
記事のアイキャッチ画像
How We're Thinking About Commerce and VR With Our First VR App, Thread Studio
Shopify Engineering
3 minute read Hey everyone! I’m Daniel and I lead our VR efforts at Shopify. When I talk to people about VR and commerce, the first idea that usually pops into their heads is about all the possibilities of walking around a virtual shopping mall. While that could be an enjoyable experience for some, I find it’s a very limiting view of how virtual reality can actually improve retail. If VR gave you the superpowers to do anything, create anything, and go anywhere you want, would you really want to go shopping in a regular mall?More than a virtual mall It’s easy to take a new medium and try to shoehorn in what already exists and is familiar. What’s hard is figuring out what content makes the medium truly shine and worthwhile to use. VR offers an amazing storytelling platform for brands. For the first time, brands can put people in the stories that their products tell. If you’re selling scuba gear, why not show what it’d look like underwater with jellyfish passing by? Or a tent on a windy,
10年前
記事のアイキャッチ画像
Shopify Merchants Will Soon Get AMP'd
Shopify Engineering
1 minute read Today we're excited to share our involvement with the AMP Project. Life happens on mobile. (In fact, there are over seven billion small screens now!) We're not only comfortable with shopping online, but increasingly we're buying things using our mobile devices. Delays can mean the difference between a sale or no sale, so it's important to make things run as quickly as possible. AMP, or Accelerated Mobile Pages, is an open source, Google-led initiative aimed at improving the mobile web experience and solving the issue of slow loading content. (You can learn more about the tech here.) Starting today, Google is pointing to AMP’d content beyond their top stories carousel to include general web search results.
10年前
記事のアイキャッチ画像
How Our UX Team's Approaching Accessibility
Shopify Engineering
Last updated: September 9, 2016 2 minute read At Shopify, our mission is to make commerce better for everyone. When we say better, we’re talking about caring deeply about making quality products. To us, a quality web product means a few things: certainly beautiful design, engaging copy, and a fantastic user experience, but just as important are inclusivity and the principles of universal design. “Everyone” is a pretty big group. It includes our merchants, their customers, our developer partners, our employees, and the greater tech community at large, where we love to lead by example. “Everyone” also includes: 9.1% of adults with vision trouble, and 8% of men and 0.5% of women who are colorblind 16.8% of adults with hearing trouble 15.1% of adults with physical functioning difficulty 4.4% of adults with cognitive disabilities [PDF] We take our mission to heart, so it’s important that Shopify products are useable and useful to all our users. This is something we’ve been thinking about an
10年前
記事のアイキャッチ画像
How to Set Up Your Own Mobile CI System
Shopify Engineering
1 minute read Editor's note: a more updated post on this topic is now up! Check out Sander Lijbrink's "Building a Dynamic Mobile CI System." Over the past few years the mobile development community has seen a dramatic shift towards the use of continuous integration (CI) systems similar to changes present in other communities — particularly web developers. This shift has been a particularly powerful moment for mobile developers, as they’re able to focus on their apps and code rather than spending their time on provisioning, code signing, deployment, and running tests. I’m a software developer at Shopify currently working on our Developer Acceleration’s Mobile team. My job is to design, create, and manage an automated system to provide an accelerated development experience for our developers. Based on our experiences at Shopify, we will be talking about “hosted” vs “BYOH” systems, how to provision Mac OS X and Ubuntu machines for iOS and Android, and the caveats we ran into throughout th
10年前
記事のアイキャッチ画像
Adventures in Production Rails Debugging
Shopify Engineering
5 minute read At Shopify we frequently need to debug production Rails problems. Adding extra debugging code takes time to write and deploy, so we’ve learned how to use tools like gdb and rbtrace to quickly track down these issues. In this post, we’ll explain how to use gdb to retrieve a Ruby call stack, inspect environment variables, and debug a really odd warning message in production. We recently ran into an issue where we were seeing a large number of similar warning messages spamming our log files: /artifacts/ruby/2.1.0/gems/rack-1.6.4/lib/rack/utils.rb:92: warning: regexp match /.../n against to UTF-8 string This means we are trying to match an ASCII regular expression on a UTF-8 source string.
10年前
記事のアイキャッチ画像
Developer Onboarding at Shopify
Shopify Engineering
5 minute read Hi there! We’re Kat and Omosola and we’re software developers at Shopify. We both started working at Shopify back in May, and we felt both excited and a little nervous before we got here. You never know exactly what to expect when you start at a new company and no matter what your previous experience is, there are always a lot of new skills you need to learn. Thankfully, Shopify has an awesome onboarding experience for its new developers, which is what we want to talk about today.
11年前
記事のアイキャッチ画像
Introducing Shipit
Shopify Engineering
3 minute read After a year of internal use, we’re excited to open-source our deployment tool, Shipit. With dozens of teams pushing code multiple times a day to a variety of different targets, fast and easy deploys are key to developer productivity (and happiness) at Shopify. Along with key improvements to our infrastructure, Shipit plays a central role in making this happen.
11年前
記事のアイキャッチ画像
Secrets at Shopify - Introducing EJSON
Shopify Engineering
This is a continuation of our series describing our evolution of Shopify toward a Docker-powered, containerized data centre. Read the last post in the series here. One of the challenges along the road to containerization has been establishing a way to move application secrets like API keys, database passwords, and so on into the application in a secure way. This post explains our solution, and how you can use it with your own projects.
11年前
記事のアイキャッチ画像
Announcing go-lua
Shopify Engineering
Today, we’re excited to release go-lua as an Open Source project. Go-lua is an implementation of the Lua programming language written purely in Go. We use go-lua as the core execution engine of our load generation tool. This post outlines its creation, provides examples, and describes some challenges encountered along the way.
11年前
記事のアイキャッチ画像
There's More to Ruby Debugging Than puts()
Shopify Engineering
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan Debugging is always challenging, and as programmers we can easily spend a good chunk of every day just trying to figure out what is going on with our code. Where exactly has a method been overwritten or defined in the first place? What does the inheritance chain look like for this object? Which methods are available to call from this context? This article will take you through some under-utilized convenience methods in Ruby which will make answering these questions a little easier.
12年前
記事のアイキャッチ画像
Building Year in Review 2014 with SVG and Rails
Shopify Engineering
As we have for the past 3 years, Shopify released a Year in Review to highlight some of the exciting growth and change we’ve observed over the past year. Designers James and Veronica had ambitious ideas for this year’s review, including strong, bold typographic treatments and interactive data visualizations. We’ve gotten some great feedback on the final product, as well as some curious developers wondering how we pulled it off, so we’re going to review the development process for Year in Review and talk about some of the technologies we leveraged to make it all happen.
12年前
記事のアイキャッチ画像
Building and Testing Resilient Ruby on Rails Applications
Shopify Engineering
Black Friday and Cyber Monday are the biggest days of the year at Shopify with respect to every metric. As the Infrastructure team started preparing for the upcoming seasonal traffic in the late summer of 2014, we were confident that we could cope, and determined resiliency to be the top priority. A resilient system is one that functions with one or more components being unavailable or unacceptably slow. Applications quickly become intertwined with their external services if not carefully monitored, leading to minor dependencies becoming single points of failure. For example, the only part of Shopify that relies on the session store is user sign-in - if the session store is unavailable, customers can still purchase products as guests. Any other behaviour would be an unfortunate coupling of components. This post is an overview of the tools and techniques we used to make Shopify more resilient in preparation for the holiday season.
12年前
記事のアイキャッチ画像
Tuning Ruby's Global Method Cache
Shopify Engineering
I was recently profiling a production Shopify application server using perf and noticed a fair amount of time being spent in a particular function, st_lookup, which is used by Ruby’s MRI implementation for hash table lookups: Hash tables are used all over MRI, and not just for the Hash object; global variables, instance variables, classes, and the garbage collector all use MRI’s internal hash table implementation, st_table. Unfortunately, what this profile did not show were the callers of st_lookup. Is this some application code that has gone wild? Is this an inefficiency in the VM?
12年前
記事のアイキャッチ画像
Docker at Shopify: How We Built Containers that Power Over 100,000 Online Shops
Shopify Engineering
This is the second in a series of blog posts describing our evolution of Shopify toward a Docker-powered, containerized data center. This instalment will focus on the creation of the container used in our production environment when you visit a Shopify storefront. Read the first post in this series here. Why containerize? Before we dive into the mechanics of building containers, let's discuss motivation. Containers have the potential to do for the datacenter what consoles did for gaming. In the early days of PC gaming, each game typically required video or sound driver massaging before you got to play. Gaming consoles however, offered a different experience: predictability: cartridges were self-contained fun: always ready-to-run, with no downloads or updates. fast: cartridges used read-only memory for lightning fast speeds. easy: cartridges were robust and largely child-proof - they were quite literally plug-and-play. Predictable, fast, and easy are all good things at scale. Docker con
12年前
記事のアイキャッチ画像
Rebuilding the Shopify Admin: Deleting 28,000 lines of JavaScript to Improve Dev Productivity
Shopify Engineering
6 minute read This September, we quietly launched a new version of the Shopify admin. Unlike the launch of the previous major iteration of our admin, this version did not include a major overhaul of the visual design, and for the most part, would have gone largely unnoticed by the user. Why would we rebuild our admin without providing any noticeable differences to our users? At Shopify, we strongly believe that any decision should be able to be questioned at any time. In late 2012, we started to question whether our framework was still working for us. This post will discuss the problems in the previous version of our admin, and how we decided that it was time to switch frameworks.
12年前
記事のアイキャッチ画像
Building an Internal Cloud with Docker and CoreOS
Shopify Engineering
This is the first in a series of posts about adding containers to our server farm to make it easier to scale, manage, and keep pace with our business. The key ingredients are: Docker: container technology for making applications portable and predictable CoreOS: provides a minimal operating system, systemd for orchestration, and Docker to run containers Shopify is a large Ruby on Rails application that has undergone massive scaling in recent years. Our production servers are able to scale to over 8,000 requests per second by spreading the load across 1700 cores and 6 TB RAM.
12年前
記事のアイキャッチ画像
Kafka Producer Pipeline for Ruby on Rails
Shopify Engineering
In the early fall our infrastructure team was considering Kafka, a highly available message bus. We were looking to solve several infrastructure problems that had come up around that time. We were looking for a reliable way to collect event data and send it to our data warehouse. We were considering a more service-oriented architecture, and needed a standardized way of message passing between the components. We were starting to evaluate containerization of Shopify, and were searching for a way to get logs out of containers. We were intrigued by Kafka due to its highly available design. However, Kafka runs on the JVM, and its primary user, LinkedIn, runs a full JVM stack. Shopify is mainly Ruby on Rails and Go, so we had to figure out how to integrate Kafka into our infrastructure.
12年前
記事のアイキャッチ画像
Building a Rack Middleware
Shopify Engineering
13年前
記事のアイキャッチ画像
RESTful thinking considered harmful
Shopify Engineering
14年前
記事のアイキャッチ画像
Webhook Best Practices
Shopify Engineering
15年前
記事のアイキャッチ画像
Defining Churn Rate (no really, this actually requires an entire blog post)
Shopify Engineering
If you go to three different analysts looking for a definition of "churn rate," they will all agree that it's an important metric and that the definition is self evident. Then they will go ahead and give you three different definitions. And as they share their definitions with each other they all have the same response: why is everyone else making this so com
15年前
記事のアイキャッチ画像
Application Proxies: The New Hotness
Shopify Engineering
15年前
記事のアイキャッチ画像
Three Months of CoffeeScript
Shopify Engineering
15年前
記事のアイキャッチ画像
Most Memory Leaks are Good
Shopify Engineering
15年前
記事のアイキャッチ画像
How Batman can Help you Build Apps
Shopify Engineering
15年前
記事のアイキャッチ画像
Webhook Testing Made Easy
Shopify Engineering
15年前
記事のアイキャッチ画像
How we use git at Shopify
Shopify Engineering
15年前
記事のアイキャッチ画像
StatsD at Shopify
Shopify Engineering
15年前
記事のアイキャッチ画像
Session Hijacking Protection
Shopify Engineering
16年前
記事のアイキャッチ画像
Shopify's path to Rails 3
Shopify Engineering
16年前
記事のアイキャッチ画像
ActiveMerchant version 1.9 released
Shopify Engineering
16年前