如今,几乎所有圈里人,无论传统IT老司机,还是互联网弄潮儿,甲方也好,乙方也好,都知道 云原生 是个好东西。
所以,现在但凡上云,大家都要整“ 云原生的 ”,“夹生的”不要
不得不说,这波洗脑,可真彻底呀~
卖云的、用云的,谈起云原生好处,全是溢美之词,什么无与伦比的弹性、扩展性、可移植性、自动化能力、快速迭代能力…
这时候,理性的人就会站出来反思一下,从来就不存在那种“ 全是优点、没有缺点 ”的东西,不要整天光吹云原生的好,也要讲讲云原生的孬↓
风光无限的「云原生」,真有缺点吗?
不光有,而且,还不少!
第一宗“罪”,云原生应用比单体程序更复杂。
云原生强调解耦,但解耦并不意味着简单。传统的单体程序,虽然看起来是个黑盒,有各种各样的不好。但它通常基于单一代码库实现,也没有多个模块之间的通信和管理开销,不需要什么额外的微服务治理。
所以,“设计图”和“成品房”之间的体验,差距不会太大,不容易烂尾。
而云原生应用则才采用微服务架构,单个微服务模块是简单了,但是要把多个模块糅合起来,对API过度依赖。
不同模块的抽象和设计就是一道坎,考验架构师能力,而模块间的通信开销又考验微服务治理能力……
总之吧,从“蓝图”到“成品”,任重道远,搞不好还漏风漏雨。
第二宗“罪”,更多的工具依赖和学习成本。
从开发阶段贯穿到运维阶段,云原生引入了 更复杂的技术栈,很多还是全新的,不只是编程语言,还有从 K8S管理到各种CI/CD工具…,学习路径极其陡峭。
没有老师傅带着,或者没有真正的大规模DevOps实战环境,靠以前学编程、学语言的方式,很难搞定。
第三宗“罪”,厂商锁定风险。
云原生看起来是“解耦”和“开放”,API化是他们积极倡导的,但是毕竟到了PaaS这一层,每个云大厂的“黏性”还是极强的,尤其是像 Serverless 这样的重度云原生架构,还没有形成真正的标准化。