InVision was recognized at MongoDB World 2017 as the winner of the MongoDB Innovation Award: Atlas category. We had the opportunity to sit down with Dana Lawson, InVision’s VP of Platform Engineering to learn more about their innovation.
Tell us about InVision
InVision is the world’s leading design collaboration platform. Helping companies like IBM, Airbnb, Visa, Netflix and Evernote unlock the power behind design-driven product development, InVision makes it easy for teams to prototype, manage their workflow, and control their entire design process all in one place.
The goal of InVision has always been to create a highly collaborative design platform in the cloud that would allow people around the world to have access to design, review, and user test products—all without a single line of code.
Why did you build InVision on MongoDB?
When originally building InVision, we looked to MongoDB right out of the gate because of its uptime and scalability. We needed to be able to provide our clients with a platform that is as reliable as we are.
In addition, MongoDB helps us easily build new features. You can imagine that with designs, requirements are very fluid and having a restrictive data model is a limiting factor. MongoDB’s document data model has help us innovate quickly. An example of a project that uses MongoDB is Inspect. For designers that build in Sketch, they can send their design to Inspect, which breaks down the Sketch file into different layers and allows front-end developers to get assets, CSS tags, and exact pixel dimensions for how the designs should actually look on a live site.
When we started with MongoDB, we were using Chef to automate AWS instances and the database. We had 28 replica sets spread across 4 different environments, some of them in different AWS accounts.
While we were having success, once MongoDB Atlas was released, we immediately took the leap. Moving to a database-as-a-service offering increased our team’s productivity as we were able to focus on our product, rather than managing the infrastructure. As a turnkey cloud database, MongoDB Atlas provides us with the flexibility needed to develop in a secure, robust environment while our customers continue to have access to a highly collaborative design platform in the cloud.
How do you use MongoDB Atlas and what impact does it have on your day to day?
We use MongoDB Atlas on the AWS cloud because of the ease of use and flexibility of the cloud platform. Together we are able to build a multi-tenant solution for Javascript Object Notation (JSON) messages received. Essentially, we use MongoDB as a transactional data store for any data, like our design artifacts, that benefit from not having a pre-defined schema.
The design data for a prototype can have any number of layers and graphics. Anyone who has seen or worked with a design tool will have familiarity with layers and the layers pane where objects can be nested, grouped, and inherited. MongoDB's flexible schema allows our backend services to store the data model for a prototype with minimal effort.
The most common queries we run are simple .find()s
on indexed fields. At our peak, we read thousands of documents per second; we’re able to retrieve documents usually within 2 milliseconds.
By integrating Atlas with all of our provisioning, we have avoided the dreaded DevOps bottleneck. Without training, our engineers can “self-serve” by simply going to the InVision platform and define the instance they need; MongoDB Atlas configures it automatically and they’re ready to go.
What does your technology stack look like?
Our technology stack is primarily focused on Node and Google Go, allowing us to run a microservices architecture to create independent feature sets on data stores and significantly reduce dependencies. These reductions allow us to quickly spin up data stores and automatically add clusters as needed. Right now we use Kubernetes with MongoDB Atlas, though we are moving everything over to Atlas so we do not have to worry about uptime, EC2 clusters, anything. We’ve incorporated the MongoDB Atlas REST API into our Ansible scripts, which makes it incredibly easy for us to add new replica sets and users for different environments. We simply call out to the API and MongoDB Atlas spins up the replica sets so we don’t have to.
Some other technologies we use include AWS Lambda for short-term execution, Amazon SNS and Rabbit MQ for messaging and mobile notifications, and Amazon S3 for storing assets.
To learn more about InVision, watch their talk from MongoDB World 2017 here.