Smart home technology vendor Vivint serves more than 1 million U.S. and Canadian consumers with services including broadband internet, cloud storage, home automation products, home security services and energy automation controls.
The company, which got its start in home security, leverages door and window sensors, motion detectors and glass-break sensors, as well as those that detect flood, heat, freezing, smoke and carbon monoxide in the home, said Nick Brown, director of Platform Architecture at Vivint. “We have a bunch of indoor and outdoor cameras such as doorbell cameras and the ping camera that is an interior camera supporting two-way audio.” For the smart home, Vivint extends automation devices, intelligent thermostats and Amazon Echo into the household.
Vivint used DevOps to get the software platform behind these sensors and smart home devices up and running within a year. Vivint continues to use DevOps to meet the needs of its growing platform.
Building a Software Platform for the Smart Home
Vivint started its expansion from home security company to the largest smart home provider with a challenge of growing a platform that could serve a million customers. This was necessary to fold in the 700,000 home security customers it already had in with the 200,000 new smart home customers its leadership knew were coming in a matter of months.
“We were building this new infrastructure from absolutely nothing and we needed to support 200,000 new installations in the first few months of operation,” Brown said. Vivint had its existing home security customers on a legacy platform supported by a third-party company; that company had a full 10 years to build out its infrastructure. Vivint had one year to bring those 700,000 existing customers into a new system and less time than that to prepare for the influx of new customers.
Vivint accomplished its goal, serving more than 900,000 homes in the first 12 months.
What DevOps Now Accomplishes for Vivint
DevOps enables Vivint to manage stateful and historical data at scale, Brown said, which allows the company to power the biggest smart home platform in the world. Customers see everything that is going on in their house, including current and 45-day history of what happened, through a 7-inch control display.
The real value the Vivint platform provides is in the integrated in-home experiences, which the company virtualizes and makes available anytime, anywhere around the world, giving customers a real-time view into their home data, he noted.
To build, use and evolve this platform, Vivint uses MongoDB, RabbitMQ, Nginx, ELK (once the ELK stack, now the Elastic Stack), Salt and homegrown tools. Vivint applies its homegrown code to the task of guiding a communication protocol that enables the smart homes and the Vivint cloud to talk to each other.
The company uses RabbitMQ, an Erlang language-based open-source message brokering tool that supports Advanced Message Queuing Protocol (AMQP) to disperse those messages in and out of its software platforms, driving them to and from Vivint’s services in its internal infrastructure. Vivint uses Nginx, a multifunction web server/reverse proxy server to serve web applications and services.
Vivint runs an ELK stack, which consists of Elasticsearch, Logstash and Kibana for monitoring. Its ops team uses Salt, a Python-based configuration manager to manage everything. “We’re looking forward to adding Kubernetes as a new infrastructure solution to make this a little more modular,” Brown said.
The DevOps Path to Modularity
Vivint needs its software platforms to be as modular as possible. “Each piece of the infrastructure must support a modular paradigm. Because we are following a high-risk, urgent schedule, we need to make sure that any mistakes we make along the way are easy to tear out and replace,” Brown noted. Vivint uses virtually countless services to make this possible while pushing out weekly software releases.
“From a DevOps perspective, we have a lot of things to manage here,” he said. Vivint uses AWS to support its infrastructure in the cloud and the company has its own private cloud as well. Vivint needs to move safely and quickly while retaining its agility and orchestrating all these different elements.
To bring all the smart home technologies into the new system, Vivint chose MongoDB because its data models and code tend to naturally mesh with the data models in that database. “We took advantage of the flexible schema, and the document-oriented architecture of Mongo really allowed us to write very little data access code,” Brown said. This significantly cut back on implementation time.