Business growth is a good problem to have. For engineering, this means scaling operations in a way that allows the organization to keep pace with business demands. Teams need structured workflows that help them deliver quickly and stay productive. Apps need underlying technology that enables fast deployment of updates and features. With the right solution, an engineering organization can run with racehorse efficiency.
The RealReal is the world’s largest online marketplace for authenticated, consigned luxury goods. Founded in 2011, the company has grown rapidly, becoming the premier destination in its category and shipping to more than 60 countries worldwide. The growth journey led The Real Real’s engineering organization to migrate its apps and workflows to Heroku for maximum efficiency. Today, when there’s a need to make infrastructure updates or changes to the user experience, the team can typically deliver within a matter of minutes or hours rather than days.
Challenged by growing pains
Three years ago, The RealReal managed a relatively small infrastructure footprint with a single staging and production environment. With a limited number of deployments per day, DevOps engineers deployed code to production and managed their infrastructure using AWS OpsWorks for Chef.
However, as the business grew, so did the number of apps and associated backlogs, QA environments, and daily deployments. Their Chef-based solution was not able to scale quickly enough and DevOps became a bottleneck.
A key question: build it or buy it?
The engineering organization could have built its own infrastructure and tools in-house using DevOps engineers, either from the ground up or by customizing an open source solution. But the team estimated this would have taken six to 12 months to build, as well as produced an ongoing backlog of maintenance tasks and feature requests. It was all doable — but there were more impactful places the team could spend its time.
The company wanted to invest more in development than operations and dedicate as many people as possible to solving problems for the business. Instead of hiring more DevOps engineers, the company grew its development team and changed its deployment model to a developer-led, 12-Factor App approach.
The team migrated to Deis, an open source platform as a service based on Docker, and rebuilt their app using Phoenix, an Elixir web framework. Developers took over deployment from DevOps and became responsible for deploying their own code using continuous delivery. The solution was a step in the right direction, however challenges with stability and Docker networking meant it wasn’t viable for The RealReal in the long-term. In addition, the engineering organization had grown to more than 50 people, and it needed scalable CI/CD workflow in order to ship apps quickly and meet the demands of the business.
An easier developer experience on Heroku
Still reticent to build up the DevOps team, The RealReal looked into other PaaS solutions. Some team members had used Heroku in the past and liked the platform. They especially loved how easy it was to use the platform and get apps up and running quickly with a simple Git push or provision a Heroku Add-on with a couple of clicks. Heroku's prescriptive developer experience was a strong factor in their decision-making process.
Heroku offers all of the services that I want to use in one simple interface. From the Heroku Dashboard, I can get to everything easily, from my app to my databases to add-ons and my pipelines. I don’t have to keep it all in my head and try to fit the pieces together. Fredrik Björk, CTO, The RealReal
Heroku Private Spaces for high-performance apps
By early 2016, Heroku Private Spaces had been released, which offered The RealReal a dedicated, network isolated runtime environment and private network to run their apps. The enhanced security and performance of Private Spaces could support the privacy needs and rapid scale of the business. By that summer, The RealReal had migrated to Heroku and begun switching from a monolithic app to an event-driven, microservices architecture.
I would highly recommend Heroku Private Spaces to other companies looking for a managed solution that offers enhanced efficiency and improved scalability. Karan Gupta, Sr. Director of Engineering, The RealReal
Delivering better apps with CI/CD tools on Heroku
For the growing engineering organization, Heroku offered a structured CI/CD workflow that helped it stay productive and efficient. The platform’s integration with GitHub makes it easy to automatically deploy code on every push. Heroku Pipelines help the team manage code changes as it passes through multiple environments on its way to production.
Heroku’s CI/CD tools have helped us become much more organized and efficient. Heroku Pipelines are also so well integrated with GitHub, that we can take even greater advantage of the capabilities of both platforms. Karan Gupta, Sr. Director of Engineering, The RealReal
Heroku Review Apps have been particularly helpful. Review apps enable the team to share changes with product managers, QA teams, and others through a temporary test app on a unique URL. This facilitates essential feedback loops that make their product stronger.
Heroku Review Apps support our culture of open feedback. We can spin up a temporary app to share with a wide range of teams, including engineering, product, and business. Better collaboration helps us to improve our apps faster. Fredrik Björk, CTO, The RealReal
With developers managing their own releases, The RealReal has not needed to invest further in DevOps to scale its workflow. The lean DevOps team is free to focus on other things that add more value to the organization, such as monitoring, architecture, infrastructure, and automation projects.
The developer happiness effect
The RealReal’s decision to adopt Heroku has also resulted in intangible benefits that ripple through much of what the engineering team does. There are fewer obstacles and headaches in developers’ day-to-day lives, and Heroku’s managed service takes care of the mundane tasks that would normally slow them down. Developers are closer to the end-to-end process of taking an app from idea to production. This allows them to address issues early and gain greater satisfaction from their work at every step of the way.
It’s a very powerful experience for a developer to code something, have it reviewed, and immediately push it to production on Heroku. If improvements are needed, the developer can make changes and push them out. Waiting for a release team or DevOps to deploy makes for a slower, more disconnected engineering experience. Fredrik Björk, CTO, The RealReal
Inside The RealReal on Heroku
After shifting from a monolithic app to an event-driven, microservices architecture, The RealReal now runs over a hundred apps on Heroku, most of which are running in Heroku Private Spaces. Their web apps are built in Phoenix, Elixir, and Ruby on Rails, and deployed using Heroku Buildpacks. Their gateway is built in GraphQL, which breaks up requests to the right services. Apache Kafka on Heroku gives them a scalable messaging solution, and Heroku Redis enables job queuing and caching.