挑战
Prowise 是一家荷兰公司,生产用于全球的教育设备和软件。该公司基础设施基于 Linux 服务,在欧洲、澳大利亚和美国拥有多个可用区域。“过去几年,我们发展迅速,并且开始遇到版本控制和灵活扩展方面的问题,”高级 DevOps 工程师 Victor van den Bosch 表示,“不仅是扩展需求,还包括能够部署多个产品,这些产品都有自己的版本、自己的开发团队以及各自需要解决的问题。我们的目标是在同一个平台上部署所有这些内容,而不会遇到太多阻力。我们希望让基础设施具有未来可扩展性,并解决与运行普通 Linux 服务相关的某些问题。”
解决方案
Prowise 团队采用了容器化,花时间改进其 CI/CD 管道,并选择了微软 Azure 的托管 Kubernetes 服务 AKS 用于编排。“Kubernetes 在网络方面做得很好,符合我们的业务模式,”van den Bosch 表示。“我们希望专注于我们的核心产品,也就是运行在它上面的软件,而不是基础设施本身。”
影响
Prowise 的第一个基于 Web 的应用程序现在正在其 Kubernetes 平台上进行测试版运行,该团队正在看到快速、平滑部署带来的好处。“以前,部署需要半小时的准备时间和半小时的部署时间。使用 Kubernetes,只需要几秒钟,”高级开发人员 Bart Haalstra 表示。van den Bosch 补充道,“因此,我们的发布周期从每季度一次变成了每月一次。我们几乎每小时都在部署,或者只是在我们发现某个功能准备投入生产时。以前,我们的发布主要在非工作时间进行,这样不会影响我们的客户,因为我们对该流程的信心相对较低。Kubernetes 还使我们能够快速跟进错误,并在版本之间以零停机时间的方式为用户实施调整。对于某些错误,我们在检测到错误后几分钟内就将代码修复推送到生产环境。”最近,该团队推出了一种新的单点登录解决方案,用于内部应用程序。“由于 Kubernetes 平台的基于资源的架构,我们能够在不到一天的时间内将该应用程序引入全新的生产环境,其中大部分时间用于在将已知资源定义从暂存环境应用到新环境后进行测试,”van den Bosch 表示。“在传统虚拟机上,这可能需要一两天时间,然后可能还需要几周时间才能在应用更新时解决我们的配置脚本中的问题。”
Prowise 是该领域的领导者之一,是一家荷兰公司,提供硬件和软件的集成解决方案,帮助教育工作者创造更具吸引力的学习环境。
近年来,该公司将业务扩展到荷兰以外,在欧洲、澳大利亚和美国创建了多个可用区域,每个区域多达 9 台服务器,其基于 Linux 服务的基础设施难以跟上。 “过去几年,我们发展迅速,并且开始遇到版本控制和灵活扩展方面的问题,”高级 DevOps 工程师 Victor van den Bosch 表示,他于 2017 年底加入该公司,负责构建一个新平台。
Prowise 的产品支持 10 种语言,因此问题不仅仅是扩展需求,他补充道,“还包括能够部署多个产品,这些产品都有自己的版本、自己的开发团队以及各自需要解决的问题。我们的目标是在同一个平台上部署所有这些内容,而不会遇到太多阻力。我们希望让基础设施具有未来可扩展性,并解决与运行普通 Linux 服务相关的某些问题。”
该公司现有的微软 Azure 云基础设施都在虚拟机上,“这是一个相当传统的设置,”van den Bosch 表示。“我们决定在我们的软件中需要一些功能,这些功能需要能够快速扩展,能够快速部署不同版本不同编程语言的新应用程序和版本。而且我们并不想费心尝试将这些服务器保持在特定状态。”
在研究了可能的解决方案后,他选择了容器化和 Kubernetes 编排。“容器化是未来,”van den Bosch 表示。“Kubernetes 在网络方面做得很好,符合我们的业务模式。我们希望专注于我们的核心产品,也就是运行在它上面的软件,而不是基础设施本身。”此外,Prowise 团队喜欢它没有供应商锁定。“我们不想局限于一个平台,”他表示。“我们尽量避免接触那些非常专有且无法轻松移植到其他供应商的产品。”
使用 Kubernetes 的上市时间非常短:该平台上的第一个基于 Web 的应用程序在几个月内就进入了测试版。这主要归功于 van den Bosch 决定使用 Azure 的托管 Kubernetes 服务 AKS。然后,该团队必须确定哪些组件需要保留,哪些组件需要替换。像 New Relic 这样的监控工具被淘汰了,“因为当你在不同的可用区域进行扩展时,它们往往会变得非常昂贵,而且维护起来也不方便,”他表示。
Prowise 的 CI/CD 管道也进行了大量改进。“我们希望确保管道是自动化的,易于使用,”他表示。“我们已经为管道配置了许多设置和配置,从现在开始,只需将这些脚本和配置应用到新项目即可。”
随着其第一个基于 Web 的应用程序现在正在 Prowise 的 Kubernetes 平台上进行测试版运行,该团队正在看到快速、平滑部署带来的好处。“以前,部署需要半小时的准备时间和半小时的部署时间。使用 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 的所有新网站开发、平台和 API 将基于 Kubernetes。其中一个大型绿地项目是面向教师和学生的平台,计划在 9 月份开学季推出。用户将能够登录并访问各种教育应用程序。通过最近收购软件公司 Oefenweb,Prowise 计划提供自适应软件,使教师能够准确了解学生的学习进度和薄弱环节,并自动调整作业难度以适应每个学生的水平。“我们将利用 Kubernetes 的强大功能来整合、补充和支持我们的联合应用程序组合,并将我们的解决方案推广到更多课堂,”van den Bosch 说。
协作软件也是优先事项。通过单点登录软件,用户设置和凭据将保存在云端,并可在全球任何屏幕上使用。“我们真正努力的是将硬件和软件整合在一起,为用户提供一体化解决方案,并尽可能方便地让他们从不同地点使用和协作,”van den Bosch 说。Haalstra 也表示,“没有 Kubernetes,我们无法实现这一点。”