Hotel Engine

Hotel Engine’s Startup Journey Is Smooth and Steady on Heroku

Early experimentation, rapid iteration, and Salesforce integration helped build a growing business.

Many startups experience growing pains right from the outset. Without careful orchestration of resources, investments, and headcount, a new business may struggle to deliver a quality product to market before the window of opportunity closes. Hotel Engine got started on Heroku with minimal investment, and then grew its platform and team as the business took off.

From customer inquiry to new business on Heroku

Hotel Engine was spun out of a corporate housing company called Travelers Haven. For years, customers began inquiring about booking shorter stays for their remote workforce, such as a week or two in a hotel rather than a few months. To explore this market opportunity, Travelers Haven dedicated one of its Ruby developers to building a proof-of-concept for a new hotel booking system. The company was already running apps on Heroku, so it made sense to build the new system on Heroku as well.

The developer was able to quickly deploy a prototype on Heroku. Then, a small team turned it into an MVP, and in 2015, Hotel Engine officially launched as a separate business. Travelers Haven bootstrapped the new company for the first few years, providing part-time resources until Hotel Engine gained traction and could operate independently.

This early startup journey was smooth and steady, thanks in part to Heroku. A lone developer could easily experiment and prototype new ideas without the overhead of setting up and managing infrastructure. Heroku's fast deployment and CI/CD tools enabled a lean team to rapidly iterate and deliver a production-ready platform to market. Hotel Engine could manage resources as efficiently as possible while the business ramped up.

Heroku saves us from hiring DevOps people, so we can focus our small team on development. We don't have to worry about things like uptime and vulnerabilities --- Heroku takes care of that for us. John Siladie, VP of Engineering, Hotel Engine

Flexibility and simplicity make it easier to evolve the platform

Hotel Engine caters to a variety of business travelers, from corporate executives to visiting nurses and teachers to construction workers. The platform is primarily used by administrative staff to book accommodations on behalf of company travelers, and it consists of a feature-rich admin portal that helps them easily manage bookings and billing. Travelers use the Hotel Engine mobile app to book rooms themselves, as well as access hotel and reservation details.

hotelengine-01

The Hotel Engine platform started as a pure Ruby on Rails monolith. The team has since broken out the front end into a separate Heroku app, building it first in AngularJS, and then in React. A suite of intermediary orchestration layer APIs also runs on Heroku. Heroku's flexibility enables the team to integrate other cloud platforms into their architecture when needed. For example, they're running search and some microservices in Node.js on AWS Lambda.

Heroku is easy to use and self-explanatory. We can hop on Heroku and easily figure out any ops tasks needed without doing tons of research. Collin Smith, Lead Software Engineer, Hotel Engine

Data services help the team do more with their data

Hotel Engine makes use of Heroku's managed data services, such as Heroku Postgres for primary storage and Heroku Data for Redis for background job processing. The team set up a real-time Postgres follower database for added scalability. As write traffic can be heavy at times, the platform offloads much of the read traffic to the follower in order to help the lead database focus on handling writes. The team also uses the follower to generate reports, which are then delivered to internal teams via Heroku Dataclips.

We use Heroku Dataclips to quickly pull together a report whenever questions come up or we need to scope out features. We can give our team easy access to the data just by sending them a simple link. John Siladie, VP of Engineering, Hotel Engine

Heroku's managed platform also helps Hotel Engine keep customer and partner data secure. Heroku regularly updates, patches, and maintains infrastructure and data services in compliance with international standards. This enables the Hotel Engine team to focus on making sure that their code and logic is secure at the app level.

We don't have to even think about upgrading our databases. Heroku gives us a head's up on scheduled maintenance, and then it just happens. Collin Smith, Lead Software Engineer, Hotel Engine

Seamless data synchronization with Salesforce

Hotel Engine's business is driven by close relationships with travelers, administrators, hotel partners, and others. The Salesforce Customer 360 platform empowers the company's sales and customer service teams to manage the CRM workflows that strengthen these relationships.

Data sharing between Hotel Engine's apps and Salesforce org is essential to business operations. By funneling Salesforce data into Heroku apps, customers can get a personalized view of their account and history. Conversely, sharing app data with Salesforce, internal teams can stay current with a customer's activity on the platform.

hotelengine-02

For both customers and internal teams, data sharing between systems must happen in real time. The engineering team uses Heroku Connect to instantly sync data between their Heroku Postgres databases and the company's Salesforce instance. Because Heroku is a part of the Salesforce platform, integration is seamless. The team can install and configure Heroku Connect in just a few clicks, and synchronization happens automatically whenever data changes on either end.

With Heroku Connect, we don't have to integrate the Salesforce schema and connection into the app code. It's all managed through a point and click interface. Collin Smith, Lead Software Engineer, Hotel Engine

By synching data with Heroku Connect instead of an API, the engineering team can respond to changing business needs with more flexibility and speed. Whenever the sales team engages a new customer, they can leverage Salesforce to handle the sales cycle and quickly pass new account data to the Heroku apps. If the sales team initiates a new way to do business in Salesforce, the team can update Heroku Connect to keep it all current. Developers can also build reports more efficiently by importing Salesforce data into Heroku Postgres and use Dataclips to produce the report.

Currently, the engineering team is working on expanding the company's use of Salesforce by managing more supplier information, such as property inventory, in their Salesforce org. The team had built an admin tool in-house, but it was difficult for non-technical staff to use. Sales and other departments much prefer accessing as much information as possible in Salesforce.

Heroku gives us the flexibility to build tools ourselves when it makes sense, or leverage a business-ready service like Salesforce that allows us to move faster. John Siladie, VP of Engineering, Hotel Engine

hotelengine-03

Ready for rapid growth

With Hotel Engine's rapid growth, the team plans to evolve their apps on Heroku over the long-term. Heroku's app metrics help them monitor performance so they can troubleshoot issues, scale up when needed, or identify areas for improving code. The engineering team itself has nearly doubled in size over the past year, enabling the company to build new features, such as analytics tools, that deliver even more value to business travelers around the world.


Inside Hotel Engine on Heroku

The main Hotel Engine platform is a Ruby on Rails monolith, with the front end as a separate React app. Intermediary orchestration layer APIs are also running on Heroku. Search and some microservices in Node.js are running on AWS Lambda. The Rails app connects to a main Heroku Postgres database with a real-time follower for added scalability. Heroku Data for Redis handles background job processing. Hotel Engine uses other Heroku Add-ons, such as Sentry for error reporting, SendGrid for emails, and Papertrail for logging (integrated with Slack to push alerts). The team uses Heroku's Application Metrics to monitor performance and Heroku Connect to sync data with Salesforce.