We’re running just about everything on Heroku, including our Bonobos.com website, cross-app messaging services, an API for our ERP, as well as some internal tools. The only pieces that are not on Heroku are the Data Science and ERP components. We’re also using Desk.com for customer service queuing.
On the backend, we use Rails and Solidus, a fork of Spree, the open source e-commerce engine built on top of Rails. The Solidus project was a great bootstrap for our API, admin, and data model, as well as our store customization.
Yes, but not quite. We have services that are somewhat micro, but not everything is a microservice. I’ve seen that done to the extreme, and that approach is not necessarily one that we’d want to take here with the size of our team.
We’re using Heroku Postgres Premium. We find the automatic promotion of the follower is great for us. We use read-only replicas for reporting and store them in our Redshift data warehouse. There are also internal users who need read-only access, such as our analytics and data science teams.
Rollbar is a really nice product for error handling, both front- and back-end. It groups errors really well together so you can do analysis and chase errors throughout the system. It has nice alerting rules around reactivation errors or error count notification.
We also use Skylight, which is a Rails instrumentation engine for app performance monitoring. Their agent is lightweight and you get a good sense of the long tail of your performance, rather than just the median or worst case.
Our Guideshop model is different than the traditional retail store in that it focuses on providing customer service and removing the nuances associated with it. That in-store experience is enhanced with technology we’re using here at Bonobos.com. We work with a company called Tulip. They built the iOS tablet application for our sales associates and it draws everything through our API. Employees are able to put in orders, do returns, as well as help people with their wish list and size preferences. All products, orders, everything is still administrable, still lives in our admin backend, but we don’t have to maintain that interface.