So much of our daily lives happen online these days, and yet the average adoption rate for a digital government service is less than 20%. PayIt’s founders set out to boost that number by offering a new digital platform that simplifies how citizens interact with governments.
“It’s the vision of a digital DMV,” says PayIt CTO Richard Garbi. “There’s a whole sphere of government-related services that are really only available in person, or the digital experience is really quite poor. We partner with governments to upgrade their experience and then transform their way of doing business with constituents. We provide enabling technology, but also consult on policies that they need to change to provide a digital service.”
The company, founded in late 2014, was cloud native from the beginning. “We have a microservices-based architecture, and I was looking for a container orchestration framework,” says Garbi. “At that point, Kubernetes was very, very nascent technology. At the first DockerCon, there were folks from Google that presented this idea of this orchestration framework called Kubernetes, and that piqued my interest. I was watching and waiting for them to get a version out that I could use.”
Of course, PayIt needed to get code into production before then. So Garbi cobbled together some open source tools to get the company’s infrastructure off the ground. When a beta version of Kubernetes became available in 2015, PayIt switched over and has been running Kubernetes in production ever since.
Kubernetes satisfied the key requirements that Garbi had around availability and elasticity. “I had to be able to deploy a new version or roll back with zero downtime,” says Garbi. “I needed the ability to scale up and scale down based on load, and to determine the healthiness of a particular service and then being able to evict things that are not healthy. Being able to discover where other services are running without having to roll my own service discovery was important.”
Many of PayIt’s customers see huge spikes in volume at the end of the month or the end of the year. When things like registration renewals or property taxes are due, “There can be tripling and quadrupling of day-over-day volume or even more,” says Garbi. “Being able to dynamically expand to handle the volume and then contract as it abates without my team having to do anything is pretty huge. We’ve never had an outage that was volume-related.”
Because PayIt’s customers are government agencies, the security aspect was also important. “There are pretty interesting and complicated security policies you can put on top of each individual deployment or pod, and then restrict the traffic that you would expect to see from a given container or pod,” says Garbi. “You can even get much more fine-grained network control rules via Kubernetes. The audit logging and tracing of who did what and when is also a pretty compelling part of the story. Knowing that a container was created by PayIt and is running in a PayIt cluster, and being able to assert the chain of delivery from end to end, is pretty powerful. Something that isn’t from us can’t run in our cluster.”
And all of these things were provided by Kubernetes “out of the box, so we just didn’t have to manage them ourselves,” says Garbi. “It made building and running microservices a lot easier than it could have been.”
The decision has also paid off in cost savings. “We’re currently at a spend of less than one percent of revenue on infrastructure cost,” he says. “I attribute that directly to utilizing Kubernetes, because we’re able to pack a whole lot more work into the same set of servers and be very, very, very efficient with the infrastructure spend that we currently have. That’s 100% due to Kubernetes.”
For more on PayIt’s cloud native success story, read the full case study.