Launched in 2007 with a mission of making customer service easy for organizations, Zendesk offers products involving real-time messaging, voice chat, and data analytics. All of this was built as a monolithic Rails app, using MySQL database and running in a co-located data center on hardware the company owned.
That system worked fine for the first seven years or so. But as Zendesk grew—the company went public in 2014 and now has 145,000 paid customer accounts and 3,000 employees—it became clear that changes were needed at the infrastructure level, and the effort to make those changes would lead the company to microservices, containers, and Kubernetes.
“We realized that just throwing more and more stuff into a Rails monolith slowed down teams,” says Senior Principal Engineer Jon Moter. “Deploys were really painful and really risky. Every team at Zendesk, some of whom were scattered in engineering offices all over the world, were all tied to this one application.”
Moter’s team built some tooling called ZDI (Zendesk Docker Integration), which got developers set up with containers almost instantly. There were just a couple of options for orchestration at the time, in the summer of 2015, and after some research, Moter says, “Kubernetes seemed like it was designed to solve pretty much exactly the problems we were having. Google knows a thing or two about containers, so it felt like, ‘all right, if we’re going to make a bet, let’s go with that one.’”
Today, about 70% of Zendesk applications are running on Kubernetes, and all new applications are built to run on it. There have been time savings as a result: Previously, changing the resource profile of an application could take a couple of days; now, it takes just a minute or two. Outage resolution happens with self-healing in minutes instead of the hours previously spent patching things up.
Having a common orchestration platform makes it way easier to have common tooling, common monitoring, and more predictable dashboards, Moter adds. “That has helped make it easier to onboard people and follow standard sorts of templates, and to set up monitors and alerting in a fairly consistent manner. And it helps a lot with on-call. We have offices scattered around the world, so for people on-call, it’s daytime at one of our offices all day.”
The benefits have been clear, and Zendesk is happy to share its learnings with the rest of the community. “Having so many companies that either compete with each other, or are in different industries, all collaborating, sharing best practices, working on stuff together,” says Moter, “I think it’s really inspiring in a lot of ways.”
For more about Zendesk’s cloud native journey, read the full case study here.