How We Designed VividCortex For Agencies and Consultants

Posted by Baron Schwartz on Jul 1, 2015 9:00:00 AM

One of the decisions I notice acutely about other companies’ products is their user model. I always notice it, and it makes me either smile or grit my teeth. Companies get this wrong all the time.

  • Right: a user account owns itself and is affiliated to a company/organization/etc. It may belong to teams and have various levels of permissions. But the person who created the account owns the account.
  • Wrong: a user account is created and owned by, and depends on, an organization or company.

The difference may seem silly. Why would anyone care?


Think of GitHub. You probably have your own opensource repos, and you probably participate in your company’s repos. You probably also participate in some teams for repos that you care about, which are owned by other organizations or users. You can do this all with a single account.

What if you had to create a new account for each organization whose code you wanted to collaboratively develop? (Would anyone make this mistake? Why, yes they would, and some very popular collaboration/communication apps do it.)

When we created VividCortex’s user model, we drew inspiration from GitHub. Users are an independent entity, just as they are in GitHub. Companies can create environments (the analog of repos in GitHub). Each environment has a team of users who can access it. Teams are decoupled from each other. As a company you can grant one set of people access to production, another access to development, and so forth. The users in the team are affiliated with those environments. There’s actually a table in our user accounts database called affiliation.

This means a single user can have access to environments across any number of organizations, and we did that purposefully. It comes from my own consulting background, as well as others on the team. I wanted to build VividCortex to enable companies to bring their consultants / remote DBAs / outsourced providers into their monitoring system fluidly. I also wanted such providers to be able to provide their preferred monitoring tools for their clients (assuming that’s us) and share access with the clients easily. These things are entirely orthogonal to one another and it works both ways effortlessly.

In fact we have a lot of customers who use Pythian, Percona, and others—and add those people, with their existing accounts, into their environments.

It’s a small detail but one that matters a lot, one of many things we’ve done to ensure we can integrate easily with others. Monitoring, by definition, does not live in isolation.

If you’re interested in any form of partnership or integration with us, we welcome that. There’s already a lot of activity in this arena. Please see our partnership page for more information!

Image credit: Barcelona by NASA

Recent Posts

Posts by Topic

see all