为了快速创新并保持竞争优势,Talkdesk 选择 Quarkus

Talkdesk 成立于 2011 年,是一家快速发展的公司,提供云联络中心即服务 (CCaaS) 解决方案,该解决方案具有更高的生产力、更高的成本节约和更好的客户体验。 他们的平台包括语音解决方案、数字渠道、劳动力参与管理、报告和分析、人工智能和自动化以及与第三方软件(如 Twilio、Salesforce、Zendesk 等)的集成。

由于 Talkdesk 解决方案在多个云上运行,因此资源消耗对他们及其客户非常重要,因为优化这些资源会对平台的运行成本产生具体而直接的影响。

Talkdesk 创新战略

客户可以启动他们自己的云联络中心即服务平台。 Talkdesk 主要是一家 Ruby 公司。 当客户群开始增长时,产品架构需要进行更改以支持更高的并发性、CPU 密集型工作负载、生态系统支持和更好的可招聘性。 该公司开始研究替代方案,并决定在 2017 年投资 Kotlin 和 Spring 等技术。2019 年初,为了创造新产品并保持其竞争优势,Talkdesk 在葡萄牙科英布拉开设了一个新的创新办公室,用于研究和开发 (R&D)。 这个新办公室的动力是创造新的解决方案。

考虑到这个目标,Talkdesk 开始分析他们可以用于这项创新工作的技术,例如 Spring Boot、Apache TomEE、Micronaut、DropWizard、Lagom 等。 在他们评估框架的同一周,Quarkus 被引入市场。 Quarkus 扩展列表对他们非常有吸引力,因为他们熟悉 API,以及包含的功能。

为什么选择 Quarkus 而不是其他技术

经过评估后,他们选择了 Quarkus,因为

  • 微服务支持。 基于微服务的架构方法是他们为已决定进行的创新工作所做的选择。

  • GraalVM 支持。 他们需要支持 R 开发人员,并且喜欢它的多语言功能。

  • 更小的占用空间。 Quarkus 更低的内存消耗将降低云成本。

  • 标准和最佳框架支持。 Quarkus 中包含的技术堆栈令人印象深刻,并为他们提供了实施微服务所需的所有功能。

  • 熟悉度。 Quarkus 中包含的技术堆栈包括 Talkdesk 开发人员已经熟悉的技术。

  • 开源项目。 围绕 Quarkus 构建的社区非常活跃,并在添加功能和支持现有功能方面非常活跃。

  • 实时编码。 这使得他们的开发人员效率更高,因为它大大减少了开发人员构建、部署和解决代码更改问题所花费的时间。

  • 开箱即用的功能,例如 MicroProfile Config、跨域资源共享 (CORS) 过滤器、Flyway 等。

  • 出色的文档。 Quarkus 指南为每个扩展提供了逐步文档。

单个 JVM 中的多语言解决方案

Talkdesk 决定在 Quarkus 中实现 4 个微服务,作为其创新计划的第一步。 该技术堆栈基于 Quarkus 扩展,即 Hibernate ORM、MicroProfile 和 Camel,以及 RabbitMQ,他们希望在不久的将来用 Kafka 替换它。

Talkdesk 数据科学家使用 R 进行数据分析,使用 Python 进行自然语言处理。 重新培训他们的数据科学家并将他们的工作迁移到 Java 是不可行的,因此他们决定使用 MicroProfile 包装使用 R 和 Python 的服务。 这使得 Quarkus 微服务能够调用这些数据分析功能,从而提高了开发人员的生产力和协作,因为数据科学家可以继续使用 R 和 Python,而 Java 开发人员可以继续使用 Java。 整个系统的故障排除也得到了改进,因为可以从 Quarkus 直接完成端到端调试(从 Java 堆栈到 R 和 Python)。

