写点什么

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

  • 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:003398

评论 1 条评论

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

Java三大特性(一)—封装

共饮一杯无

Java 面向对象 10月月更

什么是数据产品经理?数据产品经理与传统产品经理有什么区别?

雨果

数据产品经理

B类纯资金业务的资金安全保障

agnostic

资金安全 B类业务 纯资金业务

「趣学前端」容器上的折角边框是图形吗?

叶一一

CSS 前端 10月月更

Go语言开发小技巧&易错点100例(一)

闫同学

10月月更

趣学前端」为什么有的页面背景颜色是渐变的

叶一一

CSS 前端 10月月更

首轮Zepoch节点已售罄完结,你期待次轮吗?

鳄鱼视界

Go-Excelize API源码阅读(二十二)——SetAppProps(appProperties *AppProperties)

Regan Yue

Go 开源 源码分析 Excelize 10月月更

「趣学前端」页面上吸顶的效果是怎么做到的

叶一一

CSS 前端 10月月更

Serverless的应用场景

阿泽🧸

Serverless 10月月更

【LeetCode】两个链表的第一个重合节点Java题解

Albert

算法 LeetCode 10月月更

挑战30天学完 Python:Day4数据类型-字符串str

MegaQi

挑战30天学完Python 10月月更

有人意图取代SQL,你同意吗?

雨果

sql

cstdio的源码学习分析10-格式化输入输出函数fprintf---宏定义/辅助函数分析03

桑榆

源码刨析 10月月更 C++

测试需求平台5-Blueprint优化与首个vue页搭建

MegaQi

测试平台开发教程 10月月更

「趣学前端」日常浏览的页面为什么可以五颜六色

叶一一

CSS 前端 10月月更

华为云从入门到实战 | 负载均衡服务原理

TiAmo

华为 云开发 10月月更

「趣学前端」box-shadow的多重用法

叶一一

CSS 前端 10月月更

一文搞懂Go整合captcha实现验证码功能

闫同学

Go Web 安全 10月月更

Python进阶(二十二)Python3使用PyMysql连接mysql数据库

No Silver Bullet

Python3 MySQL数据库 pymysql 10月月更

大数据ELK(二十六):探索数据(Discovery)

Lansonli

discovery 10月月更

面试官:说说你对Node中的Stream的理解

CoderBin

面试 前端 Node 10月月更

Go-Excelize API源码阅读(二十三)——SetDocProps、GetDocProps

Regan Yue

Go 开源 源码刨析 10月月更

前端开发提效小技巧之业务功能篇

叶一一

前端 提高效率 10月月更

浅谈etcd服务注册与发现

闫同学

Go 微服务 etcd 10月月更

Python进阶(二十三)Django使用pymysql连接MySQL数据库做增删改查

No Silver Bullet

Python django MySQL数据库 pymysql 10月月更

【一Go到底】第十五天---continue快速入门

指剑

Go golang 10月月更

Go-Excelize API源码阅读(二十一)——GetDefinedName()、DeleteDefinedName()

Regan Yue

Go 源码阅读 源码刨析 10月月更

【从0到1学算法】5.Bubble Sort算法-下

Geek_65222d

10月月更

如何在高性能的前提下,降低数据库存储成本?

OceanBase 数据库

一文搞懂常见的网络I/O模型

闫同学

网络 网络io 10月月更

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