云原生最近又火了

    • 前言
    • 一、云原生是什么?
    • 二、云原生的核心
    • 三、云原生的正确打开方式
    • 四、云原生的优势

前言

    最近云原生特别的火,所以就特地了解了一下。本文主要记录云原生是什么,云原生的核心,随着云时代的带来,云原生的正确打开方式以及云原生的优势。给大家分享一下我的学习经验。

一、云原生是什么?

云原生是基于分布部署和统一运管的分布式云 ,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。

    我们将名词拆成两部分—云、原生,云是相对于本地而言的,传统的应用都是运行在本地机房的服务器上,而云的应用则是运行在云端(如IAAS、PAAS、SAAS)。原生就是亲生的、土生土长的意思,即应用一诞生就是基于云的,可以直接在云平台上运行或非常轻松的迁移到云平台。我们可以这么来定义云原生:是一种新型技术体系,是云计算未来的发展方向。
    云原生应用要运行在云平台,那么就必须要有云的特点,比如弹性伸缩、分布式、快速部署、快速迭代、高效、持续。这可不止是简单的把原先在物理服务器上的应用迁移到虚拟机里,不止是基础设施和运行平台在云上,应用架构、应用开发方式、应用部署方式、应用维护方式全都要做出改变。

二、云原生的核心

    云原生的四大核心要素便是微服务技术、DevOps、持续交付、容器化。微服务技术使得应用原子化,所有的应用都可以独立的部署、迭代。DevOps使得应用可以快速编译、自动化测试、部署、发布、回滚,让开发和运维一体化。持续交付让应用可以频繁发布、快速交付、快速反馈、降低发布风险。容器使得应用整体开发以容器为基础,形成代码组件复用、资源隔离。

  • 微服务

    微服务是一个独立发布的应用服务,可以作为独立组件升级、灰度或复用等,每个服务可以由专门的组织来单独完成,依赖方只要定好输入和输出口即可完全开发,甚至整个团队的组织架构更精简,沟通成本低、效率高。

  • devOps

    DevOps字面上是组合词——Dev、Ops,即开发人员、运维人员。实际上,DevOps是一组过程、方法与系统的统称,DevOps强调高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的声明周期管理,从而更快、更频繁地交付更稳定的软件。

  • 持续交付

    敏捷开发要求持续交付,因为敏捷开发要求随时有一个版本可以上到大群环境,所以要持续交付。持续交付目的的快速应对客户的需求变化,要求发布非常频繁,所以会存在多个版本同时提供服务的情况,因此需要支持灰度发布/金丝雀发布等。

  • 容器化

    Docker是软件行业最受欢迎的软件容器项目,Docker起到应用隔离作用,为微服务及其所需的所有配置、依赖关系和环境变量移动到全新、无差别的运行环境,移植性强。但是docker对于分布式应用的部署和编排没有考虑,在网络和存储方式都没有提出比较好的方式,包括docker-compose。

三、云原生的正确打开方式

    第一步:你的代码放在云代码平台而非你公司内部私有部署的Git平台上。这就是微软要花大价钱并购Git的原因。这是第一步。为什么要这样做,你接下来就明白了。反正你现在基于云计算、大数据、人工智能、IOT开发具体业务应用的时候,你大量依赖的都是开源平台,就你那点具体业务应用能有多高技术门槛。而且微软接手后的git,对于企业代码的安全保护、备份,比你自己的管理员和运维技术高多了。

    第二步:使用云开发平台。这个开发平台可以基于Web浏览器,也可以基于本地VS Code IDE,但云开发平台的核心本质是:你根本不需要在本地安装那么多依赖框架,你在IDE里面写应用,你打开云上Git平台上面的某个源代码文件,import进一个包,然后在IDE里直接调用API,这个云开发平台会自动补全API,你可以保存代码、你可以编译代码、你可以调试代码、你可以运行代码,和你本地一样,但其实是应用运行在云端,应用也是在云端进行打包、安装部署的。

    第三步:使用云服务OpenAPI。云计算厂商把所有的云服务都开放出来Open API,你可以在这个云开发平台上直接调用这个云计算厂商的所有Open API开放平台里面的API。这些云服务会自己负责自己的安装部署升级、监控、备份、迁移等等。

    通过传统云服务与云开发模式的对比图可以看出传统云需要开发者关注后端服务器,比如数据库、文件存储、负载均衡、异地容灾、网络防护等;而云开发模式弱化了后端和运维的概念,只需要关注业务逻辑,就可以完成微信小程序/小游戏、公众号、Web、移动应用的开发,这样不但大大的降低了应用程序的开发门槛,而且节省了开发者开发部署以及维护的成本。

四、云原生的优势

    结合上面的内容,我给大家整理了几点云原生的优势:

  • 快速上线
    比如之前公司已经有了网站和APP,但是现在小程序火爆,很多公司像开发一款属于自己的小程序,小程序云开发就可以帮我们最短时间内上线。

  • 专注业务逻辑
    云开发模式下,我们不再需要关心前后端联调沟通这些问题,同时我们也不需要考虑后边运维的问题。项目整个复杂型和成为都会大大降低。

  • 提高开发效率
    传统开发模式下,前端需要一个后端配合才能完成一个完整的小程序项目,但是云开发模式提供了非常丰富的API接口,我们通过这些API,就可以很方便的实现数据的存储,文件的上传等操作,大大提升了我们的开发效率。不需要学习新的语言,只需要掌握javascript就可以。

  • 无需运维,节约成本

  • 弹性伸缩
    当性能要求不断增加的时候,云开发可以弹性扩展性能

  • 数据安全
    可以有自己独立的数据库,而且可以设置数据库权限