谐云 CTO 丁轶群:云原生落地重形更要重意

  • 江柳

2017 年 8 月 13 日

话题:DevOps语言 & 开发架构文化 & 方法AI容器

近年来,落地云原生成为企业数字化转型最重要的命题和手段,而对于 IT 部门来说,底层的 IaaS 和上层的 SaaS 并不能很方便地满足需求,随着容器技术的发展,很多技术驱动型的企业开始基于开源容器技术搭建内部 PaaS 平台,而业务驱动型的公司则开始关注 PaaS 和容器云服务商。

为了帮助开发者更加清晰的了解云原生与 PaaS 之间的关系,打开企业落地云服务的正确方式和思路。InfoQ 专访了谐云科技 CTO 丁轶群,就 PaaS 在企业转型云原生过程中的作用、谐云云平台的基本框架与落地实践、以及企业落地云原生需要考虑的关键事项等问题进行深入探讨,以下为专访内容。

InfoQ:云原生应用和传统架构的区别和优势是什么?为什么大家都希望成为“原生云”企业?

丁轶群:在云计算行业里有很多重意不重形的概念,“云”本身就是一个这样的概念,而 “云原生”也是。 

从“形”上讲,云原生是就是面向“云”的软件设计、开发、测试、运维、监控的一整套理念、原则、方法、工具。因此云原生的“形”包含(但不限于)微服务、容器技术、CI/CD、DevOps、12 要素应用等。我们不会因为某个应用运行在 Amazon 的 AWS 上或者某个私有虚拟化平台上就认为它是云原生应用,云原生与传统架构的区别并非是关于某项具体的技术或者工具,而主要在与云原生的“意”。

与传统架构相比,云原生的“意”强调应用的快速迭代、弹性伸缩、反脆弱。很多企业对云原生感兴趣的原因也正在于此,“云原生”企业相比依靠传统 IT 支撑平台的企业来说,会具备更高的业务敏捷性、更短的业务上市时间(Time-To-Market),更好的客户体验,以及更强的通过软件的弹性伸缩支撑业务快速增长的能力。

InfoQ:云原生和 PaaS 密不可分,您是如何理解云原生和 PaaS 之间的关系的,企业建立云原生应用,PaaS 在这其中起着什么样的作用?有人说 PaaS 是云原生落地的第一个触点,您对这个观点有什么看法?

丁轶群:根据近期某咨询公司对超过 900 名分布在全球 11 个国家的技术 / 业务高管的关于云原生采用情况的调研,PaaS 已经成为企业实施云原生战略的基础能力之一。相比面向基础设施的 IaaS 平台,PaaS 以应用为中心,除了对接各类虚拟化 / 物理基础设施完成资源池管理、资源动态申请释放之外,开发、测试、运维人员可以通过 PaaS 平台实现复杂应用环境的一键发布,构建类似苹果应用商店的”中间件 store”,实现 MySQL、Redis 等中间件的一键部署,很多 PaaS 平台还集成了微服务框架和 CI/CD 流水线的能力,以及应用上线、灰度升级、弹性伸缩、立体式监控功能。因此,PaaS 平台为企业提供了很多实施云原生战略的基础能力,可以为企业节省很多重复造轮子的时间。

关于 PaaS 是云原生落地第一个触点的观点,我认为这涉及到云原生落地步骤、路线图的问题。在帮助众多客户实践云原生战略的过程中,我们会针对客户现有问题和云原生的目标制定不同的路线图。针对在软件开发运维中流程、方法层面有较多缺陷的的企业,我们会把重点放在流程方法的改造、标准化方面,比如首先在一些试点项目中构建 CI/CD 流水线,在企业内部逐渐推广开发、测试流程的标准化、自动化。而把 PaaS 这类重工具的手段放在后期。正如我在面前所说的,云原生重意不重形,PaaS 并非总是云原生的第一触点。

InfoQ:谐云的 PaaS 云平台是以 Docker 容器为基础,结合 Kubernetes 容器编排的框架,谐云 PaaS 云平台的具体架构是什么样的?为什么会做这样的融合?

丁轶群:下图是谐云的 PaaS 云产品“观云台”的架构图:

从底层往上包括:

  • 混合基础设施对接层
  • 基础容器框架,包括容器运行时、容器 SDN 网络、容器分布式存储、镜像仓库、多租户管理等
  • 容器编排调度层
  • 微服务框架层
  • CI/CD,DevOps 工具链层
  • 弹性中间件层

会形成这样的架构主要是一下几方面的因素:

  • 首先,我们团队从 2011 年开始提供基于开源 PaaS 技术 Cloud Foundry 的产品与解决方案,算得上是国内 PaaS 行业的老兵,对于 PaaS 本身的价值和定位积累了一些经验和体会。
  • 其次,我们团队也是做内最早投入容器技术的团队,我们很早就认识到仅仅依靠容器运行时技术,就跟仅仅依靠虚拟机一样,不足支撑高效企业 IT 平台,因此我们很早在开源容器集群管理技术 Kubernetes 上进行大量投入,目前就为 Kubernetes 贡献的代码行数来说已经达到全球第五,全国第一的水平,做到真正掌控核心技术源头。另外我们也很早开始在编排技术之上的微服务框架、CI/CD、DevOps 等构建云原生关键能力的方面进行了产品研发,做到产品接地气,真正帮助用户解决“上云”的各项难题。
  • 再次,根据我们与各行各业客户的交流,我们发现客户对于容器、PaaS 这样的技术已经从最初的单纯技术好奇、狂热转换为当前的理性思考阶段。不再为了容器而容器,而是考虑如何基于新技术构建敏捷 IT,支撑上层业务的持续创新。因此我们团队将云原生作为企业的使命,以容器、Kubernetes 等开源技术为核心,提供包括微服务、CI/CD、DevOps 在内的产品和解决方案,帮助用户完成从旧 IT 到新 IT 的转型。

