20年的大厂技术总监给云原生从业者的建议
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生的英文可拆解为Cloud和Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序设计之初就被考虑部署到云的环境,为云而生,在云上运行,并充分利用和发挥云平台的弹性和分布式架构的优势。
概括成一句话:云原生就是为云而生、以应用为中心的现代应用新范式。

云原生的技术特征
这种新的云计算范式具有以下特征。
其一,云原生除具有分布式能力外,还具有基于云的自动化资源弹性能力。
其二,不绑定任何技术,即云原生可以由任何一种语言的技术栈实现,如C++技术栈 或者Golang技术栈。只要该技术能够解决云原生场景下的问题,都可以考虑纳入云原生技术体系。
其三,不对适用的业务领域加以限制,云原生适用于所有需要数字化的领域。
其四,云原生不仅涉及技术变革,还会引发商业模式、产品和组织等的变革。

为何需要云原生
为什么会出现云原生这种新范式呢?下面来看以下几个场景。
场景1:用户用智能手机打开某网站的商品推荐页面,兴趣盎然地浏览着页面展示的商品,还时不时地进入虚拟直播间,观看导购的讲解,突然看中一件非常漂亮的衣服,便毫不犹豫地将衣服加入购物车系统,并直接通过第三方支付系统支付,也许下午就能在家收到这件漂亮的衣服了。
场景2:小王是个上班族,吃腻了公司食堂的饭菜,于是登录某外卖App订餐,没过多久,热乎乎的食物就经由外卖员送到了他的手中。
这些场景已司空见惯,人们的生活已经严重地依赖于数字化工具了,但这些为了提高生活质量的App背后是庞大的IT系统。
再来看这样一个场景。
场景3:比尔是一家著名电子商务公司的软件工程师,刚刚从工单系统那里接到一项棘手的任务,有大量的终端用户投诉“无法在App上下单了”。虽然事情紧急,但是比尔不得不从复杂的系统链路中寻找蛛丝马迹来修复后台的服务,经过一天的排查,最终发现故障的原因是流量过载,只需添加机器就可以解决。对这种规模的电商而言,这是一个严重的事故,一天至少损失上亿元。
这就是现代IT系统复杂性现状的一瞥。回过头来,为什么需要这么长时间的排查呢?
其一,现代软件系统结构大都很复杂,就像一个大型生物,比如人体,那么对大型系统的问题排查就类似于在不开刀、不使用核磁共振、不化验等情况下了解疾病的原因。
其二,现代软件系统在其生命周期内的新技术需求或功能需求层出不穷,这也使得现代软件系统越来越复杂,排查的路径越来越长,而IT投入是相对滞后的,其稳定性朝着失控方向发展。
比尔得知这个电商应用运行在云上时,很好奇为什么还会有流量过载的问题。
云关心的是CPU、内存等资源的池化和虚拟化,并不关心在虚拟机操作系统上是如何 开发、运维应用程序的。应用程序是运行在操作系统之上为用户提供服务的进程,比如提供订单服务的程序。应用程序无法直接管理云。应用和云之间出现了一个断层,这个空白区是由研发团队、运维团队等手工管理的。云对应用本身的资源需求完全是无感的,云无法自己做出扩展,只能由研发团队和运维团队手动拓展,所以应用程序对突发流量无能为力。而应用上云,仅仅是为了节约企业自己搭建机房的成本。
对这类应用而言,其实还有更多故障,比如应用实例因为Bug而崩溃、因为内存不足而拒绝服务、因为网络毛刺而影响服务质量等,而云对这些问题无感,所以云对此无能为力。技术团队努力按产品或者项目计划快速推进研发进度,这就像汽车以120km/h在高速上行驶,而缺陷、故障使得软件就像汽车突然下了匝道,速度又回到了40km/h,整体效率并没有提高,整体成本并没有降低。
很明显,需要一种技术向上能够为应用上云与稳定运行提供支撑,向下能够实现以应 用维度动态管理云资源(让云对应用的资源需求有感知)的能力。云原生正处于这个断层的 位置,提供了一种运用云算力的新方式。
所以,云原生使得现代化应用程序能够运行在云上,利用云的优势(而不需要理会硬件故障)在应用程序出现故障时自愈,并在突发流量发生时无须担心算力不足的问题。云原生大大地降低了成本并提高了效率。

