出品 | CSDN云原生
(资料图片仅供参考)
声明:本文出自CNCF网站,最初由Matt Asay在TechRepublic网站上发表。CSDN将文章翻译成中文,分享给大家,转载请注明来源。
我们一直将"云原生"应用于像Kubernetes这样明确不属于云原生的东西。这有什么关系吗?
在技术领域,我们喜欢使用"云原生"这个词,就好像它意味着什么一样。更确切地说,它意味着每个人都同意的特定事物。
但事实并非如此,微软首席产品经理Maria Naggaga最近在Twitter上发布的贴子就证明了这一点。她要求她的部下——一群技术娴熟的人——总结一下云原生的含义。他们的回答表明,云原生计算基金会可能希望花费一些会员费来宣传标准定义。
语义的准确性似乎并没有妨碍大量的云原生IT购买。对许多人来说,云原生在某种程度上是Kubernetes和容器的代名词。问题是......为什么?正如Hassy Veldstra所说,"Kubernetes是云原生的,就像Java是操作系统原生的一样,它具有"一次编写,四处运行"的承诺。试图抽象出你声称是"原生"的东西其实并没有什么"原生"可言。"
当然,云原生的历史始于Bill Wilder为O"Reilly写的一本名为《Cloud Architecture Patterns》的书。根据Wilder的说法(由Ken Finnigan总结),云原生应用程序:
使用云平台服务;
水平缩放;
使用主动和被动操作自动扩展;
在不降级的情况下处理节点和瞬时故障;
在松散耦合的架构中实现非阻塞异步通信。
这并不是真正的Kubernetes,即使Kubernetes可以用来构建这样的应用程序。
微软的Scott Hanselman这样简洁地描述云原生:“应用程序知道云的存在”。这感觉比Kubernetes更接近事实。但这是否意味着它们不是定义上的云原生?
正如其他人所表达的那样,要真正成为云原生应用程序,必须 "依赖于云基础设施"。VMware专家和微软开发人员Dave Curylo强调,"这与那些智能托管在云基础设施上的应用有点不同,它们是专门为在云基础设施上运行而构建的应用程序。"
这些应用程序 "旨在利用横向扩展",Michael Brown补充道。对于那些把Kubernetes定义为云原生的人来说——Naggaga推文的许多受访者都这样做了,正如业内许多人一样——Achim Friedland的观点是正确的:"如果软件真的是"云原生",就不需要Kubernetes。"
这有什么关系吗?也许不重要。每隔几年,我们都会为一个旨在表示某些特定事物的术语而烦恼。无论它多么不合适,供应商总会把它应用到他们所销售的任何东西上,使其变得毫无意义。今天,每个供应商都希望成为云原生的,因为它在某种程度上是"现代"的代名词。而客户也想成为云原生的,所以他们购买了看似神奇的解决方案,他们可能意识到这些解决方案好得令人难以置信。同时,我们这些语义严肃的人只能对许多 "云原生 "技术是多么的云里雾里而苦笑。