公司 Prowise 地点 荷兰布德尔 (Budel, The Netherlands) 行业 教育科技 (Edtech)

挑战

Prowise 是一家生产教育设备和软件的荷兰公司,产品遍布全球。Prowise 的基础设施基于 Linux 服务,并在欧洲、澳大利亚和美国拥有多个可用区。“过去几年我们发展迅速,开始遇到版本控制和弹性伸缩的问题,”高级 DevOps 工程师 Victor van den Bosch 表示,“不仅是需求方面的伸缩,还有能够部署多个产品的问题,这些产品都有自己的版本、自己的开发团队,以及各自需要解决的问题。我们一直在寻求能够将所有这些产品轻松地放在同一个平台上的方法。我们希望让基础设施面向未来,同时也解决一些仅仅运行普通 Linux 服务所带来的问题。”

解决方案

Prowise 团队采用了容器化技术,投入时间改进其 CI/CD 流水线,并选择了 Microsoft Azure 的托管式 Kubernetes 服务 AKS 进行编排。“Kubernetes 很好地解决了网络等问题,其方式符合我们的业务模式,”van den Bosch 说道,“我们希望专注于我们的核心产品,即运行在基础设施上的软件,而不是基础设施本身。”

影响

随着首批基于 Web 的应用程序目前正在 Prowise 的 Kubernetes 平台上进行 beta 测试,团队正在看到快速、平滑部署的好处。“以前的部署方式需要半小时准备,半小时部署。使用 Kubernetes,只需几秒钟,”高级开发者 Bart Haalstra 说。van den Bosch 补充说,因此,“我们从季度发布变成了每月一次生产发布。我们几乎每小时都在部署,或者只要发现一个功能准备好就可以部署到生产环境;以前,我们的发布大多在非工作时间进行,以免影响客户,因为我们对该流程本身的信心相对较低。Kubernetes 还使我们能够快速跟进 Bug 并为用户实现调整,版本之间没有停机时间。对于某些 Bug,我们在检测到几分钟后就将代码修复推送到生产环境。”最近,团队为内部应用程序推出了新的单点登录解决方案。 van den Bosch 说:“由于 Kubernetes 平台的基于资源的架构,我们能够在不到一天的时间内将该应用程序迁移到全新的生产环境,大部分时间用于将 Staging 环境中已知的资源定义应用到新环境后进行测试。在传统的虚拟机上,这可能需要一到两天的时间,然后可能需要几周的时间来完善我们的 Provisioning 脚本,因为我们需要应用更新。”

如果你有一段时间没去过学校,你可能会惊讶于如今数字化互联教室里的景象:触摸屏显示器、笔记本电脑、平板电脑、触摸桌等。

作为该领域的领导者之一,荷兰公司 Prowise 提供集成的硬件和软件解决方案,帮助教育工作者创造更具吸引力的学习环境。

近年来,随着公司将其业务扩展到荷兰之外——在欧洲、澳大利亚和美国创建了多个可用区,每个可用区多达九台服务器——其基于 Linux 服务的旧基础设施难以跟上。“过去几年我们发展迅速,开始遇到版本控制和弹性伸缩的问题,”高级 DevOps 工程师 Victor van den Bosch 表示,他于 2017 年底被公司聘用以构建新平台。

Prowise 的产品支持十种语言,他补充说,问题不仅是需求方面的伸缩,“还在于能够部署多个产品,这些产品都有自己的版本、自己的开发团队以及各自要解决的问题。我们一直在寻求能够将所有这些产品轻松地放在同一个平台上的方法。我们希望让基础设施面向未来,同时也解决一些仅仅运行普通 Linux 服务所带来的问题。”

该公司在 Microsoft Azure 云上的现有基础设施都运行在虚拟机上,“这是一种相当传统的设置,”van den Bosch 说。“我们决定,我们的软件需要一些功能,这些功能要求能够快速伸缩,能够快速在不同版本的编程语言上部署新的应用程序和版本。我们实在不想费力去维护那些服务器的特定状态。”

在研究了可能的解决方案后,他选择了容器化和 Kubernetes 编排。“容器化是未来,”van den Bosch 说。“Kubernetes 很好地解决了网络等问题,其方式符合我们的业务模式。我们希望专注于我们的核心产品,即运行在基础设施上的软件,而不是基础设施本身。”此外,Prowise 团队喜欢没有供应商锁定的情况。“我们不想被限制在一个平台上,”他说。“我们尽量不接触那些非常专有的、不容易移植到其他供应商的产品。”

