This article presents how trivago’s search backend team used reactive programming in Java effectively when designing and implementing one of our many Java backend services. Compared to traditional imperative and functional programming, reactive programming requires a mindset-shift in order to apply the concepts and techniques effectively. The benefits we gain support us in some key challenges that every engineer is facing with essentially every (micro-) service in today’s backend architectures: handling of blocking IO, backpressure, managing highly varying loads as well as message and error propagation.
In the trivago backend, we use the reactive programming pattern for fetching prices from advertisers and updating our caches. This helps us to increase the responsiveness (i.e., scalability and resilience) of our backend. Thus, our backend system can alleviate high response times from internal components and our advertisers while staying responsive, even if downstream components fail entirely. Here is how we use the Java library Reactor Core to ensure those guarantees:
After almost a decade, we decided to rebuild our in-house Business Intelligence web application to better support the organization. It is always challenging to replace software with a long history and a high degree of complexity. Nevertheless, we successfully completed the project because we fundamentally challenged and re-thought all aspects of the project.
COVID-19 has impacted the travel industry very severely. Even in these hard times, trivago remains committed to contributing to open source. As a tech company working on large-scale projects, we feel a responsibility towards supporting the open source community. webpack, Preact and the CNCF This year we will continue supporting projects and organisations that are having a major impact on the products we build and the happiness of our engineers who use them on a daily basis.
One of my favorite events throughout the year is the trivago tech get together. It’s the one time where we all get together to celebrate tech. Here are some impressions from 2019: See all those happy people mingling in person? Guess it’s obvious why we had to change this up for 2020. Why internal conferences are still important We managed to get a lot done this year, but communication across teams was getting harder through virtual meetings.
Metrics are one of the main building blocks in the topic of observability and we use them heavily. This story is about an incident where we tried to find and resolve a problem that we saw in these metrics. We went down a rabbit hole of potential fixes, only to discover that the metrics were correct all along.
At trivago we are working heavily on the web platform and, based on the scale that we need to serve our users, our applications need to cater for many different kinds of environments and conditions. As one of our use cases demanded we look into how a background (and possibly terminating) state is defined in the modern web, we investigated the options and discovered a few interesting points, specifically about thePage Visibility API.
Tackling hard problems is like going on an adventure. Solving a technical challenge feels like finding a hidden treasure. Want to go treasure hunting with us?View all current job openings
What does Data Science at trivago look like in practice? Which major challenges have we encountered as a travel-tech company since the COVID-19 outbreak? What’s it like to work in Data Science at trivago? In this Q&A with James Neaves (Business Intelligence Lead), Andrea Fernandez (Data Science Team Lead), and Sheetij Jain (Product Manager in User Profiling) we’ll answer all these questions and more. Too Long; Didn’t Read? Jump directly to the questions!
This is part two of our series about trivago engineer’s side projects. The first part is here. As always, take a look and feel free to reach out to any of them if you’d like to exchange on any of their topics! Hello Rust Our backend engineer Matthias Endler is running a YouTube channel about the Rust project as a side-project. In there he explains the ins and outs of the language, but his goal is not only to present information; rather, he’s striving to inspire fellow developers to try the language and stay curious.