When it comes to the web, software architectures aren’t often built to last. As site activity, features and revenue keep growing, companies expect to replace old technologies with new ones. They need tools that can handle the increased scale and give IT staff the tools they need to keep the site both running and in line with customer expectations.
Case in point: HolidayCheck, a popular German travel site serving between 20 and 30 million visitors each month. The site lets users book pre-packaged vacations and post travel reviews and pictures — something they’ve done so far around 10 million times on more than 500,000 hotels and 100,000 points of interest. Now halfway into its second decade, and popularity only increasing, the company has decided it’s time make its infrastructure as simple as its product.
Like many companies around its size, HolidayCheck chose Docker and Apache Mesos, as well as the Marathon and Chronos frameworks developed by Mesosphere, as the core of its overhaul. According to Head of IT Operations Maximilian Schöfmann, the main purpose is to improve the company’s developer experience and facilitate continuous delivery — two objectives at which the Mesos ecosystem and Docker excel.
Wanted: A solid foundation for microservices
When he arrived there in 2012, HolidayCheck was already trying to move away from the LAMP stack, which had been in place since its launch in 2000, and onto a microservices-based architecture. The site was running on a Zend framework and pushing changes to it was slow — 60 developers might be working on the same thing, and release cycles could span from 4 weeks to 8 weeks.
“That didn’t scale anymore, both from the technical side and the development side,” Schöfmann explained.
With microservices in place, HolidayCheck believed it could speed up the development cycle and also broaden the site’s range. By treating every hotel, destination and property as separate entities, partners and other websites would be able to connect to the HolidayCheck APIs and feature its information on their sites.
However, there was a problem: the company knew it wanted to use Scala, Node.js, MongoDB and Elasticsearch as the core its microservice move, but the existing tech stack around and below just wouldn’t let them use those technologies effectively.
Sold on Mesos and Docker
To solve the problem, HolidayCheck opted for a Mesos+Docker architecture (running on top of VMware virtual machines and bare metal servers) and deployed the system with the help of a consulting firm called Container Solutions, as well as Mesosphere. The project, which kicked off in November 2014, is now operational and delivering what Schöfmann describes as “several factors of improvement” in the developer experience. Developers and ops staff were so fed up with the existing system that they jumped on learning Mesos (as well as Marathon and Chronos) and Docker, and were already deploying new code within hours.
HolidayCheck’s Mesos environment is still in its early phases, but the plan is to expand its reach in a hurry. Presently, new stateless services are deployed on it using Marathon and Chronos, and all stateless services will eventually migrate there.
“As a policy for our development, everything that is newly developed, or legacy services that are touched in a deeper way, have to be migrated to run on Mesos,” Schöfmann said.
Stateful services such as Elasticsearch are still running on dedicated VMs, Schöfmann noted, but that could change in the not-too-distant future. Container Solutions is working with Cisco and Mesosphere to build out Elasticsearch support for Mesos and the Mesosphere Datacenter Operating System, work that would help ease the migration.
And although there was some training necessary in order to teach everyone Mesos and Docker — as well as new development best practices such as writing health checks into applications — the team seems to have embraced the change with open arms.
“Developers are writing health checks on their own now,” Schöfmann said. “That’s the real shift.”