写点什么

说说云原生落地面临的难点与坑点

  • 2020-03-17
  • 本文字数:3768 字

    阅读完需:约 12 分钟

说说云原生落地面临的难点与坑点

云原生概念在近两年十分火爆,多个互联网一线大厂争相落地 K8s、微服务、Service Mesh 等技术,涌现出一大批值得参考的优秀实践案例。但在落地云原生的道路上,其实暗藏着诸多陷阱与障碍。如何识别发现并规避这些难与坑?InfoQ 记者近日采访了 Mobvista 技术 VP 兼首席架构师蔡超老师,他也是 QCon 全球软件开发大会(北京站)2020“云原生技术应用”专题的出品人。


云计算平台带来了 IT 基础设施巨大变革,而每一次 IT 基础设施的变革都会促使开发人员去思考能够充分发挥新平台优势的软件设计和开发方法。“云原生”就是一种可以让我们充分利用云计算模式的优点来构建和运行应用的方法。


自 2013 年云原生的概念首次被提出以来,其范围不断扩大,内容不断充实,云原生的理念正影响着我们设计、实现、部署和运维应用的方式。


目前,微服务及容器化技术已在云端成为标配。Service Mesh 技术也日趋成熟,并在不同领域的大规模系统中得到了实践,DevOps 的文化也伴随着相关云原生技术发展得以落地,SRE(Site Reliability Engineering)的实践推动了 Kubernetes operator 应用的爆发。另一方面,开发人员在拥抱容器和云原生的同事,也面临着文化、安全性、复杂性和监控等方面的挑战。根据康威定律,开发团队的构成也正发生着与云原生相应的变革,Amazon 的 two pizza team 组织结构已为更多的组织所采用。可以说,云原生不仅改变了技术,也改变了文化。


对传统开发团队来说,无论是构建新的云原生系统,还是将遗留系统迁移到云原生都是一件充满挑战的事。而在落地云原生的道路上,还有着大大小小的陷阱,它们是什么?如何规避?带着对诸多疑问,我们采访了 Mobvista 技术 VP 兼首席架构师蔡超,他是云原生技术应用落地的亲历者,多届 QCon 人气演讲嘉宾,也是 QCon 北京 2020“云原生技术应用”专题的出品人。


InfoQ:您是怎么接触到云原生的?在您看来,云原生是什么?


蔡超:在加入 Mobvista 之前,我在 Amazon 工作了七年。Amazon 可以说是云计算平台的先驱,同时也是很多云原生相关理念的早期实践者,例如:微服务,DevOps 等。实际上,这些理念在 Amazon 甚至诞生在云计算之前。


简单来说,”云原生“是一种充分利用云计算模式的优点来构建和运行应用的理念和方法。


InfoQ:云原生有哪些关键技术?它们分别有什么价值?


蔡超:其实,谈到云原生的关键技术,我们可以从云原生技术的定义入手。2018 年 CNCF 对于云原生技术的定义如下:“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。”


(英文原文:Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.


These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.——from CNCF)


其中提及的主要技术包括了容器,服务网格,微服务,不可变基础设施和声明式 API。其实,一一说明每一项技术的价值需要巨大的篇幅,这里就不展开了,我认为这些云原生相关技术——


  • 使得大规模系统(涉及大量开发人员,大量基础设施)可以持续快速发布。

  • 有效利用云计算基础设施的特点,让服务可以按需快速伸缩。

  • 提高系统的弹性,从而获得高的可用性。


同时,这些技术也使得 DevOps 等能够更容易的落地。


InfoQ:对很多技术来说,概念普及并不难,难的是落地,那么云原生的落地面临着哪些难点?


蔡超:目前,根据我个人的实践,从大的方面看主要有以下三个难点:


