陈鑫,阿里云云效产品技术负责人
首先我们简单看一下什么是DevOps,这个词从何而来。我在这里把DevOps发展历史分为三个阶段:诞生期、定义期和落地期。

DevOps的“祖师爷”是比利时一名独立IT咨询师Patrick Debois。2007年,他负责一个大型项目的测试和验证工作,一边和开发对接测试代码,一边和运维对接“发版”。他发现项目组里的开发和运维两个角色的思维方式差异巨大,一边希望“快快快”,一边希望“稳稳稳”,这让他有点崩溃。
在2008 Agile Conference大会上,Patrick遇到了Andrew,两个人一拍即合,开始琢磨如何改变这种Dev和Ops水火不容的现状。
2009 年 10月,Patrick 通过 Twitter 召集开发工程师和运维工程师在比利时根特市举办了首届“DevOpsDays”大会,开始大规模讨论Dev和Ops的协作话题。后来为了便于传播“DevOpsDays”被缩写为“DevOps”。
在2009年以后,DevOps开始火遍全球。2010 年,The Agile Admin博客发表文章《What is DevOps 》 ,详细阐述了DevOps的定义,包括一系列价值观、原则、方法、实践以及对应的工具。
同样是2010 年,《持续交付》的作者Jez Humble出席第二届的 DevOpsDays 大会,并做了 “持续交付”的演讲。这是非常重要的里程碑,可以说《持续交付》这本书就是DevOps的最佳实践,以至于国内搞研发效能的同学人手一本。也正是这本书,加速了业界对DevOps的理解以及落地。
但我认为业界真正开始大规模落地DevOps,还是不能离开容器化技术的功劳。“Docker”起到了决定性作用,通过编写Dockerfile,第一次可以让开发者轻松定义软件运行环境,并且能通过CI/CD标准化流程去交付它。不过这么多容器运维起来仍然麻烦,于是google在2014年开源“k8s”(Kubernetes);2015年CNCF(Cloud Native Computing Foundation 云原生计算基金会)成立,正式将“k8s”作为核心,建立了一个巨大的生态系统。有了“docker”和“k8s”技术上助力,加速了开发和运维角色的融合,于是DevOps不再是空中楼阁。
我距离DevOps有多远
回顾完历史,我们对照下自身,通过三个小问题来看看自己的团队是不是已经是“DevOps”了。
1、我每次写完代码都可以部署生产环境,不需要别人帮助。
2、有很多监控、运维工具可以任我使用,轻松处理线上各种问题和故障。
3、我直接为线上用户的体验负责,不管是代码缺陷还是运维故障,自己搞的自己背锅。
以上我三个问题,其实分别涉及到了DevOps最重要的三个方面,做法、工具、文化,这三者缺一不可。

什么是高效能研发团队呢?我们可以参考《2018 DevOps现状报告》里这张表格:能做到每小时1次或者每天1次部署,1天或1周能够上线1个版本,服务恢复时间小于1天,变更失败率小于15%。不过这个数字其实并不好看,以我们自己举例,阿里巴巴研发平台团队,可以轻松做到1天多次发布生产,可用性99.95%,变更失败率小于5%。
这些要求在阿里巴巴看起来稀疏平常,那阿里是怎么一步一步走过来的,我们其他企业应该如何复制这些经验。让我们进入下一节,阿里巴巴的DevOps文化落地要诀。
DevOps的发展永远离不开技术的变革,在2008年的时候,淘宝启动了服务化改造的历程,创造了Dubbo、Apache Alibaba RocketMQ、TDDL(Taobao Distributed Data Layer)等业界知名的中间件。同时淘宝的巨型应用被拆分,变成了下单、会员、优惠等一系列应用,而围绕各个子业务场景更是诞生了成百上千个前台应用。大家可以想象一下当时的开发是怎样的,每周一个固定发布窗口,几百位工程师在临近发布时提交代码、修改bug、提交测试。在发布日晚上开始按照顺序进行逐个发布,如果发布后出现重大bug,要么当场Hotfix(修补程序),要么回滚,宣告发布失败。所有人都被发布日搞的筋疲力尽。第一代自动化发布工具的出现,将发布能力交还给了开发者,同时也迫使开发者去解耦应用依赖,做到独立发布,业务交付速度得到了质的提升。后来大家给它起了一个名字,就是“微服务”。
没过两年,随着研发人员越来越多,出现了各种复杂研发规范、各种复杂脚本、各种 “挖坑”“踩坑”等情况,让研发工程师苦不堪言。“这一切必须规范起来”, 2013年时我们建立了统一构建部署平台,将阿里巴巴集团从代码变更到线上发布环节完全统一起来,进行严管控。

