Read Postmortem: Removing all users from github.com/trivago
Engineering Engineering Culture

Postmortem: Removing all users from github.com/trivago

Posted on

While engineering, we fix bugs, create new systems, build workflows and establish processes. Our job is to change things. Changing things can involve mistakes that ultimately lead to the failure of a particular system. To learn from these failures, a retrospective is helpful to get to the root of this problem. In the tech industry, a Blameless PostMortem is the right tool for this job. We engineers at trivago started applying this practice in 2019 and have been refining it continuously since then.

Read the post
Read How we build the Image Gallery on trivago
Engineering Backend Cloud

How we build the Image Gallery on trivago

Posted on

When was the last time you booked accommodation without checking its photos? Most probably never! Because having imagery information makes our decision-making process much easier and faster. However, picking up the best possible images of a hotel to show to the user is an interesting problem to solve, because it can be a naive random selection or a sophisticated machine learning model to know what the user truly wants at that moment.

Read the post
Read Proper (Java) application life cycle management in Kubernetes
Backend DevOps Cloud Java

Proper (Java) application life cycle management in Kubernetes

Posted on

When operating applications in Kubernetes, proper lifecycle management is crucial to enable Kubernetes to manage applications correctly throughout their different phases: startup, runtime and shutdown. Improper or incomplete lifecycle management can lead to incidents with unforeseen and difficult to debug application behavior, such as random CrashLoopBackOffs, broken/zombie services not being restarted or even entire services not becoming healthy after a scheduled restart. Based on both good and bad applied practices in trivago’s search backend, this article outlines key aspects for lifecycle management of our Java applications running inside docker containers on Kubernetes.

Read the post
Read Remastering Guilds After Five Years
Engineering Culture

Remastering Guilds After Five Years

Posted on

Five years ago trivago started to build guilds – small communities dedicated to certain topics or technologies – as a need arose to organize the collaboration of more than a hundred developers on a wide range of topics. You can read more about how we started in the previous blog posts Part I and Part II. A lot has changed about trivago as an organisation as well as about the technologies we use for product development since our engineers started organising the first tech guilds years ago.

Read the post
Read Designing Marketing Emails via predefined Modules in Salesforce Email Studio
Engineering, Frontend

Designing Marketing Emails via predefined Modules in Salesforce Email Studio

Posted on

When techies hear about email marketing and designing HTML emails, they typically roll their eyes and think of a very boring field of work. In this article, we hopefully can explain to you why this is wrong from our perspective. Our team built a solution that our marketers use to easily design HTML emails with predefined modules within our email marketing platform Salesforce Email Studio, which is part of the Salesforce Marketing Cloud (SFMC).

Read the post
Read Java Reactive Programming - Effective Usage in a Real World Application
Backend

Java Reactive Programming - Effective Usage in a Real World Application

Posted on

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.

Read the post
Read Reactive Programming - The Price You Have To Pay For A Responsive Backend
Backend

Reactive Programming - The Price You Have To Pay For A Responsive Backend

Posted on

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:

Read the post

We're Hiring

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
Read Rethinking the Next-gen Analytics Web App at trivago
Frontend

Rethinking the Next-gen Analytics Web App at trivago

Posted on

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.

Read the post
Read Keeping up the Open Source promise for 2021
Open source

Keeping up the Open Source promise for 2021

Posted on

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.

Read the post