公司 Prowise 地点 荷兰布德尔 行业 教育科技

挑战

Prowise 是一家荷兰公司,生产在全球范围内使用的教育设备和软件。该公司基于 Linux 服务构建的基础设施在欧洲、澳大利亚和美国都设有多个可用区。“在过去的几年里,我们发展迅速,开始遇到版本控制和灵活扩展的问题,”高级 DevOps 工程师 Victor van den Bosch 说,“不仅是需求方面的扩展,还有部署多个产品的问题,这些产品都有自己的版本、自己的开发团队和他们试图解决的问题。我们希望能够将所有这些都放在同一个平台上,而不会遇到太多阻力。我们希望让我们的基础设施面向未来,并解决一些与仅运行普通 Linux 服务相关的问题。”

解决方案

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

影响

Prowise 的第一个基于 Web 的应用程序现在正在 Kubernetes 平台上进行 beta 测试,团队看到了快速、平稳部署带来的好处。“以前的部署方式需要半小时的准备工作和半小时的部署。而使用 Kubernetes,只需要几秒钟,”高级开发人员 Bart Haalstra 说。van den Bosch 补充说,“因此,我们已经从每季度发布一次更改为每月在生产环境中发布一次。我们几乎每小时都会进行部署,或者只要发现某个功能已准备好投入生产就会部署。以前,我们的发布大多是在非工作时间进行的,这样就不会影响我们的客户,因为我们对该流程的信心相对较低。Kubernetes 还使我们能够快速跟进错误,并在版本之间零停机的情况下对用户进行调整。对于某些错误,我们会在检测到后的几分钟内将代码修复程序推送到生产环境。”最近,该团队为内部应用程序启动了一个新的单点登录解决方案。“由于 Kubernetes 平台的基于资源的架构,我们能够在不到一天的时间内将该应用程序带入一个全新的生产环境,其中大部分时间用于在将已知的资源定义从暂存环境应用于新环境后进行测试,”van den Bosch 说。“在传统的虚拟机上,这可能需要一两天的时间,然后可能需要几周的时间来解决我们应用更新时在配置脚本中遇到的问题。”

如果您有一段时间没有去过学校,您可能会惊讶于如今在数字化连接的教室里看到的东西:触摸屏显示器、笔记本电脑、平板电脑、触摸桌等等。

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

近年来,随着该公司将其业务扩展到荷兰以外的地区,在欧洲、澳大利亚和美国创建了多个可用区,每个可用区最多有九个服务器,其基于 Linux 服务的架构难以跟上。“在过去的几年里,我们发展迅速,开始遇到版本控制和灵活扩展的问题,”高级 DevOps 工程师 Victor van den Bosch 说,他在 2017 年底被公司聘用,负责构建新的平台。

Prowise 的产品支持十种语言,因此问题不仅仅是需求方面的扩展,他还补充说,“还在于能够部署多个产品,这些产品都有自己的版本、自己的开发团队和他们试图解决的问题。我们希望能够将所有这些都放在同一个平台上,而不会遇到太多阻力。我们希望让我们的基础设施面向未来,并解决一些与仅运行普通 Linux 服务相关的问题。”

该公司在 Microsoft Azure Cloud 上的现有基础设施全部都是虚拟机,“这是一个非常传统的设置,”van den Bosch 说。“我们决定在我们的软件中加入一些功能,这些功能需要能够快速扩展,能够快速地在不同编程语言的不同版本上部署新的应用程序和版本。而且我们并不想麻烦地尝试将这些服务器保持在特定的状态。”

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

使用 Kubernetes 上市的时间非常短:该平台上的第一个基于 Web 的应用程序在几个月内就进入了 beta 测试阶段。这在很大程度上得益于 van den Bosch 决定使用 Azure 的托管 Kubernetes 服务 AKS。然后,团队必须弄清楚要保留哪些组件以及要替换哪些组件。像 New Relic 这样的监控工具被移除,“因为当您将其扩展到不同的可用区时,它们往往会变得非常昂贵,而且维护起来也很不方便,”他说。

Prowise 的 CI/CD 管道也进行了大量改进。“我们希望确保管道是自动化的并且易于使用,”他说。“我们为管道制定了很多设置和配置,并且从现在开始,只需要将这些脚本和配置应用于新项目即可。”

Prowise 的第一个基于 Web 的应用程序现在正在 Kubernetes 平台上进行 beta 测试,团队看到了快速、平稳部署带来的好处。“以前的部署方式需要半小时的准备工作和半小时的部署。而使用 Kubernetes,只需要几秒钟,”高级开发人员 Bart Haalstra 说。van den Bosch 补充说,“因此,我们已经从每季度发布一次更改为每月在生产环境中发布一次。我们几乎每小时都会进行部署,或者只要发现某个功能已准备好投入生产就会部署。以前,我们的发布大多是在非工作时间进行的,这样就不会影响我们的客户,因为我们对流程本身的信心相对较低。使用 Kubernetes,我们敢于在繁忙的一天中进行部署,并且非常有信心部署会成功。”

此外,van den Bosch 说,“Kubernetes 使我们能够快速跟进错误,并在版本之间零停机的情况下对用户进行调整。对于某些错误,我们会在检测到后的几分钟内将代码修复程序推送到生产环境。”

最近,该团队为内部应用程序启动了一个新的单点登录解决方案。“由于 Kubernetes 平台的基于资源的架构,我们能够在不到一天的时间内将该应用程序带入一个全新的生产环境,其中大部分时间用于在将已知的资源定义从暂存环境应用于新环境后进行测试,”van den Bosch 说。“在传统的虚拟机上,这可能需要一两天的时间,然后可能需要几周的时间来解决我们应用更新时在配置脚本中遇到的问题。”

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

范登·博世说,也许最重要的是,“Kubernetes 让我们能够真正考虑解决问题的最佳工具,并充分利用微服务架构。如果 Node.js 中有一个库擅长解决特定问题?那就用它。想要使用由第三方开发的、完全适合你的用例的成熟分析应用程序?那就运行它。在机器学习和人工智能算法方面进行尝试,但又厌倦了等待数天才能完成训练?只需几秒钟即可扩展它。有个固执的开发人员想使用一种无人知晓的编程语言?如果它在容器中运行,那就让他用。所有这些同时,你的运维团队/DevOps 团队都能安稳入睡。”

展望未来,Prowise 的所有新的 Web 开发、平台和 API 都将基于 Kubernetes。其中一个大型全新项目是面向教师和学生的平台,将于 9 月返校季推出。用户将能够登录并访问各种教育应用程序。随着最近收购软件公司 Oefenweb,Prowise 计划提供自适应软件,使教师能够准确了解学生的进步和薄弱点,并自动调整作业难度以适应个别学生。“我们将利用 Kubernetes 的强大功能来集成、补充和支持我们合并后的应用程序组合,并将我们的解决方案带入更多教室,”范登·博世说。

协作软件也是一个优先事项。借助单点登录软件,用户的设置和凭据将保存在云端,并可以在世界上的任何屏幕上使用。“我们真的在努力通过我们的硬件和软件提供集成解决方案,并尽可能方便用户在不同的地方使用和协作,”范登·博世说。并且,哈尔斯特拉说,“没有 Kubernetes,我们做不到这一点。”