遗留系统的迁移,目前大量的企业仍然采用传统 IDC 做为基础设施,为了充分发挥云平台的优势系统往往需要进行重构,如:微服务化,整合云端后台服务。对大规模系统而言,迁移不可能一步完成,整个迁移过程会较为漫长,在过程中系统是处在一种混合状态,如:既有运行在容器中的微服务,也有在容器外运行的,甚至是运行在传统非云基础设施上的服务。所以,这种混合状态会对开发和维护提出更高的挑战,新迁移系统和遗留系统的互通,分布的迁移过程都要通过精心的设计。


数据迁移和安全存储,我们需要考虑到数据如何迁入云平台,或仍需本地存储,并且如何保证数据在公有云存储和访问的安全性,本地存储时还需考虑数据传输的成本及传输的安全性。


开发人员的思想转变,目前大多数的架构都是成长与云时代之前,学习的经典架构模式知识也都来自于那个旧时代。对于开发人员,云原生的技术及理念都需要在实践中逐渐学习,传统基础设施及开发流程会成为引入新技术及理念的很大阻力,在迁移过程中开发人员处于新旧并存混合环境中。


InfoQ:您认为,企业为什么需要云原生?对于没有采用云技术的企业,是否也有可以借鉴的思路?


蔡超:因为云计算平台所具有的按需伸缩,服务化基础设施等特性,有效的帮助企业实现快速创新,云平台已经日益成为企业的基础设施的首选。“云原生”本质上来说就是利用云计算平台的优点来构建和运行应用的技术和方法。所以,对于越来越多的上云的企业来说,要想充分发挥云计算的优势,就要采用云原生相关的技术和理念,而不仅仅是将传统应用直接复制到云端。


实际上甚至对于那些还没有采用云技术的企业,云原生都有着很强的指导意义,如:微服务,不变基础设施等理念都不仅仅适用于云平台,对于构建和运行在传统基础设施的企业应用也有很大的益处。


InfoQ:您怎么看待“云原生架构”这个词?


蔡超:没有所谓的云原生架构,云原生在我看来是一系列技术及理念,让开发人员更好的利用云计算构建企业应用。微服务是云原生技术 / 理念的一部分。


IT 基础设施(Infrastructure)的变迁总是会推动架构演进,使得架构能够充分发挥基础设施的特点。例如,在 大型机时代,架构就是与之匹配的单体架构,随着 PC 及局域网时代的到来,客户服务器架构成为主流,那么 Internet 的发展则推动了 WEB Service 架构的发展,也带动 SOA/EDI 等基于 WEB Service/SOAP 的架构思想。现今,伴随互联网应用的规模日益庞大及云计算平台的广泛应用,能够适应大规模系统快速演化及发挥云计算优势的微服务架构日益流行。


InfoQ:落地云原生过程中,有没有哪些坑需要警惕?


蔡超:最常见的“坑”就是:直接将本地应用迁移到云端,不仅导致系统架构无法有效利用云的“Scale on Demand”等特性,通常还会造成成本的浪费。


“云原生”的实践仅仅停留在系统构建层面,而组织结构和团队文化并不适合云原生。犹如康威定理指出的,组织机构要适合与系统架构,开发团队的组织结构也要随着系统架构的迁移进行重构,如:适合微服务架构及 DevOps 的跨功能小团队。


InfoQ:云原生是大势所趋吗?2020 年有哪些值得关注的内容?


蔡超:随着云计算平台的日益广泛应用,云原生则是帮助人们更有效的利用云平台,所以,当云计算成为趋势时,“云原生”必然是大势所趋。我认为 2020 年,值得关注的技术包括:


  • 混合云实践,各大云商都推出了混合云(Hybrid Cloud)相关的支持方案(Microsoft Azure Stack, Amazon Outposts 等),以及 Kubernetes 可以在混合云环境下应用。

  • Service Mesh 在大规模系统中的实际应用,ServiceMesh 方案已经成熟,尤其在性能方面有很大提升。

  • 边缘计算(The Edge),边缘设备也将成为云端应用的重要部分,包括 Kubernetes 也开始支持边缘计算场景,典型的有 Ranch 的 K3s。

  • SRE 以及随之兴起的 Kubernetes Operator Pattern 相关技术。

  • FaaS (Function as A Service)作为 Serverless 架构的核心,各大云商都没有缺席,并且与之相关的 OpenSource 项目也日益涌现,如:OpenFaaS 等。

