一、概述
本文主要介绍基于云原生技术栈建设企业技术平台的总纲,该技术平台对业务应用全生命周期进行管理和支撑,提供从需求交付、生产运行、稳定保障、资产运营,以及安全生产的体系化解决方案,为企业自建或采购技术平台提供参考。
本文陈述逻辑是以业务应用是一种社会生产力为观点,阐述应用(软件)的社会价值,并提供新时代以云原生技术为先进技术及理念支撑业务应用的技术平台建设方案。
二、数字技术提升社会生产力
数字化与数字化转型核心的目标就是以数字技术代替传统以人力为主的生产经营活动,将生产经营的业务逻辑以软件应用的方式进行承载,结合通信技术屏蔽了地理位置带来的信息交换延迟,用以提升社会生产力和生产效率,推动社会文明的快速发展。
三、“应用”承载业务逻辑,业务为企业创造价值
随着生产力的发展、社会的进步,企业的生产经营方式也发生着变化,特别是在几次工业革命的推动下,企业已经从最初的工厂手工生产转换到基于数字技术的自动化生产。数字化承载业务可以分为很多场景,如自动化控制,机器人,以及软件业务应用等等;云原生可以为其他数字化场景提供支撑,而本系列文章主要是构建企业云原生技术平支撑“业务应用”场景进行展开。
四、云原生是下一代云计算基础
企业数字化转型已经逐渐进入深水区,降本增效、安全可控成为新的转型目标。企业为了更好的提升利润,主要有两个方向,对外增加营收,对内节省开支。对内节省开支落实到 IT 部门后,降本增效就是核心 OKR/KPI 目标,而 IT 部门降本增效最合理的措施就是管理好现有的 IT 资产,云原生技术为企业降本增效提供了一整套的产品和解决方案。
据 Gartner 预测,部署在云原生平台上的数字工作负载将由 2021 年的 30% 增长至 2025 年的 95%,以容器、微服务、DevOps 为代表的云原生技术已在金融、电信、互联网 等多个行业得到实践和验证,正在为企业提供具有弹性、韧性及拓展性的用户体验。
五、云原生技术支撑应用全生命周期
软件生命周期大致可以分为“需求交付”、“生产运行”、“稳定连续”、“资产运营”,以及“安全生产”这五大类别。
5.1 需求交付
需求交付阶段主要是将业务逻辑或者产品需求转化成代码和程序的过程。该阶段按照软件生产模式差异也可以分为高效生产和快速创新两种类型。
高效生产是目前主流的软件生产模式,常以DevOps为最佳实践,它以敏捷研发的理念对软件版本进行快速迭代和交付。在这个阶段中需要关注相关软件各种架构的设计、需求的管理、研发过程、测试过程、打包发布过程、过程资产、相关的数据度量、规范标准,以及相关安全等动作。
快速创新是另外一种软件生产模式,它依赖企业已有的基础平台和沉淀的资产,快速复用已有的业务能力进行新业务的二次创新。如基于低代码的模式前端UI拖拉拽模式,依赖的数据和能力引用各种服务的 API 接口进行快速开发;基于编排组装的模式进行模块化服务编排组合开发等。
5.2 生产运行
运行环境是基础应用程序运行的基础平台和基础依赖。传统的应用是以系统进程服务的方式运行,而云原生场景下应用是以容器化进行封装运行在 Kuberentes 环境中,如果基础设施比较完善,还可以基于 Serverless 的方式进行业务程序的开发和运行。
运行依赖是应用程序在设计开发时将部分能力剥离主程序之外,由外部的服务组件通过网络等方式提供该部分能力,这里的外部服务就成了该程序的依赖服务。应用运行依赖大致可以分为存储、中间件和微服务支撑三类。
分布式存储
业务应用运行时产生的部分文件和数据会通过保存到存储的方式进行持久化管理,分布式场景下的存储一般是通过网络的方式远程集中提供。
存储类型一般分为文件存储、块存储和对象存储三类,文件存储是以远程目录的的方式挂载到操作系统的文件系统中使用,如 NFS。块存储提供的是基础的块设备,需要格式化后才能挂载到文件系统使用,如 CEPH-RBD。对象存储是以对象的方式对文件进行管理,通过网络 HTTP 提供文件的读写访问,没有目录层级的概念,如 S3(minio)。
PAAS 中间件
PAAS 中间件不同场景理解的概念不完全一样,本文对PAAS中间的归纳是所有有状态服务,如数据库(MySQ等),缓存(Redis等),消息(Kafka等),搜索(ElasticSearch等)等
微服务支撑
微服务体系是在业务以微服务方式进行设计开发时,以分布式场景进行业务运行时的支撑服务。如服务的注册发展,配置中心,路由分流,流量治理,应用诊断,分布式链路追踪、分布式事务,分布式调度,以及API网关等等。
5.3 稳定保障
运行观测
运行观测是对业务应用的状态观测,主流的可观测维度是日志,指标和链路,也可以扩展包含事件,告警等数据。
业务运行状态通过信息采集、存储、分析、监控以进行展示和告警是基础的运用场景,在结合一定的自动化策略能够为企业提供 AIOPS 的能力。
稳定保障
高可用
业务运行的 SLA 保障,提供高可用、两地三中心等不同级别的高可用能力,保障业务系统对异常故障的容错能力。
在高可用场景一般会以 SLA 来定义,以 RTO/RPO/MTTR 等指标进行量化。即便是理论情况,也没有绝对 100% 的SLA保障,即不能绝对保证业务系统不异常,只能尽量保证减小故障时间和影响,如 99% 、99.9%、99.99%就是三个常用 SLA 指标。
99% 故障时间不超过432分钟/月,7.2小时/月;99.9% 故障时间不超过43.2分钟/月;99.99% 故障时间不超过4.32分钟/月。
不能达到100%是因为考虑实际资源成本以及技术能力,只能保障一定范围的容错,如一个高可用系统在建设时需要考虑服务自身高可用、机器节点的高可用、机柜的高可用、机房设施高可用(交换机、路由器、网络接入、电源等)、多个机房的高可用(同城)、多个地域(异地)甚至多个国家数据中心的高可用等等。
容错场景越全面带来资源投入冗余也就越大,当投入成本与该系统能创造的价值不匹配时,理性的策略是不进行更高层级容灾建设,可以允许一定的故障时长,这就是为啥没有绝对的 100% 稳定的业务系统在资源成本侧的原因。另外一个原因是即使有足够的成本资源投入,也需要有对应的技术、人才、政策等支撑。
高并发
高并发是保证业务系统支持大规模的业务请求而不中断或异常,提供持续稳定的业务支持。满足高并发能力需要业务系统生命周期的多个阶段进行设计,特别是在设计时就需要考虑高并发场景,如
-
业务设计时高内聚低耦合的微服务拆分
-
高并发的服务要进行无状态的设计
-
服务间通信基于消息队列 MQ 进行异步处理
-
系统服务动静分离,静态页面基于对象存储+CDN加速
-
选择适合后端高并发的开发语言,如 Golang
-
基于 Linux 服务器进行应用开发,使用 epoll 的IO多路复用
-
建设分布式锁解决争抢问题高频访问数据保存在缓存系统中,如 Redis
-
对流量进行治理控制,如限流、容错、熔断降级、路由分流服务运行要多副本高可用的,
-
以负载均衡的方式对外提供服务
-
自动化的基础设施提供弹性的动态扩缩容能力,如 Kuberentes 或 公有云客户端本地排队等等
在实际业务场景下需要考虑投入产出比的问题,有时可能不需要在前期就过度设计解决所有这些问题,需要在实际上线过程中逐渐找到高并发的性能瓶颈和不稳定因素,在下次高并发到来之前解决掉问题即可。
混沌工程与全链路压测
混沌工程也是保障业务稳定的重要手段,可以把混沌工作看作是为了揭示生成环境中系统的未知弱点和脆弱环节而进行的试验,通过一系列试验帮助我们发现系统中潜在的、可导致灾难、或造成重大业务损失的脆弱环节,推动我们主动解决这些环节,提升系统的弹性和韧性。
类似的还有全链路压测,都是对线上生产环境进行可控的测试验证,发现并解决一些在开发测试环境无法发现的不稳定因素。
5.4 资产沉淀与运营
企业数字资产的沉淀与运营是解决中长期的企业发展过程中的软件、技术等数字资产沉淀与共享复用问题,充分发挥已有的资产价值,降低企业经营成本。
数字资产沉淀是将软件应用、UI组件库、API、算法、模型、模板、制品等统一管理起来,像有形资产一样可以持续的沉淀。
数字资产运营是将沉淀的资源进行产品化封装、共享给其他业务场景使用,如基于公共业务能力构建业务中台、基于公共技术能力构建技术中台、基于公共数据服务构建数据中台、基于API进行快速业务开发等等。
5.5 安全生产
安全生产大于一切。人与人之间基于信任建立的规则不是绝对的安全,软件行为由人控制的同时也会有不可控的bug,为了保障业务系统的安全,零信任是基本原则。
软件生命周期的各个阶段中不严谨的逻辑都会带来一定的安全隐患。如,产品设计问题,编码逻辑问题,依赖服务问题,运行环境问题,开放策略问题,以及使用方式等都可能会导致安全事件的发生。
识别安全可能会产生的环节,提前发现并解决安全隐患是安全生产的保障。
六、基于云原生构建企业技术平台
这里的技术平台用词也可以是技术中台或者私有云,本质就是对业务依赖的基础设施和服务进行统一有机的整合和管理,形成平台化的数字生产力工具集。基于软件的生命周期与云原生技术的体系融合,按照高内聚场景化的方式可以分为以下几个核心主题,由此组成本系列内容。
按照场景分别构建不同解决方案创建,拟定输出以下系列解决方案:
高效生产
-
基于资产的快速二次创新
-
基于云原生建设企业敏捷研发效能平台
生产运行
-
云原生最佳七步实践-容器云
-
云原生分布式存储系统建设
-
云原生有状态服务平台建设
-
基于云原生构建微服务支撑体系
稳定连续
-
云原生最佳七步实践2-可观测性与AIOPS
-
云原生高可用系统保障业务容灾
-
云原生高并发系统保障业务稳定
资产运营
-
企业数字资产沉淀与运营
安全生产
-
软件与数据的生命周期安全保障