自 2019 年 10 月初以来,4 个在 JVM 模式下运行的 Quakus 微服务已投入生产,涵盖以下功能

  • 长时间运行的操作

  • 前端功能

  • 模板和配置 - 数据处理

  • 与公司其他服务的集成

启动 Quarkus 微服务开发的团队由 2 名开发人员组成,他们花费了两周的时间来熟悉该技术。 由于 Talkdesk 开发人员熟悉 Quarkus 扩展,因此学习曲线很小。 从启动到生产,前 4 个 Quarkus 微服务的实施(这是他们的创新计划的一部分)总共花费了 6 个月:3 个月用于原型设计,然后 3 个月用于内部发布到生产。 他们使用测试驱动的开发方法,为此,他们利用了内置的 Quarkus 测试功能。

好处

Quarkus 通过提供一组开发人员熟知的技术(如 Hibernate ORM、MicroProfile、Camel、Kubernetes 等)帮助 Talkdesk 精简了他们的开发流程,并提供了一个熟悉的环境。 它还通过利用 Quarkus 内置的测试工具帮助他们采用测试驱动的开发方法。 这种组合使开发人员能够以 2 周的快速速度提高生产力,这归功于非常小的学习曲线和 Quarkus 扩展的现有专业知识。 此外,在 JVM 和本机模式下生成带有“just your code”的单个小型 JAR、更少的内存消耗和更快的启动时间,使 Quarkus 对于云和容器非常有趣。 所有这些都使 Talkdesk 能够在市场上保持其持续的竞争优势。

正如 Talkdesk 首席架构师 Roberto Cortez 所描述的那样“Quarkus 引入了一种新范例,它颠覆了底层运行方式 - 支持本机,所有反射都在编译时完成,而不是运行时完成,这太棒了!”

此外,他们使用 Quarkus 开发模式,即实时编码,允许他们的开发人员动态更改代码,从而提高他们的生产力。 Talkdesk 通过 Quarkus 测试测试了大多数功能,他们发现这非常有价值。 内置的 Quarkus 测试工具不仅允许他们的开发人员快速轻松地将测试包含到他们的代码中,而且还鼓励开发人员遵循 Talkdesks 建立的测试驱动的开发最佳实践。 开发人员可以自由使用开发模式,但鼓励他们首先编写 Quarkus 测试。

此外,他们使用 MicroProfile 包装 R 脚本和 Python 的能力(MicroProfile 正在调用 GraalVM API 来调用 R 和 Python)正在为他们带来竞争优势,因为他们可以快速编写代码并且调试速度更快,因为它们的所有内容都在同一个 JVM 上运行。 他们可以在所有微服务(包括调用 R 和 Python 的微服务)中使用 MicroProfile JWT、MicroProfile Config 和 MicroProfile Fault Tolerance 等。 例如,他们不需要为 Python 和 R 使用不同的安全机制。 他们使用 MicroProfile API 作为标准化安全、容错、配置等方法的一种方式。 并且此优势允许他们的数据科学家继续使用他们最喜欢的 R 或 Python 工具来编写代码。

未来

Talkdesk 最初只有 2 名开发人员开始使用 Quarkus,但现在已配备 20 名开发人员,专门致力于创建基于 Quarkus 技术堆栈的创新微服务。 他们目前正在开发 8 个全新的微服务,他们的计划是继续创建新的微服务。

他们目前在 JVM 模式下运行所有微服务,因为他们使用的一些库只能在 JVM 模式下运行。 他们计划用其他能够在本机模式下运行的库替换这些库。 一旦他们完成了这项工作,他们将能够在本机模式下运行他们的 Quarkus 微服务。

由于他们的 Quarkus 微服务消耗更少的内存并且启动时间更快,因此他们希望看到云内存和计算资源的节省。

目前,他们的初步计划是首先基于 Quarkus 微服务内部发布新产品,然后选择一些客户来试用新解决方案。 最后,他们计划在未来 6 个月(2020 年第一季度)全面发布该产品。

有关 Quarkus 的更多信息