Fanatic learning is one of trivago's core values that forms a fundamental part of our engineering culture. It's very valuable to have curious minds around you that connect the dots to come up with new ideas and love to exchange knowledge on various topics. Since many of our engineers are involved in their own initiatives and projects outside work, we decided to introduce you to some of these side projects. The goal is to recognize their achievements and share their knowledge with our broader tech community. Take a look and feel free to reach out to any of them if you'd like to exchange on any of their topics!
Over the past few months, I was given the opportunity to try out the life of a Product Owner (PO), alongside retaining my responsibilities as an engineer. The life of a PO has always intrigued me since I joined trivago 2 years ago, and I always found myself unofficially taking on roles that were traditionally done by them. Things like reaching out to stakeholders for collaboration, thinking about KPIs and impact, and general "aligning". Perhaps it's because I simply love the sound of my own voice, but I've always felt a particularly high level of gratification from contributing in meetings. "Aligning" is an overused word in the workplace, but it is the best to describe where I derive my professional gratification from, outside of building things with code.
In our new series, trivago Tech Check-in, we're introducing you to some of our tech talents from across the globe who help keep our metasearch engine running smoothly everyday. In this first edition, you'll meet Fabian Fritzsche, an engineering intern that works on the Microservice-System that feeds our GraphQL API with up-to-date hotel data.
At trivago we operate a hybrid infrastructure of both on-premise machines and clusters on Google Cloud. Over time, we came up with a set of deployment guidelines for running our workloads as more and more of them are migrating to Google Cloud. These are not strict rules, but rather suggestions to best serve each team's needs.
After 15 years as a game/application developer and trainer, Benjamin decided to make test automation his career. He's currently a Test Automation Engineer in trivago's core QA team. Benjamin is also the author and maintainer of two open source projects for Cucumber BDD parallel test execution and reporting. He is an occasional speaker at conferences on testing and automation.
The price of reliability is the pursuit of the utmost simplicity.
— C.A.R. Hoare, Turing Award lecture
Have you ever enthusiastically released a new, delightful version to production and then suddenly started hearing a concerning number of notification sounds? Gets your heart beating right? After all, you didn't really expect this to happen because it worked in the development environment.
On a normal day, we ingest a lot of data into our ELK clusters (~6TB across all of our data centers). This is mostly operational data (logs) from different components in our infrastructure. This data ranges from purely technical info (logs from our services) to data about which pages our users are loading (intersection between business and technical data).
Throughout my career, I’ve had times where I worked 100% remotely. Overall working remotely can have benefits and even make you more productive as an engineer. I would like to share 5 tips that have worked very well for me.
Last year, when visiting CloudNativeCon/KubeCon Europe in Barcelona (one of the biggest cloud-focused conferences in Europe), I noticed that there were some companies present in the exhibition space whose primary focus wasn't software development. I was surprised to see companies from finance to sportswear as Cloud Native Computing Foundation (CNCF) sponsors. There I discovered various CNCF membership types and learned about the End User Supporter membership.
Imagine you go to your hotel for check-in and they say that your dog is not allowed even though the website clearly states that it is!
trivago gets information about millions of accommodations from hundreds of partners and they keep on updating. There are many differences not just in the data format, but also in the data itself. There can be many discrepancies in the information and consolidating them can be a very complex process. But it's our responsibility to provide the most accurate information to the best of our knowledge.
We recently hosted a Q&A on our trivago tech Twitter and Life at trivago Instagram page, where we gave our followers the opportunity to ask our developers anything. Even though we tried to answer all of them on the day, we decided to compile some of the most recurring questions and their answers for you below!
trivago open sourced a Prettier plugin for the Twig template language. It is available under the Apache 2.0 license, and you can access it on trivago's Github space.
The trivago core product runs on our own frontend framework Melody. Melody uses a Twig-inspired template language because when it was introduced, it had to be interoperable with our existing codebase, which was based on the Symfony PHP framework with Twig as the default template language.
To the outside, trivago appears to be one single software product providing our popular hotel meta search. Behind the scenes, however, it is home to dozens of projects and tools to support it. Teams are encouraged to choose the programming languages and frameworks that will get the job done best. Only few restrictions are placed on the teams in these decisions, primarily long-term maintainability. As a result, trivago has a largely polyglot code base that fosters creativity and diverse thinking. It allows us to make informed decisions based on actual requirements rather than legacy code or antiquated projects.
At the end of last year, to celebrate our continued sponsorship of the Open Source community, we hosted a small conference with special guests at our Düsseldorf campus. We initially hoped to welcome Tobias Koppers and Sean Larkin from Webpack, plus some internal speakers. What we didn't expect was the huge amount of fantastic speakers who wanted to present their projects to the community. In the end, Sean unfortunately couldn't make it but we did have a chance to welcome Marvin Hagemeister, Juan Picado, Norbert de Langen and Pia Mancini as speakers, plus our own amazing talents.
At trivago, we generate a huge amount of logs and we have our own custom setup for shipping logs using mostly Protocol Buffers. Eventually we end up with some fields in Elasticsearch (ES) that contain partial (or full) URLs. For instance, in our specific case we store the query component of the URL in a field called
query and the path component in a field named
url_path. Sample values for these fields could be: