招商银行金融平台工程实践 招商银行/基础设施研发中心/云平台及运维平台开发团队徐佳航云原生应用管理平台产品负责人 讲师简介 拥有超过15年独特跨领域经验,曾在电信、汽车、金融行业,初创公司担任联合创始人,KubeVelaMaintainer 近年来主要致力于云原生应用技术实践及开源社区(KubeConNA、KubeConChina、云栖大会) 目前在招商银行侧重云原生实践、平台工程产品化 目录 •汽车“平台工程” •云原生“平台工程” •招商银行平台工程实践 •实践成果与获益 •总结与启示 www.top100summit.com www.top100summit.com 汽车“平台工程”:汽车平台化 www.top100summit.com 背景 标准组件化平台的创建、开发,满足新车型低成本和短开发周期的需求,促进了汽车研发、交付、售后等管理效能的发展。 汽车组件平台包括以标准化方式设计和组装汽车的所有子系统,以及以组件间形态按标准模型设计和生产汽车零部件,并根据车型定位进行最终的“组装”。 汽车建模与关注点分离模型与SOP www.top100summit.com 丰田TNGA ToyotaNewGlobalArchitectureCarPlatform 丰田实施平台化后,规约“标准”车型组件 •不同车型间,组件可复用; •一个平台(生产线),可生产旗下不同品牌的车型(产品) 从平台和产品之间关系 •先建平台,再造车 •汽车平台(Car)<=>云原生平台(App) www.top100summit.com 云原生“平台工程”:云原生应用平台化 背景 InspiredbyDanielBryantatPlatformCon2022 www.top100summit.com Whynow? 120 100 80 60 40 DORA2023StateofDevOpsReport cƒ#$D&'()*+,-3 10.5 2022 2019 容器:成为云应用交付介质标准微服务:成为云应用架构标准实践 20 0 未上云 混合云 私有云公有云(多云) 形 CNCF:社区持续演进成 23 27 44 50 32.55 42.74 57 K8s:成为云应用资源管理标准IaC:成为运维自动化标准实践 www.top100summit.com 平台团队、平台、参考架构 放大 www.top100summit.com DevOps、SRE、PlatformEngineer www.top100summit.com www.top100summit.com 招商银行平台工程实践:云原生应用平台 应用上云后挑战 当前云的环境下开发人员关注点越来越多。从应用开发到应用交付、应用运维都需负责,职能边界长。 云基础设施的复杂性暴露给了开发者,开发人员直面云的各项技术细节。 微服务关联链路长,关联服务涉及组织多,运维、排障效率低。 应用管理生命周期 虚拟机应用 容器化应用 数据库、中间件等 应用用云复杂度 应用初始化 系统\子系统、发布单元、服务单元、代码仓、流水线、制品库、流程中心、部署策略、重要性等级等 行内应用开发运维人员目前至少要掌握60+(不含编程领域)不同门类用云领域知识,使用超过多个应用相关平台,才可能胜任云应用开发运维。用云复杂性,造成应用业务连续性保障难度大 按ACS租户、Quota申请计算(虚机)、网络(Vnet、SLB、SubNet、PIP、NAT)存储 按容器租户、Quota申请命名空间,申请微服务租户。 数据库架构选型、资源评审,资源申请。 应用配置 配置文件路径及文件格式,SLB、后端池、出入站规则、健康探测规则等。应用配置自行管理 ENV、Secret、ConfigMap、Mount、ENVREf、CMD、内部路由svc、外包路由route、容器端口、健康探针、优雅停、微服务配置等各类yaml 应用正确配置db链接池,解决数据库sql兼容性问题。 应用部署 编写部署脚本,设置自启动服务,切换回退自行实现。 depoyment、job、cronjob等,弹性、灰度、域名访问、网络安全扫描、DNS上线 sql发布等、防火墙开通 应用运维、监控、排障 根据自身经验知识查看分析应用日志、应用链路、应用指标。提权运维变更并验证。如遇网络问题需联系平台及网络团队排查。 联系DBA进行故障定位分析 开发人员需要掌握技能梳理 前端 DMZ 网关 举例:简单业务场景 不必要的灵活带来复杂性,可用标准化规约 www.top100summit.com API服务 状态服务 应用上云后挑战|小结 大规模金融私有云 ConvergenceofITInfrastructure 应用 云原生转型 ApplicationBeCloudNative Complexity 挑战 EfficiencyStability www.top100summit.com 实践三要素(1/3)|应用标准化 OAM为平台团队提供标准化的云能力供给范式。云建设者研究用户诉求,抽象封装云的能力,使用OAM进行标准化供给: •定义工作负载:抽象封装云的基础能力和实现细节;制定云能力使用规范并标准化实现。 •定义运维特性:抽象封装云和运维自动化的基础能力;分散的能力集中化、标准化。 •实现对应controller控制器:通过OAM执行引擎实现对应的控制器。 •通过应用管理GUI供给开发人员。 定义APIServer这类工作负载类型由k8s的deployment资源对象来实现。 定义route这个运维特性可给APIServer工作负载使用 www.top100summit.com 定义route如果配置了internet访问将自动发起安全扫描和dns公网开通 实践三要素(2/3)|建立“黄金路径”SOP Create Config Deploy Elastic Observability Diagnose Security Migration 创建指定类型的应用使用版本配置 按需部署策略(金丝雀发布、滚动发布、组装发布) 弹性应用成本 使用标准遥测输出进行应用可观测 问题诊断和性能 以代码形式定义安全策略(IAM) 兼顾遗产、迁移自动化 www.top100summit.com 实践三要素(3/3)|逆康威定律 Conwayslaw:设计系统的架构受制于产生这些设计的组织的沟通结构。 产品结构 TeamTopology (PlatformTeam) TeamTopology (EnablingTeams) InfraSre Secue ... 内部开源共建 “调整软件(产品)架构匹配的逻辑组织结构" ReverseConwayManoeuvre www.top100summit.com www.top100summit.com 云原生“平台工程”产品化 产品化路线|应用标准化引擎(OAM&KubeVela) RegisteredDefinitionModules (Component,Trait,Workflow,Policy) ArgoCD Definitions EndUser PlatformBuilder Application CapabilityProviders (CRDOperator) referencethedefinition webservice worker Task www.top100summit.com helm scaler … Definitionsaremodularizedcapabilities:1)Discoverable 2)Reusable 3)ImplementationAgnostic FluxCD CNCFEcosystem KubeVela Addons 产品化路线|应用灰度发布 产品化路线|应用可观测 产品化路线|兼顾遗产 产品当前架构 交互层 云原生应用平台 应用开发运维者 APIServer 运维 应用依赖管理 应用可观测(SLO) 云原生应用UX Meta管理 应用配置管理 应用部署 流量控制 应用质量 特性层 灰度发布 应用纳管 应用资源 调度 ... 工 作负载层 webservice vmservice flink mysqlfrontendfrontend... IaaS(虚机、网络、安全等) Agent vm kubernetes集群 容器 APIServer OAM引擎层 工作流 多集群管理 可观测性 应用策略 AppFile交互 其他Runtime(FaaS、StaticFile等) 基础设施层 平台开发者 www.top100summit.com 实践成果与获益 www.top100summit.com 实践成果|标准工作负载 应用开发者按业务应用场景,选择工作负载。比如接受API访问的后端服务,使用APIServer。 一种工作负载对应一种标准应用开发范式或者框架。 标准化工作负载 FrontendFaaS APIServerStaticFileVMServiceFlink APIGatewayMySQL TaskOracle … •Frontend:使用前端开发范式和框架(如React等)开发,通过容器运行,可通过域名访问。 •APIServer:使用云开发范式和框架(如Springboot)开发(或语言不限),接受API请求访问,实例无状态,通过容器运行等。 •APIGateway:基于SCG框架实现的微服务网关,提供全套网关能力,支持配置即可用和自定义扩展,可通过域名访问。 •Task:提供标准化、简单易用的“一次性”和“周期性”任务,任务不提供api访问。 •FaaS:提供标准化,简单易用的函数即服务。 •StaticFile:提供标准化,简单易用的静态文件服务器能力,支持OSS和CDN。 •Flink:基于FlinkonKubernetes实现,低门槛使用Flink能力。 •MySQL:MySQL数据库,提供数据库申请,数据库脚本发布与数据库可观测。 •Oracle:Oracle数据库,提供数据库申请,数据库脚本发布与数据库可观测。 •VMService:采用Kubernetes机制实现虚拟机发布,标准化发布过程与流程,运维成本低,运维体验与容器一致。 •... www.top100summit.com 实践成果|标准E2E应用管理(原生)能力 Create Config Deploy Elastic Observability Diagnose Security Migration 运维特性是附属于标准工作负载的应用管理能力,承载标准化云及运维自动化能力 标准化运维特性 应用创建运行时架构守护配置管理故障诊断灰度发布应用迁移弹性伸缩微服务治理 应用可观测应用纳管 … •应用创建:支持“一站式”完成云原生应用,服务单元,发布单元,码云仓库与流水线等资源“全阶段环境”(DEV-ST-UAT-UAM-PRD)的创建。 •配置管理:支持版本化的配置管理,实现配置全托管。 •灰度发布:提供标准化的平台级灰度能力,满足多个服务单元灰度和全链路灰度,支持请求参数与流量配比等流量策略,灰度过程提供实时观测能力。 •弹性伸缩:支持周期弹性与指标(CPU,内存与请求量)弹性,伸缩过程提供事件 跟踪,招乎告警与链路可观测,支持动态调整JVM参数 •应用可观测:基于不同工作负载类型的核心观测指标,融合统一日志、北斗链路、 指标平台与先知告警,提供最佳观测路径实践 •运行时架构守护:提供服务单元预期调用拓扑描述、运行时调用拓扑动态更新、 系统架构动态“保鲜” •故障诊断: