Like many growth companies in the software-as-a-service field, Duetto has scaled rapidly every year, not only to serve more customers but also to add more features to our core GameChanger app. MongoDB, both the product and the company, has been an important part of our growth story as a hotel technology company.
[Editor’s note: This is the second entry in a three-part “Building a Better RMS” series, in which Duetto CTO Craig Weissman explains the finer points of the cloud-based architecture that powers Duetto and its GameChanger application. Read Craig’s first post here, about why Duetto runs GameChanger exclusively on Amazon Web Services.]
We rely heavily on MongoDB as our database, not only for the metadata that controls our application but also for all of our structured customer “Big Data.” In fact, we use Mongo for other operational persistence, including queuing, logging, temporary storage and cache storage.
Many architects have discussed recently the topic of “polyglot” storage for modern web scale applications. This refers to the idea of using multiple heterogeneous data stores in the back end of an application, with each data store tailored for its specific best purpose and need. This idea has a lot of merit, and in fact Duetto uses AWS S3 where appropriate for its high reliability and low storage costs. But interestingly, we have been able to use MongoDB, at least at our current scale, for all of the purposes mentioned above and described in more detail below.
How Duetto built a better RMS, scaling @DuettoUnicorn on @MongoDB Click To Tweet
The flip side of the polyglot argument is that managing multiple data stores brings a fair bit of operational complexity. At Duetto we have stayed “lean and mean,” and MongoDB has been a big part of that. When used properly and for our use cases, it turns out to solve many problems reliably.
I like to describe Mongo DB as “Goldilocks” — it’s neither too simple nor too complex. It scales reasonably well (for Duetto data volumes and needs) but not as well as some other NoSQL data stores, which are needed at global web scale companies. MongoDB has excellent API and application idioms but lacks full SQL and transactional semantics.
Mongo DB has its detractors from “serious” database experts, but if one accepts its limitations and works around them, it makes for a highly productive and reliable environment.