One of the many responsibilities of a Site Reliability Engineer (SRE), is to ensure uptime, availability and in some cases, consistency of the product. In this context, the product refers to the website, APIs, microservices, and servers. This responsibility of keeping the product up and running becomes particularly interesting if the product is used around the world 24 hours every day like trivago. And just like in the medical profession, someone has to be on call to react on failures and outages outside of the office hours.
Throughout last year I had the opportunity to participate and collaborate on multiple research initiatives in the field of Natural Language Generation (NLG) in addition to my responsibilities as a Data Scientist at trivago. NLG is the process of automatically generating text from either text and/or non-linguistic data inputs. Some NLG applications include chatbots, image captioning, and report generation. These are application areas of high interest internally within trivago as we seek to leverage our rich data environment to enrich the user experience with potential NLG applications.
Technology keeps getting better and better which, at some point, makes us think "Should I migrate to the latest version/technology or not?" Well when you decide to use a better technology for your application, you have to also consider rewriting the code that your application runs on. The business logic remains the same in most of the cases but the data model would definitely change if you are switching from SQL to some NoSQL Technology for example.
Around a year ago, in our large scale refactoring project also known as Project Ironman, we stepped away from image sprites that we used for our icons. In this post we will explain our reasoning behind this decision and how it improved maintainability and website performance.
When using webpack to build your assets, it's only a matter of time until you wish for targeted builds.
Whether it's the output of the library you're working on (CJS, UMD, AMD, Var, etc.), or the specific feature
set (IE8 support, no IE8 support).
parallel-webpack can run those builds in parallel, thus making full use
of the multi-core processing capabilities of modern devices.
Twice a year, the trivago software developers gather to have a 2 day internal hackathon. This December saw another round of ambitious creativity, relaxed atmosphere, and good food :-)
One of our core values at trivago is fanatic learning. A great way to learn and expand your knowledge is to creatively try new technologies, or to apply well known technologies to new situations, without having to pay attention to a strict schedule or deadline. Exactly that is what roughly 120 engineers were doing on the first Thursday and Friday in December: It was internal hackathon time, meaning each developer could spend two entire days on their own projects as he or she saw fit.
tCache takes a creative approach for near lock-free evictions and supports data-aware evictions. Its key features are:
Configuration of features is individual per Cache instance, by using a cache Builder:
Here at trivago we write a huge number of log messages every day that need to be stored and monitored. To handle all these messages we created Gollum, a tool that enables us to conveniently send messages from multiple sources to different services. While initially only covering log messages Gollum quickly evolved to a routing framework for all kinds of data. This blogpost is a short introduction to Gollum and how we use it at trivago.
At trivago we love hotels above everything else, but we also like metrics, we love to measure everything, compare, decide, improve and then rinse and repeat. In this blog entry we are going to describe our experience with InfluxDB, a time series database that we are using to store some real time metrics.