Bellroy Technology Team: 2023 in Review

Mike Webb profile image Mike Webb 2024-03-12

Our journey through 2023 has been one of significant transformation and achievement. At the heart of our success is our commitment to Shape Up as our software development methodology, alongside a robust roadmap that outlines our long-term strategic goals and the immediate steps we can take towards each objective. Our roadmap provides us with a good litmus test when we’re shaping a project - either it moves toward our strategic objectives, or it signals a time to reassess those objectives. I’m thrilled to present an overview what our lil’ ol’ team of 13 was able to achieve last year.

Managing configuration as code has been best practice in our industry for many years, but I’m pleased to say that we’ve had great success introducing it to our non-technical configuration. For our team, this means allowing the rest of the company to directly manage the content and configuration they contribute to - we just provide the tools and processes that allow them to ship changes. We made significant strides in migrating more configuration datasets into our git repository, complemented by the development of internal tools designed to automate configuration deployment. This includes sophisticated tooling for unit-testing configuration changes. For example, we run golden tests against our discount calculation rules by running virtual carts through the rules and comparing the results. Our configuration contributors have developed a battery of tests for our configuration over time, allowing them to ship changes with confidence. Through improvements to our tooling - and migration of more configuration into our git repository - we’ve boosted company velocity in product releases and campaigns without having to provide technical oversight. The company as a whole publishes content and configuration changes into production 6-10 times a day.

Our dedication to providing world-class tooling support has redefined how content and front-end code is released and managed on our site. By streamlining our release processes and introducing user-friendly interfaces, we’ve empowered a broader spectrum of Bellrovians to contribute. For example, templated content - such as the job board on bellroy.com - is now managed using Markdown documents and FrontMatter, edited by our People & Culture team using Github Codespaces. Our front end developers did a huge amount of work in 2023 consolidating our front-end codebase and content to use a standardized component library. Now, anyone can ship great-looking content with much less need for a design review. 15% of Bellroy crew (outside the Technology Team) regularly make contributions to our website, which is a big step-up from 2022.

In 2023, Bellroy sent products to customers in 160 countries. Our goal to service our customers and partners around the globe demanded a system that could handle the complexities of global commerce, ensuring competitive shipping offerings and compliance with diverse tax requirements. We overhauled (and in some instances replaced) our legacy systems to handle these tasks, which also made it practical to integrate this functionality more tightly into more of our sales channels.

Our migration from Ruby on Rails monoliths to Haskell services, adhering to the Self Contained Systems (SCS) architecture, has enhanced the stability, maintainability, and cost-effectiveness of our internal systems. We aim to ensure that our technical stack mirrors our team makeup and that - while having a pager is a necessity in a 24/7/365 business - holding the pager is a trivial inconvenience shared by all. The reliability of our Haskell code has drastically reduced out-of-hours incidents, and our move from reserved EC2 instances to Lambda and DynamoDB has significantly cut operational costs. We’ve been able to reduce the size of the EC2 instances we use, and our monthly bills for each of our SCS services are a fraction of the cost of running an appropriately sized EC2 instance to perform the same function. On a related note, this migration has also encouraged us to evaluate and start using other AWS services - we put our first implementation of a Step Functions workflow into production in 2023. This AWS service has allowed us to better orchestrate our Lambda functions and has been a great addition to our toolset.

Our DevOps team has made great progress in enhancing our global continuous integration and deployment pipeline. By leveraging Github Actions, Nix, and Hydra, we’ve streamlined our development processes, particularly with our Haskell monorepo. The integration with Hydra has been crucial, ensuring efficient builds and deployments by rebuilding and deploying only what has changed since the last build/deploy. This approach has minimized CI/CD times, allowing our developers to focus on building great things instead of handholding changes into production. Adopting Hydra has not been without challenges - managing builds for multiple architectures and developing expertise has been difficult - but the benefits have been worth the effort.

In preparing this post and looking at our next slate of projects, it feels like we’re on a really good path. Our strategic directives still feel right and allow our developers to independently make principled design decisions. This is one of the benefits we were hoping to get from Shape Up, and I’m pleased to report that it continues to deliver. If I could wave a magic wand I’d convert all of our Ruby code to Haskell code tomorrow, but other than that I’m extremely happy with where we are as a team and as a company with technical capability as one of its core strengths. I look forward to sharing what we got up to in 2024.