专访 Gabe Monroy:云原生架构师需要做什么

  • 徐川

2017 年 12 月 20 日

话题:云计算架构Kubernetes

近一年多来,云原生以及 Kubernetes 越来越受到社区和业界重视,Kubernetes 更是成为了容器编排的事实标准,基于 Kubernetes 的云原生架构也被越来越多的人谈及,云原生到底是什么,需要做哪些事情?带着这些问题,InfoQ 记者采访了微软云原生方面的专家 Gabe Monroy。

受访嘉宾介绍:

Gabe Monroy 是微信 Azure 云容器技术的首席项目经理,其代表微软参加开源组织云原生计算基金会 CNCF。Gabe 曾是 Deis 公司的创始人与 CTO,Deis 公司于 2017 年被微软收购。作为 Docker 和 Kubernetes 的早期贡献者,Gabe 在容器技术方面有着丰富的经验,并经常在 PaaS、分布式系统和云原生架构方面提供建议。

InfoQ:请介绍一下 CNCF,您在里面负责什么工作?

Gabe:CNCF 的存在是为了推广专门为分布式系统而创建的计算范式而建立的组织,这种分布式系统拥有可伸缩的数以千计的自愈型节点。通过推广开源项目,帮助壮大云原生生态体系,我们希望让云原生技术能更加普及。

赋予用户更多能力一直是微软的核心任务,在这样任务的驱使下微软加入了 CNCF。我在 CNCF 委员会的角色主要是聚焦在监督和布道。

InfoQ:Cloud Native 现在有哪些最佳实践?

Gabe:云原生意味着运行具有以下能力的应用

a) 使用容器打包的 

b) 动态管理的 

c) 面向微服务的

最佳实践包括使用类似 Docker 和 Kubernetes 的技术。想要快速开始的话,微软的 AKS 服务提供了一个全面管理的 Kubernetes 体验,利用它你可以快速开始云原生系统管理的学习。

InfoQ:您认为云原生架构师需要什么样的能力?在云原生实践中有哪些重要的原则?

Gabe:云原生架构师是一个相对较新,并且定义仍在变化的一个角色。严格来说,云原生架构师主要需要在 IT 运维操作中分离关注点(SoC)。比如,分离硬件操作、系统操作、集群操作、以及应用的操作,并且在每个之间清晰定义“API 边界”。

几年前,Heroku 的 12 要素方法论描述了如何将应用操作从系统操作中分离开来,以加速应用交付。现在我们需要在它的基础上进一步发展,以适应现代技术和环境。比如,在状态持久化方面更少的约束,将密钥存储在卷中而不是环境变量里从而提升安全性。

InfoQ:对于某些传统行业来说,将现有应用重构为云原生很难,需要特定的行业解决方案,您如何看待这些行业的上云问题?

Gabe:旧有应用程序在上云的时候的确可能很有挑战性。幸运的是,我们现在看到了一个模式可以无缝的迁移,就是将现有的工作负载打包到容器里,然后运行在如微软 AKS 之类的 Kubernetes 服务里。虽然这样没有应用云原生风格中的微服务架构,但上云对这些应用依然有很多好处。

特别是,你可以让老旧、过时的硬件退役,同时享受容器编排带来的可靠性和可扩展性。比如,你的遗留工作负载现在可以自动的重新计划和重启你的应用,避免因硬件故障带来的损失。

InfoQ:为了实现云原生,云计算厂商如微软需要提供什么样的服务?

Gabe:微软的 AKS 和 ACR 及类似的基础设施解决方案对于实现云原生架构来说是关键的部分,但只有它们还有些不足。比如,大多数用户需要一个 DevOps 工具链来自动的将源代码交付到线上环境,包括源码控制管理、CI/CD、监控、日志聚合等。幸运的是对于这一块微软也提供了几个解决方案,包括软件如 Visual Studio 和 VSTS,以及开源的 CNCF 工具包,包含 Helm、Draft、Brigade 等。

InfoQ:基于 Kubernetes 的微服务架构看起来会是今后云原生架构的发展趋势,微软如何应对这个趋势?

Gabe:微软在 Kubernetes 上投资很大,包括招募 Kubernetes 的联合创始人 Brendan Burns,收购 Kubernetes 生态中的重要力量 Deis,最近还为 Kubernetes 发布了新产品如 Visual Studio 连接环境,通过这些举措可以帮助开发者在 Kubernetes 上构建微服务。微软相信到开发者中间去,而现在微软的很多开发者都在越来越多的使用 Kubernetes 构建微服务。

云计算架构Kubernetes