公司:Shopify
Shopify Inc.是加拿大的一家跨国电子商务公司,总部位于安大略省渥太华,Shopify也是该公司所有的电子商务平台的名称。Shopify为在线零售商提供一整套服务“包括支付、市场营销、运输和客户契合工具,以简化小型商户开设在线商店的过程”。
根据公司披露的文件,截止2019年6月,Shopify平台在大约175个国家或地区有超过一百万笔业务,2020日历年的商品总成交额1196亿美元,较2019年增长96%。
Apollo Cache is Your Friend, If You Get To Know It
Currently Shopify is going through the process of updating from the Apollo GraphQL client 2 to client 3. The Apollo client is a library used to query your GraphQL services from the frontend, it has a feature for caching objects/queries you’ve already made which will be the focus of this post. Through the process of migrating the Apollo client we started to discuss bugs we've run into in the past, for which a common thread was misuse, or more likely a misunderstanding of the cache. This was the catalyst for me diving further into the cache and exploring how it fetches, transforms, and stores data that we previously queried. Having worked with the Apollo client for the vast majority of my career, I still couldn’t say I understood exactly what was happening in the cache internally. So I felt compelled to find out. In this post, I’ll focus on the Apollo client cache and the life cycle of objects that are cached within it.
Reducing BigQuery Costs: How We Fixed A $1 Million Query
During the infrastructural exploration of a pipeline my team was building, we discovered a query that could have cost us nearly $1 million USD a month in BigQuery. Below, we’ll detail how we reduced this and share our tips for lowering costs in BigQuery.
The Management Poles of Developer Infrastructure Teams
There are 3 management poles for developer infrastructure teams that are thus tricky to balance: management support, system and domain expertise, and road maps.
How to Structure Your Data Team for Maximum Influence
We share the framework that’s worked best for structuring our data teams and that's empowered them to influence business decisions and drive impact.
On the Importance of Pull Request Discipline
Unorganized pull requests are the bane of large codebases. Follow Yash's tips to prevent your PRs from getting roasted in the group chat.
How to Write Code (Without Having to Read It)
Do we need to read code before editing it? In order to safely fix a bug or update a feature, we may need to learn some things about the code. However, we’d prefer to learn only that information.
Safely Adding NOT NULL Columns to Your Database Tables
The Database Migrations team is in charge of creating and maintaining all the internal tools for Shopify teams to carry out schema changes safely and with minimal downtime. One of our latest investigations involved using the popular Large Hadron Migrator (LHM) gem to perform schema changes in MySQL databases, after safety-checking that the migrations can be performed without losing any data. In particular, when adding a NOT NULL columns to an existing table.
In this post, I'll share what we learned and our recommendations for doing so to your own database tables.
Lessons From Building Android Widgets
Shopify share with you the challenges we faced building Android widgets and how we solved them.
Lessons From Building iOS Widgets
Shopify shares with you how we approached building iOS widgets and some of the challenges we faced.
Managing React Form State Using the React-Form Library
We’ll delve further into Shopify’s open source Quilt repo that contains 72 npm packages, one of which is the react-form library.
Leveraging Go Worker Pools to Scale Server-side Data Sharing
How Shopify scaled our Server Pixels service to increase its event processing performance by 170%.
Four Approaches to Debugging Server-side WebAssembly
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. These challenges aren’t unique to Shopify Functions and are common to other uses of WebAssembly including other server-side use cases. One of these challenges is a less refined developer experience when using step debuggers.
Step debuggers allow developers to pause execution on certain lines of code given certain conditions, execute lines of code one at a time, descend and ascend the current callstack, and see the values of in-scope variables at a particular point in execution. This flexibility can reduce the amount of time it takes to find a problem compared to debugging with print or log statements or studying the code. Some examples of step debuggers are GDB, LLDB, and the Visual Studio Debugger.
When Culture and Code Reviews Collide, Communication is Key
To prevent a misunderstanding, it’s important for developers to understand how different cultures approach reviewing codes, and how diverse teams can establish healthier communication practices when giving and receiving feedback. When we understand each other’s context, the emphasis can shift from confrontation to collaboration, from perfection to excellence.
Shopify Data’s Guide To Opportunity Sizing
Shopify’s guide to Opportunity Sizing, a method that data scientists can use to quantify the potential impact of an initiative ahead of making the decision to invest in it.
How We Enable Two-Day Delivery in the Shopify Fulfillment Network
A simplified overview of how we built two-day delivery in the Shopify Fulfillment Network (SFN).
Spin Cycle: Shopify’s SFN Team Overcomes a Cloud-Development Spiral
The process of getting SFN working on Spin, Shopify’s cloud-development tool, is a great example of the kind of hidden difficulty in technical work that's more related to human systems.