云程平台基于标准云原生架构设计,主要体现为三个方面:一是云端可视化低代码开发,二是基于云端PaaS部署运行,三是提供多租户SaaS化应用。
云程平台是云原生应用的低代码开发平台,它位于云原生底座之上,应用系统之下,起承上启下的作用,对上为云原生应用提供开发和运行平台,对下适配多样性的云原生基础环境(容器云、微服务治理、云数据库、云缓存、云存储等),可降低应用系统上云开发难度,提高开发效率。
我们常说的云原生,泛指云底座+云应用,云程平台定位于云原生低代码开发平台,而不是云底座。云底座推荐使用专业云厂商阿里、华为、腾讯的云产品,开源也有相关的软件,如k8s、Rancher、Istio等。底座就像是操作系统,不是所有的软件均可以运行在上面的,必须满足一定开发规范和技术要求才可以。
什么样的系统满足云原生架构,具备云化应用要求,可以参考业界云原生12要素,云程平台(http://www.yunchengxc.com)已内置了关键技术要素,基于平台开发规范开发的应用,均可满足云原生架构和上云要求。
业界除了云原生12要素法,描述的比较宏观,也没有其它的统一标准,笔者按照参与项目经验,总结梳理了衡量应用系统云原生的关键指标,仅供参考。云程平台(http://www.yunchengxc.com)已内置了如下技术指标,并在多个大型项目上经过了实践验证。
序号 |
指标项 |
云原生要求 |
非云原生要求 |
1 |
服务独立性 |
服务可独立开发、发布、部署,数据库也要按服务粒度独立部署 |
整个应用系统只能整包开发、发布和部署,数据库是一个整体 |
2 |
服务调用方式 |
跨服务调用只能通过REST协议接口调用 |
直接使用链接依赖,调用类接口或函数,直接操作数据库等 |
3 |
服务可在运行期复用 |
可在运行期直接部署服务,通过服务接口调用实现服务复用 |
通过源代码复用;通过在产品中重新编译、链接来复用;需要系统停机,重新部署整个系统 |
4 |
服务间无启动顺序依赖 |
服务之间没有启动顺序关系,所依赖的服务未启动时,本服务可以启动但不正常提供服务 |
服务必须按照依赖关系顺序启动服务 |
5 |
服务的规模 |
每个服务由设计、开发、测试全功能团队完成,团队人数小于12人 |
开发一个子系统的规模很大,团队规模几十人至上百人 |
6 |
产品与服务关系 |
产品主要功能由一系列服务组成,APP是由多个服务构成的 |
产品只提供服务接口,而不是由多个服务组成,不是服务化架构 |
7 |
服务注册与发现 |
服务可以动态注册,动态被发现,减少服务人工管理工作量 |
模块间的联系主要依靠开发态的编译链接或配置 |
8 |
服务接口治理机制 |
服务提供自身的接口描述,通过在线API管理工具发布出去 |
不提供接口描述,没有显性化发布出去,没有有效管理 |
9 |
前后端分离 |
前端与后端通过服务接口通讯,前端可独立开发与部署,前端推荐使用vue |
前端和后端代码强耦合,不是服务化调用,程序部署只能整体打包部署在一起 |
10 |
SQL语法通用性 |
不能使用数据库存储过程、自定义函数、包等,业务逻辑迁移到程序中实现,不能使用某一数据库绑定的语法 |
使用了数据库大量存储过程和自定义函数,跟某一数据库(比如Oracle)严重绑定,无法适配其他数据库 |
11 |
容器云适配 |
可适配主流容器云平台,比如华为CCE、阿里ACK、开源Rancher等 |
不能适配,或者作为一个大应用适配,效率很低 |
12 |
微服务治理适配 |
可适配主流微服务治理平台,比如华为CSE、阿里MSE、开源SpringCloud、Istio等 |
架构不具备,不能适配 |
13 |
云数据库适配 |
可适配主流云数据库,比如华为RDS和GaussDB,阿里RDS和PolarDB等 |
条件允许可使用云数据库,也可采用传统方式自行安装部署 |
14 |
云文件存储适配 |
文件存储不能使用数据库BLOB字段或者本地磁盘,要使用分布式文件存储服务OSS,比如 MinIO,阿里OSS、华为OBS等 |
条件允许可使用云文件存储服务,也可采用传统方式自行安装部署 |