The company behind the productivity tools Backlog, Cacoo, and Typetalk, Nulab serves 4 million users around the world. “Our mission is to make productivity fun and enjoyable for everyone, and that’s regardless of where they’re working from,” says Bing Han, Head of Marketing. “A lot of our users have different international offices and are using our tools to help them communicate.”
But Nulab found its own productivity was hampered by the monolith legacy Java application for Cacoo that was hosted on AWS. “The technology we were using was too old,” says Software Engineer Jay Chen. A diagramming tool, Cacoo was built seven years ago on Java 6, and every version upgrade would take one engineer two weeks of full-time work and then another week of testing. “It was really difficult to find all the possible bugs in our system since Cacoo was growing too huge,” he says. “It was really scary for us since we had to deploy and see how it goes.”
The application was also difficult to scale up, making it hard to add new features or functionality into the system. “Every small change takes longer,” Chen says.
Plus, Nulab, which was founded in Japan in 2004, has in recent years expanded to offices on three continents. In 2017, Nulab’s technology leader set out to solve how engineers can work globally. The team determined that the solution was to break down the monolith into microservices written in Golang. “Microservices were absolutely necessary for members to develop the same application across time zones,” says Chen. The migration is about 80% done; there’s still one microservice using Java. “That’s the beauty of microservices,” he says.
For orchestration, the team considered Docker Swarm but decided to go with Kubernetes. “Kubernetes supported more of the functionality that we need,” Chen says. “Kubernetes has the API that’s integrated with all of the client, an user-friendly UI that we can just log in from our credential. And kubectl is a pretty useful command. This is really easy to use.”
The Nulab team rolls its own Kubernetes for Cacoo applications on AWS EC2 with kops. There is also other CNCF technology in the stack: Prometheus, Envoy, and gRPC.
With Kubernetes, Nulab has seen stellar results. Deploying new code to production is six times faster: 6 minutes, down from 40 minutes. “That was a big difference,” says Chen. “Before microservices, for every small change we had to wait for an hour to deploy.”
Kubernetes has also improved reliability: “Our SRE team doesn’t have to keep logging into our server to check why the server is down, and then restart the server,” he says. “Kubernetes manages those things. It’s self-healing. If the microservice is down, it’s just restarting automatically without any downtime.”
Microservices have, as expected, enabled Nulab’s distributed team to work more efficiently. “We are now able to assign all of the responsibility and ownership for each microservice,” Chen says. “So now we don’t really have the code merge conflict anymore. We can all work smoothly. It’s saving a lot of time for us as well.”
To find out more about Nulab’s cloud native journey, read the full case study.