在2016年我们又遇到了新问题,当时线上操作需要运维同学统一来做,而运维同学天然不想去做变更。可以理解,什么都不改的情况下服务是最稳定的。可这在某种程度上限制了开发者的创新,而且明确的职责分工也限制了开发者去关注自己应用的线上状态。这种情况,导致研发过程中出现明显瓶颈,这也是为什么阿里巴巴要做DevOps的根本原因。随着“容器化”的浪潮来临,我们研发平台再一次升级,将线上容器定义、运维监控责任全部交给了开发者,应用运维岗位不复存在。
而今天随着云原生技术的逐步成熟,上云已经变成企业标配,围绕云原生去定义下一代研发平台成为必然。
综上,技术的推动、组织的变化和研发工具的建设,这三者的有机结合才促成了我们阿里巴巴DevOps一步步走向成熟。
前面介绍了宏观上技术和平台的发展,具体来看有以下几个工具对阿里巴巴DevOps落地以及研发效能提升发挥了重大作用。
首先是DevOps平台“云效”,大家常见的开源软件Gitlab、Jenkins、Jira这些平台也曾经是阿里巴巴的一个选择,但是后来我们发现,纯工具类型的软件只能解决一些单点自动化问题,比如代码管理、构建打包等等。其实在实际开发过程中还有很多工作无法自动化,比如需求流转的规则,分支管理的规则,开发、测试、运维沟通的模式等。这些工作我们可以统称为“协作”。
要做好“协作能力”需要的是对人和流程以及效率有深刻的理解,并且将这些理解抽象成方法,最终做成产品。阿里巴巴通过数年积累,产出了众多独特的研发管理方法,比如Aone-flow代码管理模式、测试环境管理模式、 AGit-Flow代码管理模式、双十一分层项目管理模式等等。我们把这些研发管理方法都落地在云效平台上,最后作用在人身上,潜移默化的影响着开发者协作的文化,也可以说是DevOps文化。

第二个是流量回放测试技术。这项技术的创新给测试团队带来了很大影响,通过线上流量复制到线下,低成本的解决了测试回归的问题,将传统通过编写用例进行测试,简化为编排数据进行测试。第二层是Mock技术的应用,将一个分布式系统问题,转化为单机问题,可以在几秒钟完成上千个用例运行。有了这两个基础技术后,在上层可以发展测试平台,通过算法的手段去识别有效流量,去自动化处理数据,去识别异常流量背后的缺陷。通过这三层面的变革,可以说让阿里巴巴测试效率有了质的变化。
第三个是全链路压测技术(对应阿里云上的产品叫PTS)。双11大家之所以能放心剁手,一年比一年顺滑,核心就是这项技术在每次大促前帮助开发者发现风险。发现以后就需要快速的响应,通过DevOps工具去解决线上问题。每次压测都是一次练兵,有点类似于军事演习,快速发现问题,快速解决,不断锤炼团队DevOps能力,也可以这样说阿里巴巴的DevOps能力正是一次一次“双11”给练出来的。
当开发开始定义运维,接手运维的时候。我们管理者会不会有些担忧,比如会不会开发任意操作导致线上故障,随意发布导致稳定性问题等等。
阿里巴巴DevOps有一个核心理念是松管控和强卡点。
先看“松”在哪里?“松”是指我们有多种流水线可以供开发选择,应用Owner可以完整定义这个应用的各种规则,比如如何发布,如何测试,如何进行资源、环境配置等。我们有通用构建和自定义构建,可以给用户最大自由度。最后是“轻发布,重恢复”。在每一个应用维度,开发可以随时使用流水线来交付代码,而并不需要特别的限制,仅仅需要思考的是如果出问题,我们应该如何快速恢复。
在足够的自由度下,我们必须要设置一些“卡点”。比如代码审核和质量红线;代码安全检查、规约检查;发布、封网窗口等。还有所谓“变更三板斧”:可灰度、可监控、可回滚。这些卡点是为了保障阿里巴巴集团所有开发工程师步调统一,交付合格的产品。
总结:DevOps核心是快速交付价值,给与开发最大自由度,负责开发和运维全部过程。在监控、故障防控工具,功能开关的配合下,可以在保障用户体验和快速交付价值之间找到平衡点。
阿里巴巴是怎样快速落地DevOps的?这里我要重点提的是:以应用为中心的DevOps理念。应用信息其实可以归纳为CMDB中的一种数据。它对于研发人员天然是亲切的,它可以直接对应一个服务,一个代码库。以代码为起点,我们又可以串联流水线、环境、测试、资源。最外围是工具链:监控、DB、运维、中间件等等。

