Case Study: Cloud CMS Runs MongoDB The ProblemWhy MongoDB?Results
Cloud CMS is a new breed of content management system that makes it easy to publish content and digital experiences to mobile applications.
Founded on the belief that successful customer experiences will need to span an increasing number of devices and form factors, over long periods of time, Cloud CMS helps brands by enabling companies to manage, deliver and source meaningful content to their audiences at just the right time. Cloud CMS provides businesses with an intelligent content backbone that supplies the infrastructure and authoring tools to source, curate, collaborate and respond with crisp content to an always-connected world.
Cloud CMS uses MongoDB as the foundation for its real-time, multi-tenant content services, cross-cluster distributed caching and elastic job queue. MongoDB stores all customer-defined content types and instances and is further utilized to store binary files within GridFS for complete sharding of the backend.
As a cloud platform, Cloud CMS handles a large amount of real-time requests for content creation, search, query and retrieval. The platform must provide a consistent, transactional view of content at all times while remaining flexible and dynamic for end-user content needs. It works with a wide range of content - from arbitrary JSON to images, audio and video files, desktop and office documents, PDFs, custom content types and more. The system manages role-based permissions, validation logic, auditing records and a content services including mimetype transformation, workflow for content lifecycle management and data warehousing for analytics collection and reporting. Users are able to contribute data via a free, public API. As a result, data is constantly being created, updated, refreshed and delivered to mobile and web applications worldwide.
Cloud CMS was initially designed to use a key-value store. But the team quickly hit design and performance roadblocks. Fundamentally, with a growing number of social systems and an exploding number of possible content schemas for all of the different kinds of front-end applications you might imagine, a key-value store proved to be far too rigid. As Cloud CMS CEO Michael Uzquiano explains, “The fixed-schema nature of the product would have required us to essentially start over with a new indexing and view design for each new customer that signed up for a tenant subscription.”
Cloud CMS therefore began an extensive evaluation of other non-relational, JSON document-oriented database options.
Compared to other non-relational databases, MongoDB proved to be faster, more reliable and easier to implement. It also provided a greater number of higher quality software drivers. These drivers enabled Cloud CMS’ developers to lower the learning curve and focus more quickly on introducing MongoDB into the Cloud CMS product. The team also appreciated that MongoDB had an active and invigorated developer community that contributed driver features, bug fixes, code samples and best practices.
MongoDB now provides storage, query and retrieval for all customer content including structured JSON, images, audio and video files. Customers are free to upload any kind of content they like. They are also at liberty to define their own custom schemas on the fly. This includes custom types, properties, validation callback logic and server-side aspects and behaviors. The behavior of the server can be adjusted on a tenant-by-tenant basis by simply uploading server-side script files (JS). No coding, no deployment and no server restarts.
All of the software that touches MongoDB is written in Java, and runs on top of Amazon EC2. It utilizes EC2 Auto Discovery for dynamic network configuration as new servers come online and old servers go offline. This allows Cloud CMS customers to only ever pay for the server capacity they use. Cloud CMS integrates Hazelcast with MongoDB to provide a fully cross-cluster, persisted grid of content objects, OAuth2 authentication tokens, and more. Cloud CMS also stores and indexes JSON properties into ElasticSearch to provide real-time full-text search for all customer content.
In sum, MongoDB offered the high performance, flexible schema design and indexing control that the company required, coupled with a long runway for scale-out and a fast, easy solution for storing, locating and retrieving data.
Easy Learning Curve
In 2010, Cloud CMS completed its migration, moving all of its customer data from its chosen key-value store to MongoDB in a few hours. This included binary data that was moved from disk storage into GridFS to take advantage of sharding. Cloud CMS went from no experience with MongoDB to full productivity in a matter of weeks.
Adaptable and Schema-less
MongoDB is a schema-less database by design in that it doesn't impose any mandatory structure to one’s JSON. As such, Cloud CMS customers can upload its existing content with ease. In addition, Cloud CMS nicely layers JSON Schema support on top so that customers can define types, properties, validation logic, integrity checking and server-side behaviors as they wish.
MongoDB provides a robust architecture for scaling out and delivering high performance applications. Cloud CMS developers are able to work locally with a single MongoDB instance and deploy the very same code without any changes to multi-instance test and production cloud environments. These environments utilize sharding and replica sets for scale-out and failover respectively. MongoDB hence gives developers room to expand as their data sets grow.
...The most impressive thing for me was the engineering focus at 10gen and their desire to produce a high performance product,â€œ said Uzquiano. ...Everyone at 10gen is focused on making sure the tires are on the road. Even Eliot [Horowitz, 10gen CTO and co-founder] contributes code to the MongoDB Java Driver on GitHub and posts to the community forums. That's very authentic and very inspiring to us as a business.â€œ
When Cloud CMS moved from its key-value store, it saw performance increase by a factor of 10 and was able to offer a customer-friendly content management platform that imposed no migration barriers for customers with existing content. MongoDB reduced code by 50% and sped up fully authenticated and audited data retrieval from approximately 20ms to 2ms on average.
It's been a pleasure to work with MongoDB. We're able to offer the feature set that we want and find ourselves operating today much leaner and much meaner. By We have less code to maintain and don't have to spend our time worrying out database architecture and scale out. We can spend more time focused on our customers and their success.
Location: Boston, MA
- Migrating from a key-value store to MongoDB reduced code by 50% and improved performance by a factor of 10x.
- Ported all customer data in a few hours with zero downtime.
- Shard and replica-set architecture minimizes number of servers, reduces cost and keeps costs low for multitenant customers