采访嘉宾

蔡超,Mobvista 技术 VP 兼首席架构师。拥有超过 15 年的软件开发经验,其中 9 年任世界级 IT 公司软件架构师 / 首席软件架构师。2017 年加入 Mobvista,任公司技术副总裁及首席架构师,领导公司的数字移动营销平台的开发,该平台完全建立于云计算技术之上,每天处理来自全球不同 region 的超过 600 亿次的请求。


在加入 Mobvista 之前,曾任亚马逊全球直运平台首席架构师,亚马逊(中国)首席架构师,曾领导了亚马逊的全球直运平台的开发,并领导中国团队通过 AI 及云计算技术为中国客户打造更好的本地体验;曾任 HP(中国)移动设备管理系统首席软件架构师,该系统曾是全球最大的无线设备管理系统(OMA DM)(客户包括中国移动,中国联通,中国电信等);曾任北京天融信网络安全技术公司,首席软件架构师,领导开发的网络安全管理系统(TopAnalyzer)至今仍被政府重要部门及军队广为采用,该系统也曾成功应用于 2008 北京奥运,2010 上海世博等重要事件的网络安全防护。


由蔡超老师担任出品人的“云原生技术应用”专题主要聚焦于云原生的实践,实践者们将分享他们在云原生演化过程中收获的经验与教训, 帮助更多的团队少走弯路,成功实践云原生,点击了解详情。


2020-03-17 00:003421

评论 1 条评论

发布
暂无评论
发现更多内容

redis之单机多节点集群

Java 程序员 后端

Redis哨兵原理,我忍你很久了!

Java 程序员 后端

Redis哨兵模式原理剖析,监控、选主、通知客户端你真的懂了吗?

Java 程序员 后端

Redis小白入门教程

Java 程序员 后端

Redis持久化方式AOF技术原理?一文带你从底层彻底吃透

Java 程序员 后端

Servlet 入门

Java 程序员 后端

macOS 环境安装Flutter

坚果

flutter 11月日更 安装部署

Redis(十六):事件

Java 程序员 后端

RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践

Java 程序员 后端

RocketMQ消息丢失场景及解决办法(1)

Java 程序员 后端

Redis实现feed流(1)

Java 程序员 后端

RocketMQ消息轨迹-设计篇

Java 程序员 后端

RocketMQ一行代码造成大量消息发送失败

Java 程序员 后端

RocketMQ 主从同步读写分离机制

Java 程序员 后端

Spring @Lookup实现单例bean依赖注入原型bean

Java 程序员 后端

redis数据迁移之redis-shake

Java 程序员 后端

RocketMQ源码分析之NameServer

Java 程序员 后端

Redis的各种用途以及使用场景(1)

Java 程序员 后端

Redis实现feed流

Java 程序员 后端

Redis的各种用途以及使用场景

Java 程序员 后端

Redis(二十六):Sentinel—

Java 程序员 后端

Redis(十八):服务器

Java 程序员 后端

RocketMQ msgId与offsetMsgId释疑(实战篇)

Java 程序员 后端

SAP为Java 16贡献JEP 387 “弹性元空间”

Java 程序员 后端

Serverless 如何在阿里巴巴实现规模化落地?

Java 程序员 后端

Redis(四):整数集合

Java 程序员 后端

Redis(十一):键的生存时间与过期时间

Java 程序员 后端

Redis安装与部署新手入门教程

Java 程序员 后端

RocketMQ消息丢失场景及解决办法

Java 程序员 后端

【Flutter 专题】12 图解圆形与权重/比例小尝试

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

Redis常用命令总结

Java 程序员 后端

说说云原生落地面临的难点与坑点_架构_邓艳琴_InfoQ精选文章