用应用串联整个工具链,可以让开发人员很好的理解和打通DevOps整体过程。不会存在“开发说代码、服务,运维说机器、机房”,这种鸡同鸭讲的情况出现。
当工具通过应用打通后,开发人员就可以顺理成章的在平台上定义它的应用,同时也在定义运维规则。比如,规划环境、创建资源、设置发布策略等等,这些都可以由开发人员完成。
完成应用和运维定义后,“谁定义就要谁负责”,因此在阿里巴巴,开发人员需要为应用全生命周期负责。通过类似理念和运维工具自动化的推进,“Dev”潜移默化的接手了“Ops”的工作。这时,你会发现原来“DevOps”并没有那么复杂。
通过我们前面提到的阿里巴巴在实践中锤炼的DevOps工具,“松管控、强卡点”和“以应用为中心”的DevOps理念,阿里巴巴的DevOps得以落地,并获取实实在在的效率红利。它消除对个人的依赖,降低团队之间的损耗,降低测试成本提升质量,降低发布软件风险。最终加快企业创新速度,让阿里巴巴在一场一场机会中可以快速响应。

上图是2018年我们发布的一些数据,首次提出了“211” 概念:85%以上的需求可以在两周内交付;85%以上的需求可以在一周内开发完成;提交代码后可以在1小时内完成发布。我也建议大家能够以“211”来作为自己企业的效能目标,通过先进的DevOps工具、实践和文化,三管齐下,带来红利,而不要为了做而做。
通过前面对阿里巴巴DevOps发展的介绍,我们不难发现这样一个循环:我们在软件研发过程中不断的遇到新的问题,从而催生出新的技术(比如微服务、容器化);然后新的技术又带来了架构的变革(比如服务化、技术中台);最终形成了软件研发的新模式。现在云原生技术来了,这项新技术能给我们带来哪些机会呢?
云原生是什么?业界有各种各样的解读,有观点认为:完全使用云来构建应用系统就是云原生。而从软件研发的角度来看,我认为云原生带来最大的变化是开发者仅需关注业务逻辑,从而带来极大地效能提升。这是怎么做到的呢?我们对比下传统应用和云原生应用。

在传统软件研发过程中,开发者的代码会深度耦合中间件,需要关注服务发现、分库分表、消息处理等多方面。往下也同样需要关注软件部署在哪,需要多少容量,甚至还需要关注操作系统、存储等问题。
在云原生时代会很不一样,中间件核心能力会下沉到云基础设施之中,一些常见的限流、降级、鉴权等能力都不需要关心了,数据库、运行环境等都是动态伸缩的,常见的运维问题也不需要关心。只需要开发好代码,通过软件交付平台自动化的发布到云端。
软件开发的复杂度其实不会消失,而是换一种方式存在。云原生技术下这种复杂度会下沉到云基础设施层,通过云去屏蔽这种复杂性。
那这种复杂性怎么解决,其中一个核心就是用数据去解决。在云原生下我们拥有业界统一的技术标准,比如中间件标准、容器标准等。拥有规范的数据和强大的基础设施,也可以轻松获取到这些数据。有了这些数据,我们就有机会去创造出各种智能工具,去解决我们软件开发的复杂度,或者是通过工具帮助开发者工作,降低这种复杂度。
因此在云原生技术下,我们拥有了前所未有的智能的机会和普惠的机会。
在云原生时代,我认为会有这三个技术会给开发者带全新的体验。分别是开发态的CloudIDE、运行态的Service Mesh、以及运维态的Serverless技术。CloudIDE将开发环境搬到了云上,而且可以和研发平台深度整合,为开发者提供极致的编程体验,再也不用关心我在哪里开发,只要有浏览器,打开就可以编码。

