Founded in 2000, CustomInk.com enables clients to design and order custom decorated products such as printed t-shirts and embroidered caps. The company’s custom t-shirt printing operation accommodates orders of all sizes, from a single t-shirt to quantities in the thousands. Named to Inc. Magazine's “Inc. 500” list of America's fastest-growing private companies and recently honored in the e-Commerce Customer Service category for the Stevie Awards, CustomInk needs to continually evolve to remain a successful e-commerce business.
As an old-school Oracle shop, CustomInk couldn't deliver new web functionality fast enough. They adopted MongoDB to release the reins of relational database captivity and provide their developers with an easy, flexible NoSQL solution to get new features in production more quickly.
While Oracle was the right choice when the company was founded, CustomInk ran into challenges as their product and customer needs evolved. The biggest limiting factor was the speed at which they could develop new applications and introduce new functionality. Their relational database was difficult to run on developers’ laptops, expensive, complex and not portable.
CustomInk’s 10-year old product catalog was plagued with a rigid, static data structure that stymied new merchandising opportunities and made it increasingly difficult to manage. Plus, having all of their data in Oracle tied them to a data center, preventing them from moving applications to the cloud. “We wanted to move away from Oracle as fast as we could,” said Nathen Harvey, web operations manager for CustomInk.
In CustomInk’s 2010 evaluation of NoSQL databases, MongoDB beat out competitive options; it did an excellent job in “bridging the gap,” simplifying developers’ transition to the document model. In addition, CustomInk recognized that the community around MongoDB was more energetic than any other in the industry.
MongoDB supports CustomInk’s agile, iterative development practices, enabling much faster development than a relational database. It resolved all of CustomInk’s relational database challenges, offering unmatched ease of use in every area: getting started (developers were up to speed in mere days); running locally; moving from development to testing to production; operating and maintaining in production environment (zero downtime upgrades); and making changes.
MongoDB can run locally, in a data center, or in the cloud, making it easy for CustomInk to deploy applications wherever they want. Their 20 instances of MongoDB run on 12 servers in a data center, Amazon EC2 and Rackspace. For each application, CustomInk runs 3-node replica sets – including two nodes for data and one arbiter –which enable automated failover and protect data across multiple servers.
CustomInk currently relies on MongoDB for three use cases:
Centralized Logging – By centralizing all application and web site activity data on MongoDB, CustomInk eliminated the need to correlate transactions across multiple servers. CustomInk can now easily capture metrics (e.g. conversion rates) in order to better understand user activity.
Content Management – MongoDB’s document model and schema-less design enabled rapid development of CustomInk’s next-generation product catalogue and provided more dense storage. They were able to easily model product data and eliminate fields with empty values. A baseball cap, for example, shouldn’t be represented in the same structured way as T-shirts; CustomInk does not need to associate multiple sizes with caps, nor do they need to know whether they can ‘print on the sleeve.’ MongoDB also provided flexibility to iterate over the design and update the application with new fields, a benefit that will continue to serve them well as requirements change. “The way data is stored in MongoDB makes so much sense; it’s how I think about it in code and how I’m going to present it to my customers,” said Harvey.
Supply Chain Management (SCM) – Before discovering MongoDB, CustomInk managed its complex supply chain with Excel spreadsheets shared across the organization. Today, all data related to the printer, vendor and supplier network – e.g. inventory data, ordering logistics, printer capabilities, location and availability – is stored in a MongoDB web application that enables and automates their entire supply chain. MongoDB directly impacted how CustomInk processes orders internally, and even led them to readjust several operations roles.
HAPPY DATABASE, HAPPY DEVELOPERS
Compared to MySQL, MongoDB doesn’t require continual fine tuning and is much easier to run in a production environment. “You can pretty much stand it up, get it running and it’s in a really happy space,” said Harvey. MongoDB keeps the engineering staff happy, excited and challenged, an important perk for a company that wants “work” to be fun!
CustomInk’s product catalogue would be useless without images. The company relies on MongoDB’s GridFS to store product images directly in the database, and the nginx-gridfs module as a “lightning fast” way to serve up product images.
In addition to on-host monitoring with Monit and in-datacenter monitoring with Nagios, CustomInk uses MongoDB Management Service (MMS) for external monitoring. A “no brainer security blanket,” MMS helps CustomInk determine with 100% certainty that if there’s a performance issue, MongoDB is not the source of the problem at the moment. “Everyone should be using MMS. It’s easy to set up and run and gives really good insight into running your MongoDB implementation.”
As co-organizer for the DC MongoDB User Group, Harvey and his team are very active in the local community. “It’s really important for us to know that if we get into trouble, we have other MongoDB resources to reach out to, and people willing to help.”
With MongoDB, a single developer was able to build the next generation of CustomInk’s product catalogue faster, more cost effectively and with far fewer resources than with a relational database. The SCM application built on MongoDB provided a productivity boost in processing orders, made it easier and faster to bring on partners and streamlined operations for consistent on-time delivery.
CustomInk is wholeheartedly committed to customer satisfaction, so much so that they stream live, unedited customer reviews on their home page. By accelerating the development lifecycle, MongoDB is helping CustomInk provide superior products and customer service.
As CustomInk starts new projects, MongoDB is almost always considered in the initial design, and in many cases, selected for new application development. According to Harvey, “having MongoDB as another tool in our tool belt is a big benefit to us.”