视界:ECMWF采用新的应用平台

目录

声明

本文正文内容翻译自ECMWF官网Newsletter Number 161 - Autumn 2019的文章《ECMWF adopts new application platform》,版权归原作者Andrew Brady所有。翻译底稿来自Google翻译。

正文

ECMWF开始使用部署在新IT平台上的应用程序提供部分Web和数据服务。 为了将ECMWF的数据中心迁移到博洛尼亚,我们正在转换多个应用程序,使其在Kubernetes管理的平台上作为Docker容器运行。 本文解释了什么是Docker/Kubernetes,为什么ECMWF正在越来越多地使用它们,以及这对用户意味着什么。

变更原因

从历史上讲,开发基于IT的应用程序意味着必须了解很多技术环境。 软件代码可以在有限的环境(例如笔记本电脑,台式机或工作站)中开发并完美运行,但是很难在其他环境中进行转换,维护和运行。 传统方法是基于共享代码和共享库开发服务和应用程序,这些代码和库部署在专用服务器上,以确保应用程序获得运行所需的IT环境和资源。 随着服务的增长,这种方法是不可持续的,并且无法在基础设施或工作量方面进行扩展。 在寻找替代方案时,ECMWF Web应用程序分析人员开始意识到两项新技术:Docker和Kubernetes。

什么是Docker和Kubernetes

Docker是无需了解有关基础架构的详细信息而运行软件的通用环境。 Docker使用操作系统虚拟化技术,在称为容器的可运行程序包中一致地开发和交付软件应用程序。 Kubernetes是用于管理在基础设施集群上运行的Docker应用程序的工具。 Kubernetes解决了由容器组成的扩展和业务服务的问题。 业界已广泛采用Docker和Kubernetes开发应用程序,支持加速开发,产品快速迭代更新和有效扩展。它们是开发的关键技术。 ECMWF已跟进这些技术,并意识到它们对我们的服务是有益的。

对于用户意味着什么

ECMWF当前已成功使用Docker和/或Kubernetes提供多种服务,包括Atlassian,EFAS-IS,GloFAS,RMDCN website,FTP,the Data Services Costing Application,Accounts和Nexus。 还计划在博洛尼亚的Kubernetes上部署其他服务,包括 www.ecmwf.int 网站,ecCharts和webapi。

ECMWF采用Docker和Kubernetes后,这些服务的用户应该看到的主要改进包括:

  • 缩短了修复/更新/改进的周转时间
  • 因为在开发过程中对应用程序进行了更全面的测试而提供的更加强大的服务

如图所示,因为开发可以相对独立地进行,使用 Docker/Kubernetes 还可以改善我们的工作流程。 另外,由于无需为业务运行而更改应用程序容器,因此有利于应用程序到生产的过渡。

持续集成工作流程示例。此处显示的工作流程使开发人员能够安全地隔离代码变更并在自己的桌面上测试自己的工作。当他们满意时,可以提交变更,这将触发生成Docker容器的工作流程,如果成功,将自动部署。然后,就可以作为通常可访问的测试服务使用。如果测试人员满意,则服务操作奇偶手动触发对生产环境的更新,可能会在计划任务中实现。从源代码变更到部署再到生产环境,整个工作流程都是可追溯的。

当前的设置

我们当前的Kubernetes群集由来自VMWARE VSPHERE和Network Attached Storage的虚拟机(VM)组成,以实现数据持久性。 通过使用Kubernetes添加新的VM和/或更大的VM来跨VM编排容器,可以透明地扩展基础架构。 在生产环境中,该群集默认情况下还提供许多可运行的功能,使用该群集可大大减少实施生产应用程序组件(例如Web服务器,应用程序服务器或数据库)所需的工作量。

重要的是要认识到Docker和Kubernetes并不是我们唯一使用的技术。 为了有效、稳健地部署应用程序,我们使用持续集成/持续部署(CI/CD)工具。 我们使用Atlassian BitbucketHarbourNexusAtlassian BAMBOO。 有了这些工具,我们便拥有了一个流水线系统,该系统可实现轻而易举的快速,稳健的开发,直至运营。 我们还集成了自动化功能,以测试并确保代码质量和基础平台的安全性。

如果您有兴趣了解更多信息,请随时与Andrew Brady(andrew.brady@ecmwf.int)联系。

背景

ECMWF 每个季度的 Newsletter 一般都会有一篇文章与信息化相关。 八月份的正好有一篇介绍我一直想引入到工作环境中却始终缺乏进展的容器技术。

我个人开发的一些服务性质的软件除了必须放到HPC上运行的应用外已全部部署在Docker中,但我始终没有涉及到如何使用k8s等工具有效地对容器进行管理,导致容器的更新和部署还是有些繁琐。 看了这篇文章,我后续也要抓紧时间研究下k8s,建立完整的工作流程,方便应用程序的部署。

不过,我们单位使用Docker容器面临一个挑战,信息中心提供的无论是物理工作站还是虚拟机都无法直接访问互联网,所以使用Docker比较费劲。 虽然可以自己构建Docker镜像服务,但需要的资源和人力在现有的框架下似乎都不是由我们单位一家可以解决的。

不过,正如我之前发朋友圈提到的,只要有了先进中心的经验,引入新技术就会更有说服力。 使用Docker/k8s部署应用,未来业务会成为我们单位的主流。