For fast innovation and to stay ahead of the competition, Talkdesk chooses Quarkus
Talkdesk, founded in 2011, is a fast growing company with a cloud Contact Center as a service (CCaaS) solution featuring increased productivity, higher cost savings and better customer experience. Their platform includes voice solutions, digital channels, workforce engagement management, reporting and analytics, AI and automation, and integrations to third-party software, like Twilio, Salesforce, Zendesk and many others.
Since the Talkdesk solution runs on multiple clouds, resource consumption is very important to them and to their customers because optimizing these has a concrete and direct effect on the platform running costs.
Talkdesk innovation strategy
Customers can spin up their own cloud contact center as a service platform. Talkdesk had been mostly a Ruby shop. When the customer base started to grow, the product architecture required a change to support higher concurrency, CPU intensive workloads, ecosystem support and better hireability. The company started to look into alternatives and decided to invest in technologies like Kotlin and Spring in 2017. In early 2019, with the desire to create new products and maintain their competitive edge, Talkdesk opened a new innovation office for research and development (R&D) in Coimbra, Portugal. The impetus of this new office was to create new solutions.
With this goal in mind, Talkdesk started analyzing technologies that they could use for this innovation work, like Spring Boot, Apache TomEE, Micronaut, DropWizard, Lagom, among others. The same week that they were evaluating frameworks, Quarkus was introduced to the market. The list of Quarkus extensions was very attractive to them due to their familiarity with the APIs, as well as the included functionality.
Why Quarkus over other technologies
After their evaluation, they chose Quarkus because of:
-
Microservices Support. An architectural approach based on microservices was their choice for the innovation work on which they had decided to embark.
-
GraalVM support. They needed to support R developers and liked its polyglot capabilities.
-
Smaller footprint. Quarkus lower memory consumption would result in less cloud costs.
-
Standards and best-of-breed framework support. The technology stack included in Quarkus was impressive and gave them all the functionality they needed to implement microservices.
-
Familiarity. The technology stack included in Quarkus included technologies Talkdesk developers were already familiar with.
-
Open source project. The community built around Quarkus was very active and prolific in the addition of functionality and support of existing capabilities.
-
Live coding. This made their developers more productive because it significantly reduced the time developers were spending building, deploying and troubleshooting code changes.
-
Out-of-the-box features, such as MicroProfile Config, Cross-origin resource sharing (CORS) filter, Flyway, etc.
-
Awesome documentation. Quarkus guides provided step-by-step documentation for every extension.
A polyglot solution within a single JVM
Talkdesk decided to implement 4 microservices in Quarkus as their first step of their innovation initiative. The technology stack was based on Quarkus extensions, namely Hibernate ORM, MicroProfile, and Camel, plus RabbitMQ, which they are looking to replace with Kafka in the near future.
The Talkdesk data scientists use R for data analysis and Python for natural language processing. Re-training their data scientists and migrating their work to Java was not feasible so they decided to wrap the services that used R and Python with MicroProfile. This allowed the Quarkus microservices to invoke these data analytics functions resulting in increased developer productivity and collaboration because the data scientists could continue doing R and Python and Java developers could continue doing Java. Troubleshooting the entire system was also improved since end-to-end debugging (from Java stack to R and Python) could be done directly from Quarkus.
The 4 Quakus microservices, which run in JVM mode, have been in production since the beginning of October 2019, and cover the following functionality:
-
Long running actions
-
Front-end capabilities
-
Templating and configuration - data processing
-
Integration with rest of company’s other services
The team that started the Quarkus microservices development was composed of 2 developers who spent two weeks ramping up on the technology. The learning curve was small because of the familiarity that Talkdesk developers had with the Quarkus extensions. The implementation of the first 4 Quarkus microservices, which was part of their innovation initiative, took a total of 6 months from kickoff to production: 3 months working on the prototype, followed by 3 months for internal release to production. They use a test-driven development approach and to this end they make use of the built-in Quarkus Tests capabilities.
The benefits
Quarkus has helped Talkdesk to streamline their development process with a familiar environment by providing a set of technologies well known to their developers, like Hibernate ORM, MicroProfile, Camel, Kubernetes, etc. It has also helped them with their test-driven development approach by leveraging Quarkus built-in testing harness. This combination resulted in a fast 2-week ramp-up to high developer productivity due a very small learning curve and existing expertise of the Quarkus extensions. In addition, the generation of a single small JAR with “just your code”, less memory consumption and faster startup times in JVM and native modes make Quarkus very interesting for the cloud and containers. All of this has allowed Talkdesk to maintain their continued competitive edge in the market.
As Roberto Cortez, Talkdesk Principal Architect, described “Quarkus has introduced a new paradigm that puts things upside down on the way things are run under the covers - supporting native, all reflection done at compile time and not runtime is just amazing!”.
In addition, their use of the Quarkus development mode, i.e. live coding, allows their developers to change code on the fly, making them more productive. Talkdesk tests most features via Quarkus Tests, which they find very valuable. Not only does the built-in Quarkus testing harness allows their developers to quickly and easily include tests into their code but it also encourages developers to follow Talkdesks’s established test-driven development best practices. Developers are free to use development mode but they are encouraged to write Quarkus Tests first.
Furthermore, their ability to wrap R scripts and Python with MicroProfile (MicroProfile is calling the GraalVM API to invoke R and Python) is giving them a competitive edge because they can write code fast and debug even faster since they have everything running on the same JVM. They are able to use MicroProfile JWT, MicroProfile Config, and MicroProfile Fault Tolerance, etc. across all microservices including the ones that call R and Python. They don’t need to use different security mechanisms for Python and R, for example. They use MicroProfile APIs as a way to standardize approaches to security, Fault Tolerance, Config, etc. across all microservices. And this benefit allows their data scientists to continue to use their favorite tools in R or Python to write their code.
The future
Talkdesk started their journey into Quarkus with just 2 developers but are now staffed up to 20 developers dedicated to the creation of new innovative microservices based on the Quarkus technology stack. They are currently developing 8 brand new microservices and their plan is to continue to create new ones.
They are currently running all microservices in JVM mode because some of the libraries that they use can only run in JVM mode. They plan to replace these libraries with others that are capable of running in native mode. Once they accomplish this, they will be able to run their Quarkus microservices in native mode.
Because their Quarkus microservices consume less memory and have fast startup times, they expect to see savings in cloud memory and compute resources.
At present, it’s in their tentative plans to first do an internal release of the new product based on Quarkus microservices and then select a few customers to try out the new solution. Finally, they plan to go GA with the product in the next 6 months (first calendar quarter of 2020).
For more information on Quarkus:
-
Quarkus website: http://quarkus.io
-
Quarkus GitHub project: https://github.com/quarkusio/quarkus
-
Quarkus Twitter: https://twitter.com/QuarkusIO
-
Quarkus chat: https://quarkusio.zulipchat.com/
-
Quarkus mailing list: https://groups.google.com/forum/#!forum/quarkus-dev