云原生技术的本质
注意,云原生的电商应用在终端用户侧依然与原先的非云原生的电商应用在外观上及使用体验上保持一致,功能并没有发生变化。可以理解为,云原生平台是一种“透明”的基 础设施,即电商应用还是运行在操作系统之上,操作系统运行应用的基本抽象还是进程。也许有人会问,不是说应用会运行在云原生平台之“上”吗?这个“上”的意思是管理的关系,而不是运行态堆栈的上下层级关系,云原生系统更像管理应用进程的一组非应用进程,比如Kubernetes的本地“运维代理”—Kubelet这样的进程。在实现层面,云原生系统和应用程序从操作系统角度来看都是一样的。在架构层面,云原生系统是分布式的,所以从外观看,它是云的更高级形态。不同于传统的运维平台,它是实实在在的应用运行平台。
对于平台开发者来说,忠告就是:希望你能够沉下心来,不要被现代基础设施的“外壳”所迷惑,你依然需要刻苦地钻研操作系统内部的东西,比如内存管理、进程管理、多线程、网络堆栈结构、存储原理等。因为无论现在的云原生多么先进,也只是在架构思想上先进,底层的软件技术并没有实质的变化。你也应该清楚:云原生平台依旧是基于操作系统构建的现代分布式程序,你需要扎实的操作系统编程知识来构建这种新型的平台。
对于业务应用开发者来说,忠告就是:希望你能够刻苦钻研业务建模、应用架构等,如DDD、企业应用架构、业务分布式架构等。因为无论现在的云原生多么先进,它的初衷仍旧是让用户更加充分地聚焦于业务应用领域本身,而不是基础设施。
对于IT运维人员来说,忠告就是:希望你能够沉下心来,将思维从对具体运维对象的管理转变为对基于云原生抽象对象的管理,这将大大减少对千差万别的物理机器的知识依赖,管理方式被替换成统一的、标准的声明性管理方式。这样就不需要学习和掌握差异性部署环境的知识,同时又及时响应了业务的需要。
对于企业客户而言,忠告就是:不要迷茫,看清云原生的能力,聚焦于商业本质,进一步依托新型IT 工具加持自己的数字化产品,快速创新,使得在线业务发挥经济上的重要作用。对于云原生平台提供商而言,忠告就是:要从市场的真实情况出发,构建能够为客户解决实际场景问题的平台,这才是商业本质。
本文节选自《云原生落地:产品、架构与商业模式》