使用 Kubernetes 的上市时间非常短:平台上的首批基于 Web 的应用程序在几个月内就进入了 beta 测试阶段。这很大程度上得益于 van den Bosch 决定使用 Azure 的托管式 Kubernetes 服务 AKS。随后,团队需要确定哪些组件保留,哪些组件替换。他们放弃了 New Relic 等监控工具,“因为当扩展到不同的可用区时,它们往往变得非常昂贵,而且维护起来也很不容易,”他说。

Prowise 的 CI/CD 流水线也投入了大量精力进行改进。“我们希望确保流水线是自动化的且易于使用,”他说。“我们为流水线设计了大量的设置和配置,从现在开始只需将这些脚本和配置应用到新项目中即可。”

随着首批基于 Web 的应用程序目前正在 Prowise 的 Kubernetes 平台上进行 beta 测试,团队正在看到快速、平滑部署的好处。“以前的部署方式需要半小时准备,半小时部署。使用 Kubernetes,只需几秒钟,”高级开发者 Bart Haalstra 说。van den Bosch 补充说,因此,“我们从季度发布变成了每月一次生产发布。我们几乎每小时都在部署,或者只要发现一个功能准备好就可以部署到生产环境。以前,我们的发布大多在非工作时间进行,以免影响客户,因为我们对该流程本身的信心相对较低。使用 Kubernetes,我们敢于在繁忙的工作日中午进行部署,并且对部署成功抱有高度信心。”

此外,van den Bosch 表示:“Kubernetes 使我们能够快速跟进 Bug 并为用户实现调整,版本之间没有停机时间。对于某些 Bug,我们在检测到几分钟后就将代码修复推送到生产环境。”

最近,团队为内部应用程序推出了新的单点登录解决方案。van den Bosch 说:“由于 Kubernetes 平台的基于资源的架构,我们能够在不到一天的时间内将该应用程序迁移到全新的生产环境,大部分时间用于将 Staging 环境中已知的资源定义应用到新环境后进行测试。在传统的虚拟机上,这可能需要一到两天的时间,然后可能需要几周的时间来完善我们的 Provisioning 脚本,因为我们需要应用更新。”

遗留应用程序也被迁移到 Kubernetes。不久前,团队需要设置一个基于 Java 的应用程序来编译和运行前端。van den Bosch 说:“在传统的虚拟机上,需要相当长的时间来设置并保持其更新,更不用说后续的维护了。”相反,容器化并将其运行在 Kubernetes 上只用了不到半天。“这容易得多,而且我们也节省了成本,因为我们不必专门为此启动新的虚拟机。”

van den Bosch 说,也许最重要的是:“Kubernetes 让我们能够真正为问题考虑最佳工具,并充分利用微服务架构。有一个 Node.js 库非常擅长解决某个问题?使用它。想使用第三方开发的、非常适合你用例的成熟分析应用程序?运行它。正在研究机器学习和 AI 算法,但厌倦了等待数天才能完成训练?只需几秒钟即可进行伸缩。有个固执的开发者想使用一种没人听说过的编程语言?只要它能在容器中运行,就让他用吧。这一切都能在你的运营团队/DevOps 团队安心睡觉时完成。”

展望未来,Prowise 的所有新的 Web 开发、平台和 API 都将运行在 Kubernetes 上。其中一个大型的 Greenfield 项目是一个面向教师和学生的平台,将于九月的返校季推出。用户将能够登录并访问各种各样的教育应用程序。通过最近对软件公司 Oefenweb 的收购,Prowise 计划提供自适应软件,让教师能够准确了解学生的进步和薄弱环节,并自动调整作业难度以适应个体学生。van den Bosch 说:“我们将利用 Kubernetes 的强大能力来整合、补充和支持我们的联合应用程序组合,并将我们的解决方案带到更多教室。”

协作软件也是优先事项。通过单点登录软件,用户的设置和凭据保存在云端,可以在世界各地的任何屏幕上使用。“我们真正致力于提供硬件和软件集成解决方案,并让用户尽可能轻松地在不同地点使用和协作,”van den Bosch 说。Haalstra 补充说,“没有 Kubernetes,我们做不到这一点。”