数字化转型之路-云原生与ChaosMeta
作者:刘凇杉(chaosmeta-platform发起人)
一.引言
随着科技的快速发展和信息时代的到来,数字化转型已成为企业不可或缺的战略选择。作为中国领先的科技金融企业,蚂蚁集团深谙数字化转型的重要性,并在其转型之路上融入了混沌工程的理念。通过本文的阐述,读者将能够深入了解蚂蚁集团在帮助小公司进行数字化转型方面的实践和创新。
二.背景
- 2022年1月,央行发布了《金融科技发展规划(2022-2025年)》,旨在加快推进金融与科技的深度融合,明确金融数字化转型的总体战略和思路,并为“十四五”期间金融行业的科技发展提供指导意见。该规划以稳妥发展金融科技、加快金融机构数字化转型为背景,进一步明确了发展目标和实施方向。
- 当前在金融机构中,许多新技术如虚拟化、大数据和人工智能已经开始被探索和应用。然而在资源服务化方面仍存在一些不足之处。因此如何以平台化、资源化和服务化的方式高效利用各类数字技术,成为支撑业务创新的重要因素,也是科技部门着重关注的内容。
- 实现平台化服务的前提是构建敏捷、灵活和稳固的数字基础设施和技术底座,并以服务化方式支持各类业务需求。例如基于云计算的共享云服务可以解决IaaS基础服务中内外网业务隔离和安全合规的问题;基于大数据资源和人工智能基础设施的智能引擎服务可以为各业务线提供各类模型算法训练、自然语言处理(NLP)和光学字符识别(OCR)等人工智能接入服务;基于数据治理驱动的数据服务可以构建全链路的数据统一汇聚、提供治理、运营的平台。
- 解决上述问题的有效途径是构建以云计算为核心基础的数字化转型平台,实现业务和技术的全面上云,提供统一的接口和服务。同时还需要具备高度的安全性、可靠性和可扩展性,以应对不断增长的业务需求和技术挑战。总之,传统互联网技术的转型涉及到构建数字基础设施和技术底座,通过构建以云计算为核心的数字化转型平台,可以实现业务和技术的全面上云,推动数字化转型的顺利进行。
三.云原生
定义
云原生旨在提供更高效、可扩展和可靠的应用程序交付和管理方式。云原生下的软件开发、构建和运行依托于云计算,通过容器化技术将应用程序拆分为一系列微服务,实现了应用现代化。这种架构提高了应用程序的可维护性、灵活性和可扩展性。
云原生的使用
举例来说,淘天通过采用云原生架构和相关技术实现了数字化转型。淘天将传统的单体式应用程序拆分为一系列微服务,每个服务专注于特定的业务功能,如库存管理、订单处理和支付等。这样的架构使得淘宝能够更好地应对业务变化,提高了应用程序的可维护性、灵活性和可扩展性。另外,通过云原生的弹性扩展和容器化技术,淘天能够根据流量和负载需求自动调整资源,确保应用程序具备足够的处理能力,避免资源浪费。此外,淘天还利用云原生的快速交付和持续集成部署流程,实现了敏捷开发和快速迭代,更快地推出新功能和更新。通过基于数据驱动决策的方式,淘天可以通过云原生技术实现数据收集、存储和分析,优化业务流程、改进用户体验,并通过机器学习和人工智能实现个性化推荐等。
金融行业与云原生
金融云原生化改造是在有利政策、产业挑战和技术创新的影响下,金融云市场迅速发展的结果。与传统的云计算相比,金融领域的云原生具有一些独特的特点和需求。在金融云原生化改造中,安全稳定性是金融机构的底线要求,需要高可用的业务容灾架构。另外,互联网金融的快速发展使金融交易呈现大流量、高并发和波动大等特征。此外,金融业务场景越来越垂直化和碎片化,需要敏捷的环境支持。普惠金融对数据价值的利用和智能决策也提出了更高的要求。下面是蚂蚁金融云的技术架构:
蚂蚁小程序云
蚂蚁小程序云作为一家领先的金融领域云厂商,通过内置接口与蚂蚁金服的各项开放业务快速集成,从而降低金融机构,尤其是中小金融机构的创新成本。同时小程序云也是蚂蚁集团提供的以云原生高可用为基础的,降低成本、免运维、高并发业务支撑的服务端解决方案。小程序云还提供了众多技术创新,比如提供了连续10年稳定支撑双11的分布式数据库 OceanBase、比如屏蔽基础设施细节的 Serverless、比如个性化智能营销系统、比如隐私合规扫描。下面是小程序云的产品概览:
身处云计算、移动互联、大数据涌动的时代浪潮之中,整个金融行业都在积极转型、努力创新。基于互联网产生的大量需求需要互联网机构和金融机构共同去满足,小程序云将助力金融机构聚焦互联网新经济中产生的新需求,聚焦创新红利,推动金融服务市场快速增长。金融业云原生化改造需求并非一蹴而就,如何用好这颗“银弹”才是关键。
云原生改造步骤
由于金融业对安全性和稳定性有着极高的要求,云原生化改造过程中必须考虑合规性、连续性和功能完整性。为了确保金融业的数字化进程得以顺利推进,首先要保证业务的正常使用,可以针对特定的业务场景,选择一些关键的应用进行云原生化改造。第二步再逐渐将现有的系统和应用逐步迁移到云原生环境中。这一步需要先仔细评估现有系统的复杂性和依赖关系,尤其是存在多年的僵尸应用。最后一步是“最终全量改造”,开始前指定完整的迁移方案,再按照计划将所有的系统和应用逐步完全迁移到云原生环境中。总的来说,金融业云原生化改造的关键在于如何充分利用云原生技术,满足金融业对安全性、稳定性和功能完整性的高要求。
四.混沌工程
混沌工程的兴起
2020年被戏称为云厂商的混沌元年,因为七个公有厂供商都遭遇了重大的故障。这给我们带来了一个共同的认识:没有哪个云平台是绝对不会出现故障的。让我们简单回顾一下2020年公有云故障的时间表:
- 2020年3月3日,微软位于美国东部的数据中心发生了服务中断,持续了六个小时,导致美国北部的客户无法使用Azure云服务。
- 2020年3月16日,微软Teams平台由于涌入大量新用户,在欧洲地区出现了持续两个小时的宕机。
- 2020年3月24日至26日,微软Azure Pipelines遭遇故障,严重影响DevOps团队使用的持续交付服务,给软件开发人员带来了很大的影响。
- 2020年3月26日,Google的多个云服务出现了无法访问的问题。用户遇到了Google的500错误代码(由于内部错误导致请求失败)和502错误代码(网关故障),Google将此次故障归咎于基础设施组件问题。
- 2020年4月8日,Google Cloud身份和访问管理(IAM) API发生故障。这次故障从美国东部时间上午10:35开始,持续了不到90分钟,导致多个Google服务中断,包括App Engine、Cloud Functions、BigQuery和核心Compute Engine IaaS。
- 2020年4月10日,华为云遭遇了大规模宕机,华为云的登录和管理后台无法访问,部分公司的业务无法正常运行,宕机时间持续了约三个小时。
- 2020年4月21日至23日,微软旗下的GitHub发生了多次宕机。4月21日,多个GitHub服务出现了访问异常,持续了一个半小时。4月22日,服务再次中断,持续了至少两个小时。4月23日,多个GitHub服务也遇到了各种问题的影响,持续了近三个小时。
- 2020年5月28日,Adobe Creative Cloud全天发生宕机,影响到了包括Photoshop、InDesign和Premier Pro在内备受欢迎的产品。
- 2020年6月9日,IBM Cloud遭遇了重大宕机故障,托管在该平台上的多个服务中断,其中包括知名科技新闻聚合网站Techmeme。宕机事件从下午2点30分左右开始,并迅速蔓延至全球,直到下午6点30分左右才得以解决。这次宕机持续了约四个小时。
- 2020年8月6日,苹果公司的系统状态页面显示,部分用户无法使用某些服务,包括苹果游戏中心和iCloud服务。
- 2020年8月14日,华为云香港机房的制冷设备出现异常,工程师定位了潜在原因并及时处理恢复。
- 2020年9月29日,Microsoft Office 365办公软件和Azure云产品发生故障,导致部分用户服务中断数小时,故障影响了Outlook电邮服务和Teams办公协作工具的部分用户。
- 2020年10月8日,微软公有云美国区域的Azure服务出现了约一个小时的问题。微软在其状态页面上表示,北美区域访问微软或Azure服务(包括Azure政务服务)可能遭遇问题,正在进行调查。
- 2020年11月25日,亚马逊公有云服务Amazon Web Services (AWS)遭遇了持续数小时的故障,导致部分网站和服务系统崩溃,影响了Adobe、Roku等服务。亚马逊AWS在其官方的服务健康报告页面上更新了最新状态,称美国US-EAST-1地区的Kinesis Data Streams API出现故障,导致客户无法写入和读出发布至Kinesis Streams的数据,同时也影响了更新网站页面的能力,并已经开始紧急修复工作。
- 2020年12月15日,Google服务器全球范围内突然发生故障。在约45分钟的宕机期间,谷歌旗下的多项服务无法访问,包括Gmail邮箱、谷歌日历、视频网站YouTube等热门应用都受到了严重影响。这是谷歌在整年中的第四次宕机。
从2017年开始,以Kubernetes为主的容器云生态就进入了快速发展阶段。许多公司开始以此为标准搭建系统基础设施和云平台,社区蓬勃发展,生态日益丰富,其中包括混沌工程这个新兴生态。随着云原生架构的出现,加上DevOps、分布式和微服务的发展,应用的研发迭代速度和交付能力大大提升,但系统的复杂性也随之增加,因此高可用性和稳定性的建设变得更加必要。作为系统稳定性报障体系中的重要一环,混沌工程平台的建设和实践变得尤为重要。简单来说混沌工程是一种通过有意引入随机性和不确定性的方式来测试和验证系统的可靠性和弹性的方法。下图为混沌工程常见的原子能力:
蚂蚁集团与混沌工程
在蚂蚁集团,由于金融场景的多样性、规模化的服务节点以及复杂的系统架构,经历过各种各样的故障。这些故障信息是混沌工程的最真实的变量。为了更加有效地描述故障,并对故障进行体感分析,我们首先优先分析P1和P2级别的故障(P代表蚂蚁集团对故障等级的描述),并提出一些通用的故障场景。我们还从IaaS层、PaaS层和SaaS层的角度绘制了故障画像。从功能性故障测试的角度来看,非生产环境下实施故障注入可以满足预期。因此,最早的强弱依赖测试是在日常环境中完成的。然而,由于系统行为会根据环境和流量模式的不同而变化,为了保证系统执行方式的真实性并与当前部署的系统相关联,我们推荐在生产环境中实施故障注入,我们的目标是通过实验来建立对系统的信心,为了减少实验带来的影响需要精确定义最小化爆炸半径。混沌工程和故障注入测试的核心区别在于能否进一步减小故障的影响,例如微服务级别、请求级别甚至用户级别。虽然日常的很多演练还在测试环境中进行,但目的也是为了减少因故障注入而导致环境不稳定问题。除了故障注入,流量路由和数据隔离技术也是减少业务影响的有效手段。
基本原则
- 引入故障:混沌工程通过有目的地注入各种故障和异常条件来模拟现实世界中的各种情况。这可以包括网络中断、服务器崩溃、资源耗尽等。通过引入故障,可以评估系统在各种不利环境下的表现。
- 观察和测量:混沌工程要求在引入故障的同时,对系统的状态和行为进行观察和测量。这可以通过监控系统指标、日志记录和度量系统来实现。观察和测量可以帮助识别系统中的潜在问题和性能瓶颈。
- 自动化和可控性:混沌工程注重自动化和可控性。这意味着故障注入过程应该是可重复的,并且可以通过自动化工具或脚本进行控制。这样可以确保故障注入的一致性和可靠性,并且可以轻松地进行多次测试和演练。
- 恢复和恢复能力:混沌工程的目标之一是测试系统的恢复能力。系统应该能够识别和处理故障,并尽快从故障中恢复正常运行。这要求系统具备自愈能力、自动恢复和优雅降级等机制。
- 分布式系统考虑:混沌工程通常应用于分布式系统中。在测试和评估系统鲁棒性时,需要考虑到分布式系统中的不同节点、网络通信和协调机制。
最佳实践
混沌工程有常见的几种攻防模式:1.基于风险点的攻防演练:以风险点为核心,通过对多个风险点进行故障注入和验证来进行演练,通常采用有损注入的方式。2.基于攻击能力的攻防演练:以攻击能力为主导,由蓝军团队开发出一种攻击能力,然后对所有或部分应用的相关风险点进行故障注入和验证,可以采用有损或无损注入的方式;基于防线能力的攻防演练:以防线能力为主,对防线规则进行故障注入和验证,通常采用无损注入的方式。
五.总结
混沌工程的商业化在许多领域都有潜力。例如,在金融领域混沌工程可以帮助银行和交易所等机构提高系统的可用性和稳定性,防止金融市场出现系统性风险。在电子商务领域,混沌工程可以帮助在线商店和支付平台等企业提供更可靠的服务,减少系统故障对业务的影响。在物流和供应链领域,混沌工程可以帮助企业提高交付和运输的稳定性,减少物流中断和延误的风险。商业化混沌工程的关键在于找到适合的领域和实施方式。可以在金融领域推广混沌工程。金融机构如银行和保险公司在数字化转型过程中需处理大量复杂的交易数据,而混沌工程能够帮助它们提高系统的可用性和稳定性,减少潜在的风险。
六.ChaosMeta
ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台。它是蚂蚁集团内部混沌工程平台 XMonkey的对外开源版本,凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。经过公司内部多年复杂故障演练场景的驱动,XMonkey在混沌工程领域沉淀了很多独特经验,是蚂蚁集团研发、测试、质量、SRE 等人员进行历史故障演练和挖掘系统潜在风险的重要平台。我们非常希望能将这些经验和业界进行共同探讨与共同演进,为此我们开源了ChaosMeta。
ChaosMeta混沌工程-公众号:
Github-Star:
原文地址:https://blog.csdn.net/qq_35703848/article/details/137874628
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!