中间件在云时代会逐渐融入到Service Mesh技术下,服务路由、限流降级等开发者将不再关心。
Serverless技术,让自动扩缩,容量评估变为历史,开发者再也不关心机器在哪。
这三项技术将研发全链路云化,并且产生了大量研发数据、服务数据、运行时数据。阿里巴巴在最近几年已经开始投入这些数据的挖掘和研究工作,并且和学界保持着密切的合作关系。
简单介绍一下我们目前正在探索的数据应用方向:在代码方面,有代码推荐、智能代码评审、代码搜索和优质代码分享。在运维监控方面,我们投入了智能基线,能够根据监控波动情况自动化报警,避免逐个配置规则。还有发布风险控制,通过识别变更前后监控异动来自动阻断发布过程。还有自动化配置的业务全景监控,全链路洞察业务稳定性等。
下面我会通过两个实例,深入细节,谈一下我们在数据应用方面取得的成果。
今年年初,PRECFIX代码缺陷检测技术(Patch Recommendation by Empirically Clustering)已经在阿里巴巴内部生产系统中上线,帮助开发者在代码评审时发现缺陷。
智能化手段在缺陷检测领域应用主要有三个难点:1)在没有缺陷数据沉淀和公开数据集的情况下,如何标注数据?2)代码是重逻辑形式语言,如何去表征代码内容?3)如何通过非人工规则给出修复建议?
我们具体的做法是这样的,首先通过数据挖掘手段标注疑似缺陷的commit,并提取相关统计特征进行学习,通过模型给出风险度评估。然后对缺陷commit的变更diff进行相似性代码聚类,找出工程师常犯的错误,以及工程师常用的修复手段。当再次发生类似错误时,就可以给与开发者相对应的修复补丁。
运行时大数据的应用—无人值守发布
前面一个是“Dev”端的工具,下面介绍一个“Ops”端的工具:无人值守发布。
曾经,我们对所有线上故障做了分析,发现80%的故障都是由“变更”引起的。这也说明如果你不做“变更”,基本上不太会发生故障。因为代码发布是线上变更的一个重要形式,所以要让系统稳定、持续不断地运行,就必须卡住发布这个口子。于是,我们做了 “无人值守发布”这个工具,它可以收集包括系统数据、日志数据、业务数据等,并对各种指标做检查,通过算法对比发布前后的指标异动。一旦发现问题,就可以对发布过程进行阻断,甚至实现自动化回滚。有了这项技术,任何一个开发团队,都可以安全的做好发布工作,运维团队也不必担心因为频繁的线上变更而导致重大故障了。
阿里巴巴软件研发平台的未来:全新云效即将上市
综上所述,“云”和“数据”是我们下一代软件研发平台最大的机会。这些数据智能工具虽好,但不能只给阿里巴巴来使用,更重要的是实现“云”的价值,也就是我们讲的普惠计算的价值。