InfoQ: PaaS 在构建云原生应用方面还不是很完善,谐云新一代的 PaaS 在推进云原生的落地上做了那些努力?

丁轶群:PaaS 在经典的 IaaS-PaaS-SaaS 云计算服务模式中是相对较为年轻的一种,PaaS 技术本身也在不停的进化。正如我在《Docker 容器与容器云》一书中指出的那样,以 Kubernetes 为基础构建的新一代技术 PaaS 技术,克服了早期 PaaS 技术在对应用架构、开发、运维侵入性大、限制多的问题,将应用架构、开发、运维方面更高的自由度还给开发、运维人员。谐云科技正式采用了这条技术路线和产品理念来构建新一代的 PaaS 平台。

在具体功能上,谐云也做出很多努力,比如:

1. 在容器运行时的安全性方面,谐云投入了较多精力在 HyperContainer 这项全新的容器运行时技术上。相对于现在广泛采用的容器技术,HyperContainer 具备为每个容器提供单独的 OS 内核,在保持轻量级特性的同时从本质上提高了容器间的安全隔离性。为容器技术在安全敏感的金融等行业落地打下了基础。

2. 在微服务框架的支持上,我们基于 Kubernetes 本身的服务发现、负载均衡等微服务机制的基础上,遵循非侵入式非开发语言绑定的理念,增加了对熔断、分布式追踪、远程调用故障重试、流控、API 网关、应用运行时指标收集和分析的支持,并提供更加丰富的负载均衡策略。我们还增加了对常用微服务框架,如 Spring Cloud、Dubbo 的兼容

3. 在微服务的性能管理上,基于分布式追踪实现对微服务的性能监控,并在此基础上实现应用故障定位,性能瓶颈分析 、故障事先预警。

4.CI/CD 方面,我们提供灵活的流水线定义和执行引擎。实现移动端到业务后台各类型应用从代码检出、代码质量扫描、编译构建、镜像自动生成、镜像安全扫描、自动部署更新等一系列的软件生命周期全流程定义和自动化执行。

InfoQ:能否分享一个云原生的实际落地案例?

丁轶群:从去年开始,谐云科技与海信集团下属的聚好看科技股份有限公司签署合作协议。谐云科技基于“观云台”容器云产品,以“云平台 + 服务 + 咨询”精益合作理念,为聚好看在云原生时代“互联网 + 终端 + 服务 + 用户”的战略构建下一代 IT 支撑平台,为智能电视、智能手机、机顶盒等智能设备提供在线视频、在线购物、在线教育、在线游戏等互联网服务。

在此次合作中,我们首先针对客户产品线众多,各自的开发框架和语言不同,各自有独立的监控和日志管理机制等软件开发框架、流程上的问题提出了流程标准化的工作方向,基于谐云“观云台”产品,设计并研发了开发、构建、测试、部署自动化流水线,也就是 CI/CD,引入了自动化测试工具,在相对较新的在线购物产品线上试点并逐步推广到其他产品线上。

其次针对现有应用存在较多单体式应用,开发上线节奏慢,维护扩展难度高的问题,我们采取了以业务边界为拆分线索,从边缘功能开始逐渐向内拆分,逐渐优化的方法实现遗留系统渐进式微服务改造。需要注意的是,微服务拆分的方法有很多经验的成分在里面,虽说每个微服务都应只包含一个功能,但是功能也有大小粒度之分。另外如果当前的系统状态是一个大型复杂的系统,贸然拆成很多很散的部分也是不现实的。同时谐云“观云台”产品內建的非侵入式、语言无关的微服务框架,大大加速了整个微服务改造过程。

最后,基于谐云“观云台”容器云产品,构建开发测试环境与生产环境的资源编排与共享、实现各项微服务自动化运维和监控,包括:软件自动化上线、灰度发布、故障回滚、软件定义的负载均衡,弹性伸缩,应用配置管理,应用性能监控分析。 

InfoQ:企业在实施云原生战略过程中最需要注意的是什么?

丁轶群:云原生并非采购一堆工具之后就可以实现,我们在与客户一起实施云原生的过程中遇到过各种跑偏了的“工具控”。比如一方面在考虑快速迭代,一方面软件本身的编译打包耗时数小时,一方面使用了容器,但是依然远程进容器手动安装部署应用。这些都是对云原生“意”缺乏理解造成的,也是我们在为企业提供云原生咨询时重点关注。

企业在实施云原生战略时最需要注意的问题是要正确认识云原生的理念、原则、方法,工具。最能够帮助企业实现云原生的是引入云原生的理念、原则、方法,而工具是排在最后面的。企业需要意识到云原生的价值在于帮助企业实现由 IT 支撑的持续创新,通过不断迭代的软件为客户实现价值。企业需要考虑敏捷开发、微服务、12 要素应用、不可变基础设施等云原生原则、方法层面的内容如何与自身结合,尽快实现软件全生命周期的标准化和自动化。然后选择一个合适的云原生平台支持以上新架构、新流程的落地。

DevOps语言 & 开发架构文化 & 方法AI容器