サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
掃除・片付け
shopify.engineering
Opens in a new windowOpens an external siteOpens an external site in a new window Good problems We experienced hockey stick growth after we launched the Shop app. We were glued to our dashboards and saw millions of users onboard onto the app. This was gratifying, but we were becoming more nervous as our backend was pushed closer to its limit. We wrote the backend in Ruby on Rails, and used a MySQL
Opens in a new windowOpens an external siteOpens an external site in a new window We’ve recently open sourced a project called Ruvy! Ruvy is a toolchain that takes Ruby code as input and creates a WebAssembly module that will execute that Ruby code. There are other options for creating Wasm modules from Ruby code. The most common one is ruby.wasm. Ruvy is built on top of ruby.wasm to provide some
Opens in a new windowOpens an external siteOpens an external site in a new window During the past five years I’ve worked on a lot of different parts of Shopify’s payment infrastructure and helped onboard dozens of developers in one way or another. Some people came from different programming languages, others used Ruby before but were new to the payments space. What was mostly consistent among new
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.More
Opens in a new windowOpens an external siteOpens an external site in a new window Ruby has an explicit goal to make developers happy. Historically, working towards that goal mostly meant having rich syntax and being an expressive programming language—allowing developers to focus on business logic rather than appeasing the language’s rules. Today, tooling has become a key part of this goal. Many mo
Opens in a new windowOpens an external siteOpens an external site in a new window 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
Opens in a new windowOpens an external siteOpens an external site in a new window At Winter Editions 2023 we announced a Local Developer Preview for JavaScript for Shopify Functions. That means that we’re adding JavaScript right next to Rust as our first-class languages for Shopify Functions (but you can still use anything that compiles to WebAssembly!). While you can’t deploy a Shopify Function w
Opens in a new windowOpens an external siteOpens an external site in a new window When I joined Shopify last year, I knew its engineering culture was top class. What I didn’t know was the company’s documentation culture was even more developed than I previously experienced. Simply put, I was impressed with the amount of documentation about pretty much everything: onboarding, projects, internal too
Opens in a new windowOpens an external siteOpens an external site in a new window Shopify and YJIT Back in July 2020, I joined the Ruby & Rails Infrastructure (R&RI) team at Shopify. Our team focuses on making sure that Ruby as well as Ruby on Rails, central to the infrastructure behind all Shopify stores and much of the modern web, run as smoothly and efficiently as possible. As part of the R&RI
Opens in a new windowOpens an external siteOpens an external site in a new window The Shopify CLI (command line interface) is an essential tool for developers when building and deploying Themes, Apps, Hydrogen storefronts on the Shopify platform. It provides workflows to create new projects that follow best practices, integrate with the platform during development, and distribute the production ar
Opens in a new windowOpens an external siteOpens an external site in a new window In 2020, we announced that React Native is the future of mobile at Shopify and since then we’ve been migrating all our native mobile apps to React Native. Since each app is different, there is no single approach that works for all of them. So, we evaluated all the possible options for each app and chose the ones that
In this blog post, I’ll be introducing how 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. Ruby’s Memory Structure and Limitations Ruby is a garbage collected language. It automatically allocates memory when objects are created and releases the memory when it detects that an object is no lo
Opens in a new windowOpens an external siteOpens an external site in a new window Hi everyone! How are you doing? It's me, Aaron (some people know me on the internet as Tenderlove)! I hope you're doing well. ❤️ Since we're coming up on the end of the year, I thought it might be a good idea to take a moment to reflect on cool stuff that's happened or is happening in the Ruby community right now. Ac
Opens in a new windowOpens an external siteOpens an external site in a new window Shopify builds internet infrastructure for commerce to serve the needs of millions of merchants. Doing that requires building both flexible business logic and robust, high-performance systems. In addition to our commitment to Ruby for its flexibility and expressiveness, we have recently adopted Rust as our official s
Opens in a new windowOpens an external siteOpens an external site in a new window Caching is critical to how Rails applications work. At every layer, whether it be in page rendering, database querying, or external data retrieval, the cache is what ensures that no single bottleneck brings down an entire application. But caching has a dirty secret, and that secret’s name is Marshal. Marshal is Ruby’
Opens in a new windowOpens an external siteOpens an external site in a new window We are very excited to announce that the open-source web framework Remix and its team are joining Shopify. Why? The web is always evolving—and we’re entering a new era. First, we had the document web, and then we sprinkled in richer interactivity. Most recently, we entered the world of single page apps. We’ve learned
It gets hand-wavy at the end, doesn’t it? I find that frustrating. These days I work on YJIT, a JIT for Ruby. So I can make this extremely NOT hand-wavy. Let’s talk specifics. I like specifics. Wait, What’s JIT Again? An interpreter reads a human-written description of your app and executes it. You’d usually use interpreters for Ruby, Python, Node.js, SQL, and nearly all high-level dynamic languag
Opens in a new windowOpens an external siteOpens an external site in a new window Shopify and Rails have grown up together. Both were in their infancy in 2004, and our CEO (Tobi) was one of the first contributors and a member of Rails Core. Shopify was built on top of Rails, and our engineering culture is rooted in the Rails Doctrine, from developer happiness to the omakase menu, sharp knives, and
Opens in a new windowOpens an external siteOpens an external site in a new window We’ve been building Hydrogen, a React framework for building custom storefronts on Shopify, for more than a year. We invested in cutting-edge new technology, like React Server Components, to ensure building on the Shopify platform is a terrific experience for developers. Here’s a look behind the scenes at how we did
Opens in a new windowOpens an external siteOpens an external site in a new window Shopify is continuing to invest on Ruby on Rails at scale. We’ve taken that further recently by funding high-profile academics to focus their work towards Ruby and the needs of the Ruby community. Over the past year we have given nearly half a million dollars in gifts to influential researchers that we trust to make
Opens in a new windowOpens an external siteOpens an external site in a new window Last year, my team at Shopify implemented YJIT, a new Just-In-Time (JIT) compiler for CRuby, which was recently upstreamed as part of Ruby 3.1. Because the CRuby codebase is implemented in C99, we also decided to implement YJIT in C99 so that integration with the rest of the CRuby codebase would be as simple as possi
Opens in a new windowOpens an external siteOpens an external site in a new window Hydrogen is a framework that combines React and Vite for creating custom storefronts on Shopify. It maximizes performance for end-users and provides a best-in-class developer experience for you and your team. Since it focuses on evergreen browsers, Hydrogen can leverage modern capabilities, best practices, and the la
Opens in a new windowOpens an external siteOpens an external site in a new window When my team and I started experimenting with React Server Components (RSC) while building Hydrogen, our React-based framework for building custom storefronts, I was incredibly excited. Not only for the impact this would have on Hydrogen, and the future of ecommerce experience (goodbye large bundle sizes, hello impro
Opens in a new windowOpens an external siteOpens an external site in a new window
Opens in a new windowOpens an external siteOpens an external site in a new window In early September 2021, we retired our last Shopify database virtual machine (VM) that was running Percona Server 5.7.21, marking the complete cutover to 5.7.32. In this post, I’ll share how the Database Platform team performed the most recent MySQL upgrade at Shopify. I’ll talk about some of the roadblocks we encou
Opens in a new windowOpens an external siteOpens an external site in a new window The future of commerce is dynamic, contextual, and personalized. Hydrogen is a React-based framework for building custom and creative storefronts giving developers everything they need to start fast, build fast, and deliver the best personalized and dynamic buyer experiences powered by Shopify’s platform and APIs. We
2. Keep It Simple When developing a first model, the excitement of seeking the best possible solution often leads to adding unnecessary complexity early on: engineering extra features or choosing the latest popular model architecture can certainly provide an edge. However, they also increase the time to build, the overall complexity of the system, as well as the time it takes for a new team member
Opens in a new windowOpens an external siteOpens an external site in a new window The 1980s and 1990s saw the genesis of Perl, Ruby, Python, PHP, and JavaScript: interpreted, dynamically-typed programming languages which favored ease of use and flexibility over performance. In many ways, these programming languages are a product of the surrounding context. The 90s were the peak of the dot-com hype
Opens in a new windowOpens an external siteOpens an external site in a new window Ruby on Rails is a web framework that contains many libraries you’d need to create and deploy a successful web application. We often take for granted the ability to run rails new to create a fully functional web application with tons of built-in features. For many of us, that’s good enough since the goal of Rails is
次のページ
このページを最初にブックマークしてみませんか?
『Shopify Engineering』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く