挑战
Prowise 是一家生产教育设备和软件的荷兰公司,其产品在全球范围内使用。该公司原有基于 Linux 服务的架构,在欧洲、澳大利亚和美国设有多个可用区。“过去几年我们发展迅速,但开始遇到版本管理和灵活扩展的问题,”高级 DevOps 工程师 Victor van den Bosch 表示,“这不仅是需求方面的扩展,还包括部署多个产品,这些产品都有自己的版本、自己的开发团队,以及他们各自正在解决的问题。我们希望能够将所有这些都放在同一个平台上,而不会遇到太多阻力。我们希望让基础设施面向未来,并解决仅仅运行一个普通 Linux 服务所带来的一些问题。”
解决方案
Prowise 团队采用了容器化技术,投入时间改进其 CI/CD 管道,并选择了 Microsoft Azure 的托管 Kubernetes 服务 AKS 进行编排。“Kubernetes 很好地解决了网络等问题,其方式符合我们的商业模式,”van den Bosch 说,“我们希望专注于核心产品,也就是运行在基础设施上的软件,而不是基础设施本身。”
影响
Prowise 的 Kubernetes 平台上首批基于 Web 的应用程序现已进入 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 的 Kubernetes 平台上首批基于 Web 的应用程序现已进入 Beta 测试阶段,团队正在体验快速、流畅部署带来的好处。“以前的部署方式需要半小时的准备时间和半小时的部署时间。有了 Kubernetes,只需几秒钟。”高级开发人员 Bart Haalstra 说。因此,van den Bosch 补充道:“我们已经从每季度发布一次变为每月发布一次。我们基本上每小时都会部署,或者只要发现某个功能已准备好投入生产就会部署。以前,我们的发布大多在非工作时间进行,以免影响客户,因为我们对流程本身的信心相对较低。有了 Kubernetes,我们敢于在繁忙的工作日部署,并且对部署成功充满信心。”
此外,van den Bosch 说,“Kubernetes 使我们能够快速响应错误,并为用户实施调整,版本之间实现零停机。对于某些错误,我们甚至在检测到后几分钟内就将代码修复推送到生产环境。”
最近,团队为内部应用程序推出了一项新的单点登录解决方案。“得益于 Kubernetes 平台基于资源的架构,我们能够在不到一天的时间内将该应用程序引入一个全新的生产环境,其中大部分时间用于在将已知资源定义从暂存环境应用到新环境后进行测试。”van den Bosch 说,“在传统的虚拟机上,这可能需要一两天,然后还需要几周时间来解决我们在应用更新时配置脚本中的问题。”
旧版应用程序也在向 Kubernetes 迁移。不久前,团队需要设置一个基于 Java 的应用程序来编译和运行前端。“在传统的虚拟机上,设置和保持更新需要相当长的时间,更不用说日后的维护了,”van den Bosch 说。相反,容器化并在 Kubernetes 上运行它用了不到半天的时间。“这容易得多,我们也节省了成本,因为我们不必为此专门启动新的虚拟机。”
van den Bosch 说,也许最重要的是,“Kubernetes 让我们能够真正考虑解决问题的最佳工具,并充分利用微服务架构。有一个 Node.js 库非常擅长解决某个特定问题?使用它。想要拥有由第三方开发、完全适合您用例的成熟分析应用程序吗?运行它。正在涉足机器学习和人工智能算法,但厌倦了等待数天才能完成训练?只需几秒钟即可扩展它。有一位固执的开发人员想要使用一种闻所未闻的编程语言?让他用,当然前提是它能在容器中运行。所有这些,您的运营团队/DevOps 都能在晚上睡个好觉。”
展望未来,Prowise 的所有新 Web 开发、平台和 API 都将基于 Kubernetes。一个重要的新建项目是针对教师和学生的平台,该平台将于 9 月返校季启动。用户将能够登录并访问各种教育应用程序。通过最近收购软件公司 Oefenweb,Prowise 计划提供自适应软件,让教师能够准确了解学生的进步和薄弱点,并自动调整作业难度以适应个别学生。van den Bosch 说:“我们将利用 Kubernetes 的强大功能来整合、补充和支持我们的组合应用程序产品组合,并将我们的解决方案带到更多教室。”
协作软件也是一个优先事项。通过单点登录软件,用户的设置和凭据都保存在云端,可以在世界任何屏幕上使用。van den Bosch 说:“我们正在努力提供硬件和软件一体化解决方案,让用户尽可能方便地使用和协作。”Haalstra 补充道:“没有 Kubernetes,我们做不到这一点。”