Our Tech Stack at rebuy

Janina Cußmann
rebuy recommerce
4 min readFeb 23, 2023

--

We sat down with Ota Mares, our Head of Engineering for Web & Apps at rebuy, and discussed our Tech Stack.

Hi Ota! Can you tell us a bit more about the Tech Stack at rebuy?

rebuy’s tech stack can be divided into four layers: Frontend, Middleware, Backend, and Platform. Each of these layers has its history and has been growing naturally over time — which lies close to our mantra of not solving a problem we don’t have.

In the frontend, we come from an AngularJS background and have been using Angular since it was in a beta state. The frontends underwent multiple redesigns.
Our apps, now written natively in Swift and Kotlin, have been rewritten multiple times. For a few years, we used Xamarin and Xamarin.Forms to build our apps.

The middleware layer, which orchestrates calls and provides the API for our frontends, is built using PHP and Symfony. PHP taps into our very early monolithic software days.

12 years ago, we started using Java to break up our monolith. Microservices have been a myth only applied by big companies. Today our backend is mostly based on Java or Kotlin, and Spring to power our (micro)service architecture.

Our Platform underwent the biggest overhaul in recent years, from on-premise hosting using KVM, Puppet, and Capistrano to our own Kubernetes cluster running in AWS, but Björn (our Head of Engineering — Platform & Operations), would be the better partner to share more insights. :)

Regardless of the choice, we aim to build software that is enjoyable, helps drive the business, and that we can be proud of.

Can you give us some reasons why these technologies were chosen? Or in other words: how would you describe the Tech Stack philosophy at rebuy?

We come from a “choose the right tool for your problem” direction, which was great for building solutions while playing around with new toys but resulted in a fragmented stack, bringing maintainability risks.

In the last few years, we took a bit more classical approach: Using established technologies, not chasing one of the many trends.

We are a small team for the amount of code and business complexity we manage. Having a unified and established tech stack helps keep everything in line. Allowing our engineers to contribute on all ends and as a result, focus on what is important: building software that customers enjoy using.

Currently, we are working on a tech radar map that should give engineers and curious people more insights into what we want to keep and what should be phased out.

What are you most excited about in the rebuy Tech Stack?

The level of automation we apply to everything, the freedom each engineer has, the quality of our software, how small and efficient the team is compared to the code, and company size.

The idealistic goal is to build wonderful software that performs great and that you are proud of participating in. And that we keep looking forward in a lenient and sustainable way! Growing naturally sometimes is tough, but the outcome is worth it: rebuy is a self-sustained company, which allows us to continue our endeavors to hire great people.

What are you least excited about?

As a company, we are reaching a size where tools are costly, and decisions on which one to use have to be made deliberately instead of following the inner-child approach.

The same applies to technologies in existing or new projects. The chances are high we will nudge people into using what we have so things stay maintainable in the future.

To be clear, we are still open to advancing our tech stack, and introducing new technologies is as simple as talking to everyone and having good arguments. However, you cannot simply follow the urge to use the latest JavaScript framework released yesterday.

Is there any technology on the horizon that you would like to implement?

There are a few! Datadog to consolidate multiple tools into one platform. Adopting Kotlin as our primary language on the JVM. Consolidating our stack by rewriting services from Scala to Kotlin. Removing MongoDB. Moving all our affiliate tracking to Google Tag Manager Server-Side. Getting rid of the last few Storyboards in our iOS app. Having more UI-Automation tests in our mobile apps. The list goes on … 🙂

Which tools have you tested before and abandoned (and why)?

Recently, we have been looking at LinearB or codesense but opted against them as our teams, or our code has been ranging in the upper ratings, which did not provide any useful insights and value — for now.

Our whole backend stack shifted from NewRelic to Datadog, and we postponed the switch for our frontend applications, as that would cost us 53 times more than the current solution.

Software-wise, we have decided against MySQL, MongoDB, Scala, Gulp, npm, Xamarin and Xamarin.Forms to name a few. Dropped whole libraries in favour of native or in-house developed solutions to reduce bundle sizes.

Is there anything else that you would like to share?

We have always been proud that we are running the latest versions of technologies so that engineers can utilize modern features.

A modern and broad software stack allows you to play with new technologies and learn something new. Enabling people to grow their skills on Trydays or in day-to-day work.

For the complete list of tools and technologies used at rebuy, please visit our rebuy Stackshare profile.

Thank you very much for the conversation and all the info, Ota!

Anytime!

--

--