本章节重点介绍并回答如下几个问题:

1、容器云、微服务在云原生中所处位置?

2、云程平台在云原生架构中的定位?

3、传统单体开发和云原生开发区别有哪些?

4、应用系统满足什么样的要求才是云原生应用?有没有衡量指标?

一、什么是云原生

这里是引用 官方定义:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

在这里插入图片描述

官方定义重点描述的是云原生底座,这些国内头部企业阿里、华为、腾讯均有对应产品,开源也有相关的软件,如k8s、Rancher、Istio等。底座就像是操作系统,不是所有的软件均可以运行在上面的,必须满足一定开发规范和技术要求才可以。

二、云程平台在云原生中的定位

云程平台是云原生应用的低代码开发平台,它位于云原生底座之上,应用系统之下,起承上启下的作用,对上为云原生应用提供开发和运行平台,对下适配多样性的云原生基础环境(容器云、微服务治理、云数据库、云缓存、云存储等),可降低应用系统上云开发难度,提高开发效率。

在这里插入图片描述

什么样的系统满足云原生架构,具备云化应用要求,可以参考业界云原生12要素,云程平台(http://www.yunchengxc.com)已内置了关键技术要素,基于平台开发规范开发的应用,均可满足云原生架构和上云要求。

三、传统单体与云原生区别有哪些

(1)开发模式差异

传统单体:从需求、设计、开发、测试整个流程为串行开发,多为瀑布模式。

云原生:按照业务边界水平切分成多个,每个独立开发,多个并行,更敏捷。

(2)技术架构差异

传统单体:前端、后端、数据库是一个整体,没有物理解耦,只能整体部署,灵活性和扩展性差。

云原生:横向前后端分离,纵向按业务切分微服务化,整个系统横向和纵向均有解耦,可分布式部署,架构柔性,灵活性和扩展性好。

(3)开发技能差异

传统单体: jsp、MVC、Java、Spring等开发技术。

云原生: vue、MVVM、Java、SpringBoot等开发技术。

(4)团队协作差异

传统单体:一个团队前后端都搞定,前后端交互边界不清晰。

云原生:前后端分工明确,两个团队开发,提前约定交互接口。

(5)系统部署差异

传统单体:服务器、数据库、中间件的安装和调优均需要团队自己搞定,耗时费力,容易出错,特别容易出现性能问题。

云原生:服务器、数据库、中间件均在云上,开通即用,部署更快,稳定性高,省时省力。

(6)系统运维差异

传统单体:主机、网络、客户端、数据库、中间件、应用系统等划分相对明确,容易定位找到对应实体,对运维技术要求一般。

云原生:软件定义一切SDX,主机、网络、客户端、数据库、中间件、应用系统全部云化,需要具备编程能力,对运技术要求较高。

四、应用系统云原生架构衡量指标

业界除了云原生12要素法,描述的比较宏观,也没有其它的统一标准,笔者按照参与项目经验,总结梳理了衡量应用系统云原生的关键指标,仅供参考。云程平台(http://www.yunchengxc.com)已内置了如下技术指标,并在多个大型项目上经过了实践验证。

序号指标项云原生要求非云原生要求
1服务独立性服务可独立开发、发布、部署,数据库也要按服务粒度独立部署整个应用系统只能整包开发、发布和部署,数据库是一个整体
2服务调用方式跨服务调用只能通过REST协议接口调用直接使用链接依赖,调用类接口或函数,直接操作数据库等
3服务可在运行期复用可在运行期直接部署服务,通过服务接口调用实现服务复用通过源代码复用;通过在产品中重新编译、链接来复用;需要系统停机,重新部署整个系统
4服务间无启动顺序依赖服务之间没有启动顺序关系,所依赖的服务未启动时,本服务可以启动但不正常提供服务服务必须按照依赖关系顺序启动服务
5服务的规模每个服务由设计、开发、测试全功能团队完成,团队人数小于12人开发一个子系统的规模很大,团队规模几十人至上百人
6产品与服务关系产品主要功能由一系列服务组成,APP是由多个服务构成的产品只提供服务接口,而不是由多个服务组成,不是服务化架构
7服务注册与发现服务可以动态注册,动态被发现,减少服务人工管理工作量模块间的联系主要依靠开发态的编译链接或配置
8服务接口治理机制服务提供自身的接口描述,通过在线API管理工具发布出去不提供接口描述,没有显性化发布出去,没有有效管理
9前后端分离前端与后端通过服务接口通讯,前端可独立开发与部署,前端推荐使用vue前端和后端代码强耦合,不是服务化调用,程序部署只能整体打包部署在一起
10SQL语法通用性不能使用数据库存储过程、自定义函数、包等,业务逻辑迁移到程序中实现,不能使用某一数据库绑定的语法使用了数据库大量存储过程和自定义函数,跟某一数据库(比如Oracle)严重绑定,无法适配其他数据库
11容器云适配可适配主流容器云平台,比如华为CCE、阿里ACK、开源Rancher、k8s等不能适配,或者作为一个大应用适配,效率很低
12微服务治理适配可适配主流微服务治理平台,比如华为CSE、阿里MSE、开源SpringCloud、Istio等架构不具备,不能适配
13云数据库适配可适配主流云数据库,比如华为RDS和GaussDB,阿里RDS和PolarDB等条件允许可使用云数据库,也可采用传统方式自行安装部署
14云文件存储适配文件存储不能使用数据库BLOB字段或者本地磁盘,要使用分布式文件存储服务OSS,比如 MinIO,阿里OSS、华为OBS等条件允许可使用云文件存储服务,也可采用传统方式自行安装部署

更多推荐