相关文章:
20年的大厂技术总监给云原生从业者的建议
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生的英文可拆解为Cloud和Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序设计之初就被考虑部署到云的环境,为云而生,…...
音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十)
介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...
京东数据分析:2023年10月京东彩妆销售大数据采集
鲸参谋监测的京东平台10月份彩妆市场销售数据已出炉! 鲸参谋数据显示,今年10月份,京东平台上彩妆市场的销量将近430万,环比增长约21%,同比下滑约3%;销售额将近5.8亿,环比增长约7%,同…...
uniapp-微信授权登录
目录 一、微信授权登录的介绍 1.用户在微信内点击登录按钮,跳转到授权页面; 2.用户同意授权后,返回授权码给开发者服务器; 3.开发者服务器通过授权码向微信服务器发送请求,获取用户信息; 4.微信服务器…...
在vscode下将ipynb文件转成pdf的方法
正常情况下,可以在vscode的ipynb界面点击上面的三个点,里面有export,可以选择直接输出html和pdf,但是需要latex,由于按扎u安装麻烦,所以我换了一种方法。 ----------------------------------------------…...
css之选择第一个或最后一个元素、第n个标签、选择偶数或奇数标签、选择最后n个标签、等差数列标签的选择、first、last、nth、child
MENU first-child选择列表中的第一个标签last-child选择列表中的最后一个标签nth-child(n)选择列表中的第n个标签nth-child(2n)选择列表中的偶数位标签nth-child(2n-1)选择列表中的奇数位标签nth-child(nm)选择从第m个到最后一个标签nth-child(-nm)选择从第1个到第m个nth-last-…...
CSS实现三角形
CSS实现三角形 前言第一种:bordertransparent第二种borderrgb使用unicode字符 前言 本文讲解三种实现三角形的方式,并且配有图文以及代码解说。那么好,本文正式开始。 第一种:bordertransparent border是边框,而transparent是透明的颜色&a…...
mysql 与 Oracle 的区别,oracle 与 mysql分页查询的区别
文章目录 mysql 与 Oracle 的区别1、并发性2、一致性3、事务4、数据持久性5、提交方式6、逻辑备份7、热备份8、sql语句的扩展和灵活性9、复制10、性能诊断11、权限与安全12、分区表和分区索引13、管理工具 oracle 与 mysql分页查询1.Oracle分页查询中提供了一个伪列:…...
原生实现底部弹窗效果 h5 小程序
<template><div class"home"><div class"btn" click"showPopupshow">弹出底部蒙层</div><div class"popup " catchtouchmove"true" :class"showPopup" ><div class"mask&q…...
最新Midjourney绘画提示词Prompt教程无需魔法
最新Midjourney绘画提示词Prompt教程无需魔法使用 一、AI绘画工具 SparkAi【无需魔法使用】: SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!本系统使用NestjsVueTypes…...
大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记
Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记 一、Abstract二、引言三、相关工作实例感知通过类别名进行检索通过语言表达式的检索通过指代标注的检索 统一的视觉模型Unified Learning ParadigmsUnified Model Architectures 四、方法4.1 Pr…...
java springboot测试类虚拟MVC环境 匹配返回值与预期内容是否相同 (JSON数据格式) 版
上文java springboot测试类鉴定虚拟MVC请求 返回内容与预期值是否相同我们讲了测试类中 虚拟MVC发送请求 匹配返回内容是否与预期值相同 但是 让我意外的是 既然没人骂我 因为我们实际开发 返回的基本都是json数据 字符串的接口场景是少数的 我们在java文件目录下创建一个 dom…...
react等效memo的方法
视频教程 前端技术|Dan博客|在你写memo()之前_哔哩哔哩_bilibili 把与ExpensiveTree的无关的dom做成一个组件 第二种情况,color在ExpensiveTree组件的父级dom 创建一个组件,将state的color和input写上,而ExpensiveTr…...
2023年亚太杯数学建模A题解题思路(*基于OpenCV的复杂背景下苹果目标的识别定位方法研究)
摘要 由于要求较高的时效性和劳力投入,果实采摘环节成为苹果生产作业中十分重要的一部分。而对于自然环境下生长的苹果,光照影响、枝叶遮挡和果实重叠等情况普遍存在,这严重影响了果实的准确识别以及采摘点的精确定位。针对在复杂背景下苹果的…...
【机器学习】聚类(三):原型聚类:高斯混合聚类
文章目录 一、实验介绍1. 算法流程2. 算法解释3. 算法特点4. 应用场景5. 注意事项 二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 全局调试变量2. 调试函数3. 高斯密度函数(phi)4. E步(getExpectation)…...
线上ES集群参数配置引起的业务异常案例分析
本文介绍了一次排查Elasticsearch node_concurrent_recoveries 引发的性能问题的过程。 一、故障描述 1.1 故障现象 1. 业务反馈 业务部分读请求抛出请求超时的错误。 2. 故障定位信息获取 故障开始时间 19:30左右开始 故障抛出异常日志 错误日志抛出timeout错误。 故障之前…...
【Docker】Docker 仓库管理和Docker Dockerfile
作者简介: 辭七七,目前大二,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖…...
面试必问:如何快速定位BUG?BUG定位技巧及N板斧!
01 定位问题的重要性 很多测试人员可能会说,我的职责就是找到bug,至于找原因并修复,那是开发的事情,关我什么事? 好,我的回答是,如果您只想做一个测试人员最基本最本分的事情,那么可…...
力扣114. 二叉树展开为链表(java,用树模拟链表)
Problem: 114. 二叉树展开为链表 文章目录 题目描述思路解题方法复杂度Code 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 1.展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左…...
学生成绩管理系统(python实现)
学生成绩表信息包括学号、姓名、各科课程成绩(语文、数学、英语、政治)和总分。用带头结点的单链表管理学生成绩表,每个学生的信息依次从键盘输入,并根据需要进行插入、删除、排序、输出等操作。 import json# 初始化系统 studen…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...
鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...
