Previo is a Czech based tech company. Their main product is a Hotel Management System – which is the most widespread hotel system in the Czech Market with strong positions in Hungary, Poland and Slovakia as well. It provides a full-featured Front-Desk system for hotels, Reservation System, Mobile App and more.
One of the most important features for hotels is to publish and sync their listings to many different portals and sites such as Booking.com, Expedia, AirBnb. In the case of Previo this synchronization was handled via 3rd party provider, which is not ideal because they were dependent on an obsolete and slow system with the lack of control over the development of new features. Key requirement was the ability to handle several hundreds of thousands of requests without losing even a single one.
We helped Previo develop their own connector to many different portals – the Channel Manager. The key concept is to to have a single API between Previo PMS and CHM:
- The Channel Manager is responsible to distribute updates about listings availability and prices from Previo to the connected portals through their APIs.
- The Channel Manager is responsible to pass all incoming booking requests from the portals into Previo HMS
This way, the Previo HMS doesn’t need to know the details about the communication and it only knows about the CHM`s API. This gives a lot of flexibility integrating new portals – minimum changes are required on the HMS site.
THE TECH STACK
The Symfony – our PHP framework of choice. Allows easily integrate new APIs with Object-Oriented Approach. As of version 4, Symfony can be used as a microframework with minimum dependencies. For example, the CHM doesn’t require any frontend at all – and the templating system can be easily excluded from Symfony. This way we created a very small footprint solution that is fast and reliable.
RabbitMQ – The key component in our solution – we use AMQP protocol to transfer messages between HMS and CHM. Also, the CHM uses a chain of queues internally to effectively distribute messages from HMS to their destinations. RabbitMQ allows us to do the job asynchronously – leading to better performance and isolation. Moreover it allows us to easily scale to a much bigger number of processed requests, just by adding more queues.
ELK – The Elastic-Logstash-Kibana – we’ve chosen this stack for logging – any communication that went through is properly logged, accessible and easy to find.
It’s too early to measure the exact impact of our solution. But what’s certain is that Previo has a fast and reliable way to sync their data and they’ve full control over the whole process. The sense that even in case of failed sync they have all information and means to fix it ASAP is real relief and it helps build trust in their product.
Grownapps jsme si vybrali kvůli jejich zkušenostem s vývojem aplikace v hospitality odvětví. Musíme říct, že zkušenosti zúročili a s výslednou podobou aplikace jsme spokojeni. I když jsme vývoj nakonec převedli do interního týmu, kluci z GA dodali skvělý základ, na kterém jsme mohli dále stavět. Velké díky patří Tomášovi P., který nám byl vždy velice nápomocný a je to člověk na správném místě.
Petr Klas, CTO
- Client: Previo s.r.o.
- Project type: Team as a Service, Custom web application development
- Technologies: Symfony, RabbitMQ, ELK