V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luffy
V2EX  ›  程序员

到底什么是云原生

  •  
  •   luffy · 2022-05-30 09:42:19 +08:00 · 6878 次点击
    这是一个创建于 913 天前的主题,其中的信息可能已经有所发展或是发生改变。

    定义在这里

    https://docs.microsoft.com/zh-cn/dotnet/architecture/cloud-native/definition

    然而感觉还是很模糊。

    哪位可以说说自己的理解?

    44 条回复    2022-06-28 15:56:05 +08:00
    cheneydog
        1
    cheneydog  
       2022-05-30 09:45:17 +08:00   ❤️ 5
    就是最开始就是以云计算为标准而设计的,不是把原来的东西搬到云上。
    murmur
        2
    murmur  
       2022-05-30 09:47:19 +08:00   ❤️ 2
    我的理解是以前跑 java php 叫云,现在跑 go docker 叫云原生,但是直觉告诉我这就是概念玩屁吃

    我都整台租用了服务器,不管是虚拟的还是真实的,跑啥不是我自己的事,非得整俩概念
    fregie
        3
    fregie  
       2022-05-30 09:52:06 +08:00
    云 原生,天生就是跑在云上的应用,各项特性都是专门适用于云上环境的应用。
    前些年老是说道上云这个概念,说明应用本身不是为了云而设计的,非云原生,需要做些改动或借助特定基础设施才能适应云环境。
    saltbo
        4
    saltbo  
       2022-05-30 09:54:12 +08:00   ❤️ 1
    简单来说就是能够屏蔽云厂商的架构,云原生架构能够无缝的在不同云厂商之间进行迁移。换句话说,云原生的目的是社区出的一套标准,所有云厂商都应该按这套标准玩。否则社区就不跟你玩了。

    任何公司都不想把自己跟某一个云厂商进行强绑定,所以大家都认可这个标准。所以倒逼了云厂商都来使用这套标准
    wangpugod2003
        5
    wangpugod2003  
       2022-05-30 09:55:18 +08:00
    云原生就是跑在云上的运用,例如 kubernetes 云,云原生应用就是针对 kubernetes 这种(操作系统)开发的应用。
    xinhaiw
        6
    xinhaiw  
       2022-05-30 09:56:46 +08:00   ❤️ 3
    scalability ,stateless ,fault-tolerant
    mikywei
        7
    mikywei  
       2022-05-30 09:59:27 +08:00
    非云原生:以前老一套的依赖环境和应用(比如在大家虚拟机或物理机上运行的 docker )
    云原生:专门针对云设计的依赖环境和应用,不考虑兼容传统的环境(就比如云厂商根据 docker 出的云原生版本改编而来的容器应用,只能在本云厂商上使用,还自带 web 管理控制台)
    DragonMo
        8
    DragonMo  
       2022-05-30 10:05:41 +08:00
    云原生就是所有云的功能(服务发现治理,负载均衡,链路追踪,容灾熔断,日志收集之类的),都在程序之外实现,程序屏蔽掉对这些的可见。
    justicelove
        9
    justicelove  
       2022-05-30 10:18:44 +08:00
    相比于原来部署在固定服务器上,云原生在任意环境可快速部署应用,并且整个部署环境,部署的应用都是可观测,可以管理的。
    cubecube
        10
    cubecube  
       2022-05-30 10:22:20 +08:00
    简单说,就是为云上专门设计的组件工具,搭建起来的服务
    比如 serverless 服务就是最好的的云原生的例子,在别的场景根本没有
    securityCoding
        11
    securityCoding  
       2022-05-30 10:22:42 +08:00
    不用纠结这个问题,某种程度上来说 k8s=云原生 也不是不行。
    betainCao
        12
    betainCao  
       2022-05-30 10:23:01 +08:00
    云原生,cloud native ,cloud 表示应用程序位于云中,而不是传统的数据中心; native 表示应用程序从设计之初就考虑云的环境,原生为云而设计。最终要的一个点,就是能在云上以最佳姿态运行,充分运用云平台的弹性和分布式优势!!!
    sutra
        13
    sutra  
       2022-05-30 10:25:37 +08:00   ❤️ 1
    是不是可以反过来理解,就是离开了云,跑不起来?
    vhui
        14
    vhui  
       2022-05-30 10:25:39 +08:00 via iPhone   ❤️ 1
    有一种说法
    云原生是 DevOps + 微服务 + 持续交付 + 容器化
    lookStupiToForce
        15
    lookStupiToForce  
       2022-05-30 10:35:18 +08:00
    简单粗暴点
    k8s 给你屏蔽了大部分针对单个容器的管理,让容器一体化,云原生给你进一步屏蔽 k8s 的大部分集群管理,让你以为你在用一个单机应用。本来也应该这样,服务器运维、集群运维跟应用的使用、拓展、开发、维护就该分开
    murmur
        16
    murmur  
       2022-05-30 10:45:48 +08:00
    @lookStupiToForce 那原生这个词翻译太丑了,比鲁棒性还丑,native 都是相对于虚拟机应用来说,叫 k8s 应用或者容器应用不更好
    c8c
        17
    c8c  
       2022-05-30 10:55:11 +08:00
    学到了。这个翻译确实让我弄不清。
    lookStupiToForce
        18
    lookStupiToForce  
       2022-05-30 11:02:24 +08:00
    @murmur 看到你前面说的“概念玩屁吃”,我其实蛮有同感😂
    奈何互联网圈子最爱玩新概念,国人如此,老外尤甚。还记得当初入一个外企的一个边缘 it 部门,就在这个部门内,针对同一个主要工作内容,用了不下 4 个不同的单独的单词来指代,其中俩还是压根见都没见过的“船新的”组合词,还特么分散在不同的文档里,让不管谁见了都一抹黑。求爷爷告奶奶问遍了整个部门,落实了这 4 个是一个玩意儿,部门里的人才从这次开始拎清了。部门外更是群魔乱舞,啥啥项目都顶着一个你压根想不到关系的名词作为行头,生怕别人注目不到它。
    后来对此不苛求了,他们能把名词统一已是大幸。
    一个公司内都这样,无怪乎拉投资的时候各种新名词频出吹得天花乱坠,不怕一个人没文化不会用基础的语文和已有的名词作表达,就怕一堆人包括投资人也没文化喜欢这花里胡哨的东西。
    总之都是没文化🤣
    libook
        19
    libook  
       2022-05-30 11:07:13 +08:00
    云原生基金会有官方的定义:
    https://github.com/cncf/toc/blob/main/DEFINITION.md#%E4%B8%AD%E6%96%87%E7%89%88%E6%9C%AC

    是一整套针对云计算场景的解决方案,具备一系列特点。
    fantastM
        20
    fantastM  
       2022-05-30 11:21:48 +08:00   ❤️ 1
    elintwenty
        21
    elintwenty  
       2022-05-30 11:48:12 +08:00
    elintwenty
        22
    elintwenty  
       2022-05-30 11:51:11 +08:00
    简单来说就是天生在云,以容器、容器编排等云原生提到的基础性组件为默认组件,云原生应用天生接入这些功能,没了云就用不了
    DragonCat
        23
    DragonCat  
       2022-05-30 11:59:15 +08:00   ❤️ 1
    个人感觉 6 楼的道友的说法好,scalability ,stateless ,fault-tolerant
    在这三个前提下,部署在 docker 、k8s 是应用层的一种表现形式
    公有云、私有云是基础设施的一种表现形式
    lhx2008
        24
    lhx2008  
       2022-05-30 12:44:14 +08:00 via Android
    就是区别于传统的 vm 上面运行的程序的模式,scalability ,stateless ,fault-tolerant 总结的挺好,不过实战的时候往往都在开倒车
    chenshun00
        25
    chenshun00  
       2022-05-30 13:05:04 +08:00
    问这个问题的应该是程序员吧,云原生我的理解就是一个接口,有很多特性,例如服务发现,弹性伸缩等等,只要能够达到这些特性就可以称之为符合云原生的。 抽象与具体,具体与抽象。
    imycc
        26
    imycc  
       2022-05-30 13:23:34 +08:00
    我的理解是设计时充分考虑云上部署的需求,充分利用云计算的基础设施的应用,就算云原生。

    之前打算把公司某一块业务做容器化改造,但业务有一套自研的调度跟负载均衡逻辑,每台机器上不同应用的部署数量也要遵循一定约束。开了好几次会,最后觉得改造的风险、人力及时间成本,远高于容器化的收益,就算了。
    但容器化之后的好处我们也享受不到了。看着其他改造完的业务平时维护那么省心,还是有点不甘心的。
    halfcrazy
        27
    halfcrazy  
       2022-05-30 13:40:54 +08:00
    自治
    tramm
        28
    tramm  
       2022-05-30 13:44:13 +08:00
    @saltbo 有道理啊
    Buges
        29
    Buges  
       2022-05-30 14:47:04 +08:00 via Android
    比如你在云厂商开虚拟机跑应用,本质上是在兼容你的应用运行环境。而云原生则是原生设计为运行在云厂商的环境中,如 serverless 。
    Alliot
        30
    Alliot  
       2022-05-30 15:33:47 +08:00   ❤️ 1
    @sutra 云提供商是云,企业自己有能力也可以构建云的。。。所以其实不用考虑这个问题。
    wzcloud
        31
    wzcloud  
       2022-05-30 20:31:18 +08:00
    TM 的,我之前面试天翼云的时候一面的大聪明面试官问过我这个问题。。。
    luffy
        32
    luffy  
    OP
       2022-05-30 20:40:36 +08:00
    @wzcloud 实在抱歉,我没能有机会在你面试前就把这个贴子发出来,并且让你优先看到。

    如果同样的问题再问你的话,知道怎么回答了嘛?
    wzcloud
        33
    wzcloud  
       2022-05-30 20:50:32 +08:00
    @luffy 没用的,你怎么知道面试官看的是这篇文章?要是看的和面试官看的八股文不一致,还是不对。
    lance6716
        34
    lance6716  
       2022-05-30 22:37:28 +08:00 via Android
    写程序的时候,考虑的不是内存、磁盘……而是如何容器化、消息队列、对象存储……
    lixintcwdsg
        35
    lixintcwdsg  
       2022-05-30 23:44:39 +08:00
    简单来说,就是软件从设计到生产(开发)都是为在云上运行而准备。
    这会影响到方方面面。
    比如调试是不是还需要本地调试,本地调试就意味着本地可以运行,本地如何云部署后保持一致,
    所以本地运行是不是强制启动 docker 拉云厂商的一系列调试环境来启动
    还是代码纯本地编辑,远程运行
    这就涉及到一系列问题了
    同时如果云上跑,那么很多伸缩等问题是不是云上解决了,那么开发语言的特性是不是要根据这种趋势做修改,比如增加云特性的语法糖(比如 FileIO 直接加入对象存储)。
    darkengine
        36
    darkengine  
       2022-05-31 09:19:36 +08:00
    我的理解是,现在只有 cloud functions 算是云原生
    xhinliang
        37
    xhinliang  
       2022-05-31 09:53:50 +08:00
    @xinhaiw 你说的跟云原生有什么关系么?
    xinhaiw
        38
    xinhaiw  
       2022-05-31 10:02:10 +08:00
    @xhinliang java boy 有什么高见
    dazhangpan
        39
    dazhangpan  
       2022-05-31 11:56:45 +08:00
    DoraMouse
        40
    DoraMouse  
       2022-05-31 12:07:29 +08:00
    云原生( Cloud Native )可以拆分成「云」和「原生」去看。

    「云」相对的就是本地,传统应用都跑在本地服务器上,而云则表示跑在云服务器上。

    「原生」则可以简单的理解成出生地的意思,放在云环境中所表达的意思就是:在把应用跑到云服务器上时,应该充分的利用云自身的特点,比如弹性和分布式优势。

    如果只是简单的把原来本地跑的业务放到云上,高举“上云”大旗,那只能叫做“拆迁户”,不能叫做云原生;当“上云”的风潮过去后,开始出现了直接就部署在云上的业务,这些业务完全按照“云”的特点去设计,这种是“云”的原住民,可以叫做云原生。

    来源: https://wiki.teamssix.com/CloudNative/#_0x02-%E4%BA%91%E5%8E%9F%E7%94%9F%E5%AE%89%E5%85%A8
    sky857412
        41
    sky857412  
       2022-05-31 12:12:59 +08:00
    云原生,我认为是业务系统只需要关注业务,负载均衡,弹性伸缩,服务发现,这些都是由云组件去做。之前没有云的时代,都是自己去实现这些功能,上云后,云厂商会提供这些基础功能。了解 serverless 怎么玩的,云大概就是这样的
    xhinliang
        42
    xhinliang  
       2022-05-31 16:20:40 +08:00
    @xinhaiw 这些可能是云原生服务普遍具备的特质,但却不是判断是否云原生的充分条件或者必要条件。
    tairan2006
        43
    tairan2006  
       2022-05-31 17:21:45 +08:00
    在现在这个时间节点,云原生 == k8s 原生
    D3EP
        44
    D3EP  
       2022-06-28 15:56:05 +08:00
    @xhinliang 梁老师可以展开下 :D
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1274 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:21 · PVG 07:21 · LAX 15:21 · JFK 18:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.