实战:阿里Baba(Alibaba卡塔尔(قطر‎ DevOps 转型后的运行平台建设

导读:阿里巴巴DevOps转型之后,运维平台是如何建设的?阿里巴巴高级技术专家陈喻结合运维自身的理解,业务场景的分析和业界方法论的一些思考,得出来一些最佳实践分享给大家。

 
现在很多公司都在推行Devops平台。为了能够提升研发运维效率。这一章节主要写点关于偏ops层面的东西,dev层面的东西主要涉及到研发域的内容包括代码管理、代码编译与发布管理、研发流程项目管理及bug管理等。

《Linux
基础入门》是实验楼最受欢迎的课程,目前学习人数已有16万。很多人是从这门课开始了解了实验楼的;同时很多人也从这门课开始,进入Linux系统的大门。

运维工程师(DevOps)

简版

 

   一个大的产品与技术架构图:

可能是出于这种特殊情感,我们把第二条楼+产品线定在了Linux运维与DevOps实战——
一方面是目前掌握云计算技术和容器技术的运维工程师非常稀缺;另一方面是,Linux运维是对动手能力要求特别高的职位,通过不断的动手实验来练习上手,学习效率和效果要远高于只看视频和书籍。

一、岗位职责

  1. 负责系统的部署、监控、优化和安全;
  2. 负责相关数据统计工作;
  3. 负责产品的安全检测、认证和上下架。

前言

图片 1

因此我们设计了这个包含** 100个实验 + 50个挑战 + 190个视频
**的庞然大物…知识点贯穿了Linux基础、网络服务部署、Shell和Python编程、防火墙与安全、数据库、Devops、云计算等内容,完全学习下来,对付初级运维工程师的工作完全没有问题。但即使如此,楼+的几位老师还是在遗憾有些内容没有加进去。(“没办法,Linux运维的内容实在太多了”)

二、任职要求

  1. 两年以上经验,最好熟悉云服务;
  2. 熟悉Shell、Python等脚本语言,能进行数据统计;
  3. 精通LNMP系统服务的安装、配置、使用、优化和安全。

正版

 

后续会将各个子产品域的设计大图整理出来.

不久前,第一期的学员已经毕业,第一时间给我们带来了课程反馈:

一、岗位职责

  1. 负责开发、测试、生产三大环境的部署、监控、优化和安全;
  2. 负责产品的安全检测、认证和上下架;
  3. 负责与测试和运营相关的后台数据统计工作;
  4. 部署、维护办公网络和办公机器的正常。
  5. 负责三方账户和各个系统账户的安全。

“我是这个应用的
Owner”是阿里巴巴DevOps转型的重要策略,运维有了这个策略以后,PE大量的日常工作就可以释放出来,会有更多的时间去思考沉淀,去做编码,去做以前不曾做的事情。

  1. 关于决策层的思考

图片 2

二、任职要求

  1. 两年以上经验,最好熟悉云服务;
  2. 熟悉Shell、Python等脚本语言,能进行数据统计;
  3. 精通Linux系统和各类服务的安装、配置、使用、优化和安全,包括Nginx,MySQL、PHP、Redis、Memcache、Mongodb等一系列系统和应用服务;
  4. 酷爱运维;快速学习;不惧压力;

 

基于运维规则 + 基础数据(包括应用的元数据 + 离线大数据分析的结果预测)+
算法分析 + 机器学习 => 推导出一个最佳决策指令。(1. 关于自主决策)

image.png

方向

系统工程、网络工程、开发、测试,全方位能力。

运维的三个阶段

决策层需要考虑全局锁问题。比如对某个应用进行了扩容机器操作,那另外一个流程就不应该被执行。(2.
关于全局锁机制)

学习收获

 

当触发层发现了异常信息(异常事件、异常监控信息)只是一个动作,真正是否会执行还是取决于决策层。所以决策这层后面要做很多离线计算分析。对元数据与规则进行定义就显的非常关键了。

图片 3

图片 4

我觉得这套系统里面最核心的应该是

image.png

 

1、数据层(需要提供各种维度的数据、离线与实时数据、历史版本预测数据)

服务反馈

第一阶段:黑屏,三角形是代表整个运维给用户的一些体感或者给研发的体感,人工运维,目前很多企业可能还是这样。

2、决策层(如何做出准确合理的决策来代替人)

图片 5

 

其他都是干活层。比如执行器更多的是通过流程编排把各个运维节点串联起来执行。触发层也是定时采集机器上面的数据并计算一个阀值。

image.png

第二阶段:白屏,自动化运维,以前把脚本做成工具去弄,有什么特征,人push机器去干活,自助运维。

数据层里面最核心的一个功能就是如何度量弹性调度的效果。

给老师和助教的评价

 

大家还对楼+留下了真实的评价和感受,摘录如下。在此要感谢每一位对楼+做出评价的同学——你们的每一句“收获很大”可以让老师宝宝们高兴好几天(程序员就是这么单纯);每一句吐槽或意见我们也都会认真思考,不断改进。

Flying_Superbear:

课程量真的很大……大的让我一度觉得我要挂了……也没想到我能跟下来……

想想,其实,正是因为压力很大,自己转化的动力也大,才挠着头一天天坚持了下来。

一直在公司管理着windows系统的服务,总是觉得也要掌握linux的知识。但是一直由于精力和时间的原因,没有很好的效果。

楼+的课程啊,让我真的是在这几个月感觉到知识膨胀般的增长啊。我也清楚的认识到,很多知识还是要复习和巩固才会更深刻,所以还是要对感兴趣的知识点复习的。

楼+真的是给了一扇大门,给了你想要的,但是想真的抱走知识,自己要坚持和努力。

因为彻底是linux的小白,所以很多基础的知识都不清楚,但是导师们一直说什么样的问题都可以问……所以我真的敢问……辛苦老师们啦。

第三阶段:用户对运维体感很少,但是运维这个领域是不变的。最重要的是人机交互变少了,无屏虽说是不可能的,非常极端,但是个趋势,少量的人机交互,它有自决策、自驱动。

总之,这一次楼+的旅程,我收获真的很多,谢谢楼+。

毕业寄语:

总觉得把自己年纪也不小了,总觉得自己精力和时间也不多啦。

每天在公司忙头晕头转向,下班还要经常加班。但就是不甘心,不甘心就这样。

只有自己知道这几个月,经历了什么……完成了工作任务后开始学习lou+,周末放弃休息和玩耍的时间学习lou+。一晃,也就这么过来了。再回头一看,可以给自己鼓掌啦。

有时候,真的是要给自己下狠心。有时候啊,连你自己都真的不知道自己还有多大的潜力和能耐。


加上翅膀的菜鸟:

实验楼对我来说意义很大,当初在考虑跨专业找工作,在知乎遇到有人推荐实验楼。以前一直不知道程序员的开发环境是什么样的,是实验楼让我对程序员的世界有了慢慢的了解。虽然这期楼+我因为时间问题,没有好好深入学习,但是包含的内容确实很丰富,接下来有时间会慢慢拓展,认识这个网络世界。


BeanNan:

虽然课程没有学完,仅仅学了几个章节,但是对我个人而言,是收货巨大的,实验楼的课程,如果满分是100分的话,我给90分,剩下的10分仅仅是一些错别字,校对的问题,课程的质量是很好的,起了一个很好的引导作用,对我而言,最大的收获并不是学了多少知识,是教我学会怎么来获取知识,和解决问题的能力,这个是受益终生,感谢实验楼,我看到了老师在制作课程时的用心良苦,感恩,祝实验楼越来越好!


Armitage:

办的很好,内容干货很多,感谢石头山,罗进等各位导师,学习的过程明显感觉到确实是真实的生产环境,所遇到的问题也很贴近实际,对我的学习成长帮助很大,唯一遗憾的是因为工作原因不能一直腾出整块时间用心学习,完成进度,当然可能是内容比较多,个人感觉每一周的学习任务还可以优化,如果还有类似的楼加,我一定会再次报名!


”’JayF4n:
bash编程和python入门的实验和挑战做起来挺有吸引,不断调试和最后得到结果的过程其实就像游戏破关的感觉,课程里各种服务和工具的配置实验这种感觉就会弱一点,直播里提到后期应该会加入排错和优化性能的实验,肯定能提高课程的沉浸感。实验楼这种模式挺好,为无法脱产参加培训班的人和跨专业的学生等等提供了很棒的学习平台,获取知识和提升技能是刚需,祝越办越好!”’


「楼+Linux运维与Devops实战」第二期正在报名中,将于3月20日(今晚)开课。

第二期中,除了对原有课程进行了一些优化,导师团队也有所升级。曾任职于腾讯、盛大的天火老师也加入了教学团队,相信会给学员们带来更多的一线开发知识。

为了鼓励大家学习,我们还准备了以下福利:

奖学金:当期楼+中,有效学习时间排前三名者,可获得500元奖学金。

高级会员:开课即送3个月高级会员,可使用高级功能。

毕业礼物:优秀学员还有毕业奖励,礼物为会员、训练营、实体礼品等奖励。

目前还有8个名额,对Linux运维感兴趣的同学欢迎了解一下。

如果有其他问题,可以长按上面的二维码进群咨询。班主任和导师都在群中。如遇人满或过期,请加班主任微信号shiyanlou01拉您进群。

图片 6

image.png

 

自动化运维基础

 

做自动化运维,我认为有四大基础。

 

第一:运维标准与规范

 

我们的标准有什么好处,让研发 follow 这个标准,标准会在工具里固化。

 

第二:泛监控,运行时,静态,数据化,可视化

 

泛监控,不是说传统的监控,是把线上想知道的一切都数据化,最终数据不是给人看的,是给机器去消费的,数据是我们的生产资料,不是可视化,那不是我们的目标。

 

第三:CMDB

 

1.CMDB
应该放什么,一般放服务器相关的、网络相关的、应用相关的这三个维度的相关信息。

 

2.经常有人会说 CMDB
不准,数据不准是因为没有把数据生产和数据消费形成闭环,如果形成了闭环数据不准,那是因为你不用这个数据,所以不准。

 

第四:高效的CI/CD/CD

 

我们一定要具备快速的交付能力,主要体现这两个方面:第一,新开发的能力能不能快速上线,第二,想扩容一台机器能不能快速扩出来。这两个能力抽象出来是三块。

  • 持续集成(CI),很多人说持续集成工具不好用,效率低,其实持续集成的本质是要自动化测试。如果研发部不具备自动化测试的能力,持续集成怎么做都是失败的。
  • 持续集成里最重要的一点就是要推行单元测试、集成测试还有系统测试,单测是保证自己没问题,集成测试是保证跟上下游没问题,系统测试是保证整个系统没问题。
  • 持续交付(CD),有很多人说持续交付本质是一个
    Pipeline,CI的目标是什么?快速正确打一个包出来。CD的目标是什么?能够快速把一个包在不同的环境验证它是ok的,可以放到线上去,这就是持续交付要干的事。持续交付里很关键的一点我们要解决,就是它的环境一致性、配置一致性。环境一致性可以用Docker解决,Docker
    本身就是一种标准化的东西。所以说第一条用
    Docker,肯定是标准化的,另外一个问题,配置是不是一致性,是不是动静分离。
  • 持续部署(CD),是一种能力,这种能力非常重要,就是把一个包快速部署在你想要的地方。

PS:持续部署的几个痛点。

 

1.对包的文件的分发,阿里有一个叫蜻蜓的产品,是做了 SP2P,在 P2P
的基础上加了一个 Super。

 

2.应用启动,很多应用启动的时候要两三分钟,这是很有问题的。

 

3.部署起来以后这个业务是不是正确的,大家一定要做一个
HealthCheck,不是运维做,是PE做,一定要把这个要求说出来,执行
HealthCheck 这个脚本。

 

运维系统的重要特性

 

中间件研发首先关注稳定性,其次是效率,然后是易扩展。运维研发里面的六个重要特征,每一个都非常重要,以下是我感触比较深的几个。

 

图片 7

 

1.高可用

在做同城容灾演练的时候,我把关一切,结果发现运维系统挂了,救命的东西没有了怎么办?所以说运维系统一定要是高可用,不一定是高并发。

 

2.幂等性

幂等性是分布式系统设计中十分重要的概念,这个也非常重要。

 

3.可回滚

这个是做运维最基本的一个
sense,你做的任何操作是不是可控的。如果真正做可回滚,其实事情没有这么复杂。

 

4.高效率

如果你的企业发展非常快速,你的规模性效应已经来了,你的运维系统一定要具备很高效率,快速扩容、快速部署这个效率我们要追求极致。

 

研发定义运维,配置驱动变更

 

图片 8

2015年11月4日设想的架构图

 

从最下面看,是我们的基础设施,提供三种能力,包括集散、存储、网络。从右下角的位置看,画的是一个泛监控,它会知道系统、应用等,在旁边标了一个字,现状,我要通过这个现状把线上的系统全部数据化,然后放到决策中心。

 

左上角有
CMDB,现在很多变更系统,很多强调流程。我本人是做研发出身,非常抵触流程,流程不是一个效率工具,它是阻碍效率的。

 

比如故障搞完以后就是一堆的流程,非常阻碍效率,是质量控制的一个工具。流程不是不要,是把流程做到系统里面去,让系统帮人做决策,而不是人在那里点。

 

CMDB
定义了我刚才说的目标,现状通过监控拿到了,目标也知道了,这个时候还觉得这个事情很复杂吗?我认为这看你怎么去做。想做成人工还是做成自动或者做成智能,都取决于这个地方。所以智能里一定要有数据。

 

举个例子,通过智能分析出目标状态是使这个应用有100个VM,但是现在状态只有80个,一看这两个不一样,要扩容20台,如果系统做得更智能一点,通过图上左边的事件中心提示我20台负载较轻的放在哪,可以调度过去,然后去做执行变更。

 

基于这些东西得出来两个结论,“研发定义运维”,“配置驱动变更”。

 

为什么是研发定义运维?

 

研发定义运维(DDO),研发最贴近业务,最应该清楚这个业务应该具备什么样的能力,只有研发才知道这个业务KPS是多少。

 

为什么是配置驱动变更?

 

配置就是把目标改变一下,你跟我说一个运维场景,我可以在这个图里面 run
起来,配置只需要改你的目标状态,比如把你的状态10VM 变成15个VM。

 

这就是“研发定义运维,配置驱动变更”前因后果的思考。

 

运维工具与方法论

 

图片 9

 

精益发现价值

 

价值来源于用户的需求,而不是自己的YY,我们的价值来源于用户。

 

精益对我最大的感触就是要发现价值。精益思想,什么东西是有价值的,能够对用户带来物质上的或者身体上的愉悦的东西就是有价值的。

 

今天也有人问,DevOps
团队是该拆还是该合,我想他应该首先弄清楚面对的是什么样的问题,问题的优先级是什么?如果只解决一个问题,也许并不是DevOps
团队拆不拆的问题。

 

敏捷交付价值

 

敏捷也是对我影响很多的。很多人谈敏捷,我们团队里也搞敏捷,敏捷是要快速交付价值,它是一系列的方法论。但是在引入的时候千万注意,别人行的东西你不一定行,你需要的东西并不一定是敏捷,要因团队而异,形成一个环,持续反馈。

 

OODA环

 

OODA 环,就是形成闭环,让价值快速流动。

 

应用运维平台ATOM

 

应用运维平台的基础设施是一层,二层是运维中台,最上面一块是要做的 PaaS
平台,这个平台分几步。

 

图片 10

 

第一块,预算、容量、资源、弹性

这个是PaaS
平台上非常重要的一块,目的就是让资源快速流动起来,流向正确的方向来产生价值。资源如果常年不增不减,是有问题的。

 

第二块,应用管理

这是日常要做的操作,规模化,要快速对一个单元建站、扩容、缩容。

 

第三块,数据化运营

一定要讲数据,数据不是可视化出来一些报表,是要给结论,告诉用户这个数据完了以后应该是什么,规则中心是什么,是所有运维同学日常的运维经验沉淀。

 

批量腾挪工具

 

图片 11

 

这个工具不是所有人都需要,可以解决机房的搬迁,凑框迁移。

 

图片 12

 

单机闭环,这是腾挪工具的关键,如果企业有一定规模,这个是需要的。

 

图片 13

 

弹性伸缩工具

 

图片 14

 

弹性伸缩是我们的决策中心。它决定你的资源往哪个地方流,非常关键。

 

图片 15

 

最后,这里是运维领域技术含量最深的一个地方,要搞机器学习、深度学习、强化学习、算法等。

 

图片 16

 

弹性伸缩架构,这个平台不一定很多企业都需要,这里主要介绍在双11的时候是怎么用的。

 

图片 17

 

建一个站点起来只有5000的交易能力,可以通过10分钟时间让它具有30000万的能力,快速决策,快速调动起来。弹性里面是一个
OODA 环,拿它的数据和应用极限做比较,得出来一个策略中心。

 

弹性一般有水平伸缩、垂直伸缩,对线上做管理,当然我们有额度,这是比较精细化的管理。弹性有观察者模式还有自动化执行,每次弹性完以后有一个控制台,双11做全年压测的时候一般情况下不看这个。

 

实施效果

 

图片 18

 

嘉宾介绍

 

陈喻(亚松),阿里巴巴高级技术专家。2014年入职阿里负责持续集成持续交付平台研发团队,2015年调入运维团队,负责交易运维、无线运维2个团队,带领团队保障日常运维及双11大促运维。2016年开始负责Sigma弹性&资源运营团队,主要领域为集群弹性,应用弹性,资源运营,规模化运维,支撑双11,在2016,2017连续2年获得双11卓越贡献奖。

阅读原文

相关文章