今年 9 月,一家云原生数据仓库厂商上市,上市当天市值即破 700 亿美元,成为软件史上最大 IPO。更令人惊讶的是,从不投资上市公司的巴菲特,破例以 IPO 价购买价值 2.5 亿美元的股票,还从现股东处额外购买 404 万股原始股。
云原生,这个生于云、长于云、号称是“下一个云时代”的技术体系,已经流行起来了。
Gartner2019 年的报告曾预测,“2020 年,有 50% 的传统老旧应用被以云原生化的方式改造,到 2022 年,将有 75% 的全球化企业将在生产中使用云原生的容器化应用”。前者与 CNBPA 组织完成的《第二期 (2019-2020) 云原生实践调研报告》中得到的数据相符。
前不久,CNCF 进行的第八次云原生调查显示,在全球疫情大爆发的背景下云原生工具和技术的持续增长。仅看容器的使用率一项,约 92% 的受访者表示他们在生产过程中使用容器,这相比 2016 年 3 月的第一次调查的 23% 增长了 300%,也是继 2018 年的 73%、2019 年的 84% 后的持续跃升。这说明,云原生时代软件开发和运维的标准基础设施已经成熟。
在企业积极进行数字化转型,全面提升效率的今天,IT 大厂们都不约而同的将云原生视为发展方向。腾讯、阿里、华为等国内厂商,争先恐后抢占云原生基础设施建设和应用开发管理两大市场,并在今年下半年陆续推行云原生战略:
与此同时,企业的云化动作也在加速,大部分传统业务云迁移已经完成。如果说,云迁移解决了传统应用软件在云环境中的使用问题,也就是“能用”的问题;那么,原生化改造要解决的就是“好用”的问题。毫不夸张的说,云原生化可能会成为大部分企业新的分水岭。
大量企业云原生化改造的过程并非一蹴而就,往往会选择一种稳妥的方式逐步迭代进行,尤其是传统企业,系统规模大、关联关系复杂、网络架构复杂、技术架构传统。业务部门要求系统可伸缩、支撑数据的快速增长,又不额外增加成本。技术部门考虑破除商业产品的锁定的方案、拥抱开源,还希望上云后的服务质量不比商业产品差。
一般的做法是,先拿一些简单的模块试水,摸清路数后再逐步进入深水区,完成企业整体云原生技术改造。那么问题来了,企业在云原生改造过程中,一般会经历哪些阶段?每个阶段的侧重点是什么?会用到哪些技术或产品?改造后的衡量标准怎么定?
腾讯把云原生改造分为 4 个阶段,分别是:开发云原生、计算云原生、架构云原生、数据云原生,在这个过程中,安全云原生为整个改造过程以及之后的系统运营提供数据安全及稳定性保障。
这一阶段的重点是解决“企业研发运维流程效率”问题。在传统的开发模式中,研发人员需要了解和学习不同 API 的具体使用方式和含义,开发完成还需要负责编译、打包并申请资源,过程复杂且耗时良久。运维技术支持不足、流程不完善、缺少监管手段等,也让运维过程缓慢低效。
以腾讯自身的云原生实践为例,最先切入的点就是软件研发运维流程。之前来自技术团队各方面经常会听到一些抱怨,开发人员说环境太少,构建发布流程太慢;测试人员抱怨太多非标准版本或者发布,版本质量不可控;运维人员埋怨发布不可控,疲于救火...... 正是因为大家在这里都很痛,并且涉及到大部分团队成员,就很容易快速推进。
这个阶段完成的好与坏,有两个关键的衡量标准:
微信读书小程序,继承了微信读书 APP 最核心的阅读功能,同时也是七对外分享与运营的最重要渠道,在上线 10 个月之内,日均 PV 过千万。而这离不开“小程序云开发”为微信读书研发团队带来的效能提升,上线 10 个月,微信读书小程序累计发布了 349 次版本,开发效率分别是 APP 和 H5 的 4 倍与 2 倍。
微信读书小程序上线之初,由于原先使用的 Node 框架上线流程繁琐、面对突发流量运维响应慢以及开发人力不足等原因,开发效率极低。
通过“小程序云开发”,他们开始逐步使用云开发替代原有的 Node 服务,从小程序端获取的数据通过云函数、云存储等功能传输到 Server 后台,并生成业务发展数据的报表,相当于一套从后台到前端的完整服务。
小程序·云开发,让前端代码和服务端代码共存在一个项目中,统一的技术栈、统一的 IDE 环境,可以调试开发更高效,还支持动态扩容,这使得微信读书小程序研发团队效率大大提升。
不仅如此,相应的,技术团队也因为“小程序云开发”的前后端统一,也重新调整了分工。以前其团队按照前端开发、Node 开发和运维人员进行分工,现在前端负责全栈开发,团队的关注点更多集中在服务性能、稳定性、资源利用率方面。
这个阶段有两个关键词:“容器化”、 “Serverless 化”。改造目标是降低对 IaaS 层的异构和差异、资源的部署和调度 (包括计算资源、网络资源、存储资源) 的关注。
这个阶段涉及的业务模块大多与“数据”相关度低,比如无状态类服务 (Web 网站、接入 层服务、逻辑层服务等),消息触发类服务 (转码、定时任务等)。所以往往改造成本较低,灰度验证也容易,一旦出现问题也能够快速恢复。改造成本和风险较低,也最适合在云原生改造初始阶段切入的地方。
这个阶段同样有 3 个关键的衡量标准,在改造完成后,我们的业务模块能否具备:
作业帮历时 3 个月,通过容器化改造并向腾讯云容器服务 TKE 迁移,让整体成本下降 43%,接口响应提升 10%,稳定性从 99.95% 提升到 99.995%,发布效率提升两个数量级,平稳支撑了疫情期间业务爆发式增长。
作业帮的业务,大规模使用 Kubernetes 原生的负载均衡和服务发现,而 Kubernetes 在分散的流量调度架构上天然存在瓶颈,容易导致业务负载严重不均衡。另外,作业帮的业务对服务间时延敏感,部分业务连接超时时间设置为 5 毫秒,无法承受细微系统调度和网络波动,容易引起业务大面积超时。服务间访问会带来巨大的 DNS 并发,极易触发主机的 QOS 限速和引起主机的 conntrack 冲突……
此外,改造过程中排查并解决的典型问题有:
作业帮将在线业务、大数据离线任务、GPU 业务都进行了容器化改造,改造方案如下:
这个阶段会深入到复杂的软件架构层面,伴随着微服务化和架构改造,因此难度较大,但收益也会更大。
在改造过程中,一些成熟的框架服务的使用,能让改造事半功倍。例如微服务平台 TSF、服务网格、云开发 TCB 等,它们集成了很多运维能力,包括日志、监控、服务注册和发现、故障容灾等。除了提高研发效率外,也能提升改造后系统的整体运维能力。
在这个阶段其实也有两个关键的衡量标准:
南网云平台由南网数研院牵头,腾讯云负责承建,2019 年 12 月 31 日就已正式上线。今年 2 月 12 日,南网云平台进行了首次电费结算业务, 该系统共发行 2000 多万用户电费数据,省网通道同步 1.2 亿条数据。2 月 16 日当天,日访问量超过 100 多万人。
而在此前,南网用了 45 天就完成了总部基地主节点的扩容和 9 个分子公司云平台的上线,平均响应时间 0.52s,保障了亿级互联网客户平台、电力市场交易系统等 376 个重要系统和 519 个微服务的安全稳定运行,实现主节点 58 个存量云应用迁移,分节点 6 个异构云纳管。
电网是关系国计民生的基础性行业,安全运行要求高,业务复杂度高,应用呈现多样化,IT 基础设施的复杂程度也远超传统企业客户。这对南网云平台的安全性、可靠性、灵活性和可控运行提出了更高的要求:
改造的具体方案是:
在这个阶段,企业的云原生改造已经进入到深水区,目标是将 Kubernetes、Serverless 的技术和理念应用到“数据服务”中,让“数据服务”也具备极致的弹性伸缩能力,在资源成本上能够做到最优。
这个阶段有三个关键的衡量标准:
疫情防控期间,健康码成为全球疫情下中国科技抗疫“智慧防线”的重要一环。健康码落地 20 个省级行政区,覆盖 300 多个市县,承载访问量累计达 260 亿次,覆盖人口超 10 亿,成为全国服务用户最多的“健康码”。
健康码涉及的应用场景繁多,数据类型方面需要支持如通行时间、车辆信息等结构化信息查询,也有如街道 / 社区 / 小区名这样的长文本信息。另外,伴随着疫情防控的需要的调整,还需具备快速调整增删字段的功能;在查询方面,不仅需要支持传统的结构化信息的查询,还需要支持关键字的搜索技术、海量数据的聚合分析技术以及地理位置区域计算技术。
传统的关系数据库 MySQL,在事务型应用及多业务多表关联查询方面有着出色的表现,但是面对健康码系统复杂繁多的数据类型,特别是文本关键字搜索能力时显得捉襟见肘。对于比较热门的 NoSQL 类产品 MongoDB,虽然能满足多样化的数据类型的支持,且可以根据业务的需要随时动态的增加字段且不影响业务正常的查询写入,但是同样缺少文本关键字的检索能力。
而在海量数据的存储方面,虽然相当多的大数据产品,如 hive 数仓、Hbase 等,拥有海量的数据存储能力,且具备一定的数据分析能力,但整个技术栈及架构比较重,需要维护的开源组件繁多,通常需要一支专门的运维团队进行集群的日常维护。对于开发人员来说,开发方法及接口也较为复杂。
因此,该项目数据库采用了 Elasticsearch(以下简称 ES)。具体的项目方案如下:
随着疫情防控在全国范围内的铺开,接入健康码的省市自治区快速的增加,截止目前已扫码次数达 16 亿次,覆盖 9 亿用户。如何应对业务急速的数据查询增长?
企业在进行云原生化建设的同时,安全能力应贯穿云原生的整个生命周期,这称之为“安全云原生”。
在开发阶段,提供集成的代码级安全及合规检测能力,提前发现风险隐患,或通过向开发者提供安全 SDK,使产品具备内生安全能力。处于发布阶段的制品 (例如容器镜像) 需要持续地进行自动扫描和更新, 从而避免遭受漏洞、恶意软件、危险代码以及其它不当行为的侵害。完成这些检查之后,应该对制品进行签名来保障其完整性和不可否认性。
在部署阶段,集成的安全性能够对工作负载的属性进行实时的持续验证 (例如完 整性签名、容器镜像和运行时的安全策略等)。在上线运行阶段,能够提供对应用、服务和工作负载的运行时 防护、并通过态势感知能力和云平台的灵活、弹性机制,对网络安全事件进行实时自动化响应并进行协同处置,帮助客户实现高效的安全防护及合规。
安全云原生部署达标参考标准:
现代企业的 IT 规划要面对两个紧迫事实,一是当前的客户需求、行业竞争状态已和 20 年前、10 年前全然不同,企业业务的更新速度很多已经从以周为单位提升到按小时计;二是云原生是新生事物,企业技术人员从零学习、到消化吸收、再到创新都需要人力成本和技术试错成本。
当面临着行业竞争紧迫、技术试错成本和人才培养成本的三大压力,找到一个合适的参照,以此为基础迭代自己的业务解决方案和产品技术架构,是当前很多企业所需要的操作。
目前,腾讯针对云原生的产品就有 30 多个,服务着几十万家企业。这篇文章里的所有案例,来自腾讯云原生服务的真实场景。后续也希望能看到越来越多的落地案例,为有云原生改造需求的企业,提供参考。
延伸阅读:
关注我并转发此篇文章,即可获得学习资料~若想了解更多,也可移步InfoQ官网,获取InfoQ最新资讯~