When online training platform, CBT Nuggets, was looking to scale up their product offering, they opted to transform their monolithic application and use microservices to help them reach their goals. The move helped them to grow the features of their platform and to tap into markets such as the enterprise in ways they had not before.
Sean Sullivan, CTO of CBT Nuggets, joined Michael Hahn, Chief Operating Officer of Tiempo Development , and Angel Almada, Director of Software Delivery of Tiempo Development in a Nearshore Americas webinar on April 3 to discuss deploying microservices. The webinar was hosted by Nearshore Americas’ managing director Kirk Laughlin.
Hahn described microservices as “a very flexible development environment that allows you to take features and develop them independently of one another and get them deployed independently of one another, so you can piece them together to make a large-scale product.” This allows you to leverage multiple programming languages and multiple persistence layers (also called polyglot programming) to get you to your end goal.
“This kind of deployment and development allows you to generate revenue quicker. You can develop and release every two weeks, every month, every day in some instances,” he said.
From Physical Product to Online Subscription: Managing Legacy Systems
CBT Nuggets was initially established as a physical product sold on eBay to tackle demand for Novell Netware and Windows NT training. As the business grew and diversified, it moved to a purely online subscription-based model in 2012, but was still grappling with legacy systems designed for a physical product.
“Our product was a monolithic application built wholly on .Net with a very large database. There is a lot of value in that and our business has survived quite healthily for many years using that system, but we were looking at our growth, and microservices could help us deliver on that,” Sullivan said.
Sullivan explained that the main drivers were scalability, team growth, and technology selection. “To scale a monolith can be quite expensive and require a lot of horsepower when you are looking at a lot of concurrent sessions and threads accessing the same resources,” he said. “Microservices could help us tackle that.”
CBT Nuggets had around a dozen developers at the start of the microservices migration, but knew that they wanted to double, triple, quadruple the number of developers to tackle the desired growth. “With a monolithic application, you have to consider the cognitive overhead of working in that system. If you touch code in one place, how is that going to impact another system? Microservices also gave us the ability to deploy frequently and often.”
Quarantining Features for Better Development
For the enterprise market that was a core target for CBT Nuggets, the reporting aspect of their product is quite valuable in that those spending money to train a team really want to receive some feedback on what they are training on and how they are benefitting from it. CBT Nuggets wanted to work on the reporting features but without disrupting the rest of the application.
“Using that microservices approach, we were able to ‘quarantine’ the reporting system and work on it so it was not affecting the rest of the platform development. Then as we could start to derive value from what we were doing there, we could hook it into the product,” Sullivan said.
Technology selection was another driver. “.Net served us quite well, but there were other things that we knew we wanted to do and other technologies wanted to take advantage of; microservices could help us do that,” Sullivan added.
Knowing where to start is key, which is why the webinar panel stressed the need to identify the pain points and determine what to decouple and when. CBT Nuggets began with the authentication and authorization system because they knew this was a critical piece that had to be calibrated correctly to the way they wanted to build their future systems. They also focused on digital rights management and the licensing of their subscription, and started to break those out and evolve those in a totally different trajectory than the rest of the core business systems that were already well-established.
“One way you can do this is using a Strangler Pattern. In this, you don’t have to wholly cut off the systems that are within the monolith, but you build these ancillary systems, that are starting to starve the oxygen so they no longer have the value they once had, so you start to tease those out,” Sullivan said.
CBT Nuggets chose Tiempo Development as their nearshore partner to help them scale out their team and found the time zone and proximity as well as the cultural affinity of the nearshore an attractive option. Sullivan explained: “As we started to scale up those teams, we really started to see it become evident that we needed more senior leadership with Tiempo. And that’s really when the architecture position came into light with us in that partnership. We need[ed] people in those teams on the ground so that they can make decisions in the moment, keep us moving faster. We don’t want to create bottlenecks. We want to create more autonomy in these teams, and with Tiempo as a partner, we really found that possible.”
Almada stressed the importance of the cultural affinity between the two companies as core to getting microservices right. “I’m talking about from the way we engage with our employees up until the way we execute in our operations with the coding standards and all that. Once we have that affinity and in a mature Agile based software development process, everything else is very similar to any other challenge of having a distributive team within the US,” he said.
He said that communication is often one of the main challenges. “One of the easiest ways to solve these challenges is to have a product representative in your partner, in this case Tiempo, and that helps to translate those initiatives into an actionable backlog for the teams, and [it also means] being on the same page about the practices on product management, such as having robust acceptance criteria.”
Hahn cautioned that microservices is not right for every business and it requires investment. “You need to think about whether your customers will see a benefit from this, what are the performance and feature benefits and are there any competitive benefits to using microservices instead of a monolith.”