因此今年我们会在阿里云上推出全新的DevOps工具平台“阿里云·云效”,不但可以继续为大家提供企业级一站式DevOps能力,还会将云原生能力、智能化能力融入其中,最近我们正在积极准备,敬请期待!有兴趣的开发者也可以在云效用户群(钉钉群号:23362009)中联系我们,申请试用,谢谢大家。
【关于云效】
云效,企业级一站式DevOps平台,源于阿里巴巴先进的研发理念和工程实践,致力于成为数字企业的研发效能引擎!云效提供从“需求 ->开发->测试->发布->运维->运营”端到端的在线协同服务和研发工具,通过人工智能、云原生技术的应用助力开发者提升研发效能,持续交付有效价值。
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动
三大公有云厂商,香港地区主机测评一、ping时延比对(厦门电信本地测试):Ping时延测试腾讯云阿里云华为云延迟率最低时延44ms,最高72ms,平均46ms47.242段:最低时延59ms,最高204ms,平均107ms最低时延45ms,最高93ms,平均47ms丢包率丢包率小有的ip段丢包率较大每个段都会有概率丢包阿里云:47.242段:最低时延59ms,最高204ms,平均107ms,有的ip段丢包率较大8.210段:最低时延64ms,最高232ms,平均119ms,丢包率较好腾讯云:最低时延44ms,最高72ms,平均46ms,丢包率小华为云:最低时延45ms,最高93ms,平均47m
WAF可以对网站进行扫描,识别API漏洞。API安全如何设置API安全_Web应用防火墙-阿里云帮助中心API安全如何划分API业务用途?登录认证手机验证码认证数据保存数据查询数据导出数据分享数据更新数据删除数据增加下线注销信息发送信息认证邮件信息发送邮箱验证码认证账号密码认证账号注册API安全支持检测哪些敏感数据?敏感数据级别敏感数据类型非敏感数据(N)不涉及。特级敏感数据(L0)与一级敏感数据(L1)或二级敏感数据(L2)相同。单次响应中一级敏感数据(L1)较多时,升级为特级敏感数据(L0)。单次响应中二级敏感数据(L2)较多时,升级为一级敏感数据(L1)或特级敏感数据(L0)。一级敏感数
目录1古彝文与古典保护2古文识别的挑战2.1西文与汉文OCR2.2古彝文识别难点3合合信息:古彝文保护新思路3.1图像矫正3.2图像增强3.3语义理解3.4工程技巧4总结1古彝文与古典保护彝文指的是云南、贵州、四川等地的彝族人使用的文字,区别于现代意义上的彝文,古彝文指的是在民间流通使用的原生态彝文,多达87046字。古彝文的起源距今至少数千年,是世界上最古老的文字之一。对古彝文字集研究有助于理解尚未被翻译成汉文、用字尚未规范化的古籍,更深层、透彻地作用于传统文化保护。古彝文字义对照图(网络资料+邵文苑供图)古籍是不可再生的宝贵资源,应当得到妥善保护。中国的古籍在历史上迭经水火兵燹等自然灾害、
日前,全球著名咨询机构IDC最新MarketScape报告《中国DevOps平台市场厂商评估,2022》正式发布,此报告中对中国主流DevOps云厂商分别从现有能力和未来战略维度两个层面对厂商进行评估,IDC对具有代表性的8家提供商进行了深度研究,他们分别是(按照拼音字母顺序):AWS、阿里云、百度、博云、华为云、京东云、微软、腾讯云(CODING)。华为云、阿里云和腾讯云CODING均在战略和能力两大维度表现强势,成功入席领导者(Leaders)位置。IDC MarketScape:中国DevOps平台市场厂商评估,2022华为云软件开发生产线DevCloud在市场份额和发展战略两大维度均排
提起阿里巴巴,大部分人想到的是他的电商业务,其实在文娱产业,阿里巴巴的布局很早,阿里大文娱是阿里双H战略的一环,从2014年开始,通过重金收购,阿里巴巴在文学音乐游戏,影院视频体育等板块开始了布局,阿里大文娱初具规模,当时阿里巴巴的高层认为,如果不做娱乐,只能是一家电子商务公司,有了娱乐和电子商务平台,相辅相成,在扩大版图的同时,同时能增强阿里巴巴的影响力。众所周知,电子商务领域,阿里巴巴在初创期也曾遭遇挫折,但整体来说发展势头很猛,始终处于领头羊的地位,阿里大文娱的发展,虽然经历了起伏和波折,发展势头一直看好。对于企业怎样发展,一直存在着两个观点,是做大面面俱到做综合业务,还是专而精呢?阿里
BigData/CloudComputing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程目录一、云计算网站建设:部署与发布网站建设:简单动态网站搭建云服务器管理维护云数据库管理与数据迁移云存储:对象存储管理与安全超大流量网站的负载均衡二、大数据MOOC网站日志分析搭建企业级数据分析平台基于LBS的热点店铺搜索基于机器学习PAI实现精细化营销基于机器学习的客户流失预警分析使用DataV制作实时销售数据可视化大屏使用MaxCompute进行数据质量核查使用Quick BI制作图形化报表使用时间序列分解模型预测商品销量三、云安全云平台使用安全云上服务
下载宝塔XShell连接上阿里云后,下载宝塔面板yuminstall-ywget&&wget-Oinstall.shhttp://download.bt.cn/install/install_6.0.sh&&shinstall.sh下载结束登录宝塔,一键下载服务下载phpadmin,nginx,mysql等服务器(图略了,我直接点击了,忘了截图了,反正登录后宝塔会自动弹出提示下载)安装jdkjdk网盘(linux)链接:https://pan.baidu.com/s/1VVrC6CYaJTBSucXz4sewHw提取码:frlo把jdk复制到目录中:我复制到了/home/jdk访问jdk目录: