对Devops的思考和构想——建立机器世界的生态系统 (结局篇)
这是关于机器和运维乃至社会之间的思考系列的第二篇。
本文参考《失控》著作的部分智慧结晶
本文还参考了“Docker到底解决了什么问题”这篇文章里面的部分智慧结晶
本次系列文章暂定为三篇分节以及最后这篇结局篇,暂时仅完成一篇。
警告:这是一篇仍未完成的文章,由于内容比较难写充实,权且看看有没有人看,再想想是否要继续写下去…
道家说“道生一,一生二,二生三,三生万物”,其中的“二”即是阴和阳,它们代表世界的正反两面,阴阳交融而得以衍生万物。那么,现实社会和互联网世界,哪个是阴,哪个是阳呢? 大家不妨思考下 :)
回到主题,通过本系列的几篇文章讲解了番人与机器及机器本身之间的关系之后,我们不妨回过头来看看用机器的思维是否可以对现实社会做些改造(反哺)? 这篇文章将会以一个全新的角度去看待我们的大千世界,用的是所谓的"运维思维"。
人 – 机器(Entity)
在IT世界里,每台机器均可以视为一个实体,服务器、交换机、负载均衡设备等等,每台机器均赋予了一定的职责,它可能是独立完成指定的任务,也可能是与别的机器共同组成集群形式提供统一的服务,总之,他们是“分工明确”的。
回到现实世界,“人”作为社会里面的核心角色,同样也是如此。每个人,从出生到孩提的学习和成长,再到步入社会参与社会劳动,最终安享晚年,化为尘土,正是一个“上线 – 配置 – 服务 – 下线”的过程。
那可以从IT世界学习到什么东西,反射到现实社会呢?看官们别急,且待鄙人一一道来。
配置管理(Configmanagement)
机器世界里,配置管理的最终目标是实现每台机器都在各自预先定义好的正确的配置状态下运转工作。那么,现实社会里的“配置管理”是什么, 应该怎么做? 我们不妨分析下,通过解答下面几个问题来获取自己心目中的答案:
一个人需要学多少东西才能成为“社会栋梁”?
zf 在这里面承担什么角色?
九年义务教育、大学高等教育等等,教育的最终目的是什么?
青少年犯罪、性格畸形等等的社会现象有没有引发深入的思考?
相信大家通过上面几个问题的思考,对“人的配置管理”这一理念有了一些认识。
没错,对人的配置管理正是推动他们自身学习和成长的过程,我们可以把九年义务教育看做是基础层的配置,也就是每个人必须要学会的东西,另外,我们可以把高等教育或者说职业教育看做是应用层面的配置管理,使得每个人都有自己的“特色”。这里面,zf便扮演着中央配置管理节点的角色,它制定策略,发布到每个“个人实体”上,并且对整个“社会”生态系统产生震荡影响。
其实,配置管理里面还有一个必须关注的事情,那就是“未预料的配置修改”。当所有事情都交付给配置管理工具(比如Salt)处理时,一旦在机器世界里发现配置情况不符或者出现篡改情况的实体,首先要做的便是查明原因、现场清理和恢复。推广到现实世界,当出现我们不想看到的情况,比如青少年犯罪等社会现象,其实鄙人个人觉得,我们更应该意识到的是,“实体”的配置状态被篡改了,也就是说实体没有保持我们预定的配置状态。
为什么会这样? 当然首先得要反思,其次,我们有对这些数据做过分析吗? 我们有为此调整过教育制度和政策吗? 我们有日志数据反馈当前实体的运作情况吗?
很遗憾的是,上面所提到的事情,我们还做的很少。鄙人想说,当配置管理失效时,很可能的原因就是PD自身不满意当前运维设定的配置状态而擅自做了配置修改,而我们所要的做的便是根据当前的配置CI & 配置修改数据不断的自省、修正和革新。
角色分工(Factoring)
鄙人在本系列文章的第三篇里面介绍到了多层分布式协同工作的理念(并非鄙人独创,借鉴了《失控》这本神作的很多智慧),其将一个IT生态系统切分为基础层、应用层、业务层三个主要层次。而回到现实社会,对每个人的角色分工和定位同样是非常重要的。
很多人都觉得当下的教育机制是存在问题的,其中有一点是就业方面带来的人员分工问题。那么,怎么做到合理分配呢? 我们不妨再一次通过问答形式试着解答下:
- 国家分配? 八九十年代实行的由国家统一分配工作的制度能否完成“合理分工”的任务呢?
( 鄙人的答案是否定的,所有指望着一个家伙能做好一切的想法都是不切实际的。 )
- 我们是否有办法看到现实社会当下所有的职业分布和招聘数据,是否可以据此修正和调整教育制度和zf政策?
(很显然,我们国内目前鲜有公共API的开放,针对这样的招聘数据尤其如此。至于zf是否有做过数据分析和挖掘,并调整对应策略的问题,鄙人也无法解答。)
- 我们是否可以做到重新分配角色? 角色的重新分配和配置数据的变化怎么做的?
(一个实体很有可能发生的情况便是它本身的角色定位出现更改而导致角色 & 配置数据发生根本的变化,机器世界里,我们可以通过结束实体的本次生命周期,也即是下线来完成变换。但是,现实社会里,我们无法做到这一点,因而如何重新分工也是一门很大的学门,鄙人觉得很重要的一个前提就是,我们得要做好每个"角色"对应的"配置管理",如果连一台Web Server怎么配置都不知道,如何实现角色的切换呢? 切换到现实社会来说,举个例子罢,我以前是文员,现在想转型为广告制作人员,怎么做? 很显然,当下的职业教育以及zf两者均没有做的很好,也即是说角色定义和配置管理都没有做到极致。)
日志化(logging to data)
在讨论这个话题之前,鄙人想问一个问题:“在机器世界里,日志意味着什么?”。似乎在运维人员的眼中,日志仅仅只是一个排障的辅助手段,我们关注的仅仅只是报错信息那块而已,那么,真的是这样吗?
其实不然,事实上,我们已经开始使用日志来做数据的聚合、挖掘和分析,我们已经学会通过日志来了解整个机器世界的运作情况(当然,只是一个方面)。
以鄙人浅薄的眼光来看,日志应该是每个实体(不仅限于服务器,它也可以是一个集群,一个应用Pool)用来反馈自身时时刻刻的所作所为的东西,翻译到我们的现实社会,这货应该叫“档案”(当然,更严格来说,其实应该说它叫做“历史”)。
将每个实体在整个生命周期内具有实际意义的行为记录下来,并且格式化的归档,从而带来更多分析、挖掘的价值。总之,日志的真正价值在于记录实体的生命轨迹。
那么,映射到现实社会的话,我们可以做些什么事情呢? 很简单,如果把“人”看做实体的话,人所做的事情和他所反馈的一个生命状态就正是他们的生命轨迹(当然也的确就是这样),现实社会的一个关键矛盾在于如何解决关联性的问题。换句话说,一个人所做的事情如果对其他人产生了影响,我们如何确定这之间是否真的存在关联性呢?
一个地方zf发布了一个政策,它将会对一批人产生一定的影响,这个“影响”当然有必要做logging咯? 如果真实可行的话,我们便可以像在机器世界里排障那样通过日志数据定位“影响”的源头。
不过,具体怎么做当然还得众人一起思考并且不断的调整策略,最终实现把这个日志给“存”下来,鄙人能力有限,暂时是无法解答的。
弹性资源分配和反省机制(flexible & reactor)
To be continue.
(+) 监控自动化和“冒烟”(monitor & smoking)
今年的元旦(2015.1.1)因为上海滩的踩踏事件失去了往日的光彩,其中,可能是因为“撒钱”导致的,也可能是警方没有做好安保措施所致,众说纷纭罢。鄙人也没啥个人的想法,但是以运维屌丝的视野,有一点让鄙人感觉异常诧异:既然有对应的监控视频,那么,为什么不对人流量的数据做下分析,并且设置个预警阀值呢? 在IT世界,这种行为叫“冒烟”,也就是事故还没有发生的时候,机器本身抛出预警,从而让运维人员有准备的时间来应对。
“API化”(Backend as a service)
To be continue.
“阴阳”社会
道家说虚实相生,太过具象不行,太过抽象当然也不行,机器世界同样如此。以代码为例,我们可以写一些通用的抽象class,满足统一的抽象逻辑,当然也需要编写具体的function 和 class,用以做具象的实事。推广到现实社会的话,我们有做实业的实体经济,比如农业、制造业等,当然,我们也同样需要银行、互联网这样的非实体经济,来补全实体经济的不足之处。
太过阳实的话,我们会显得“生硬”,太过阴虚的话,我们则会显得“不切实际”。怎么做?不妨再次学习下机器世界的思维。现实世界的实体经济,我们做的更为踏实,比如农业的话是粮食产量,制造业则是产品制造量等,这块便是对具象函数代码的“健壮”和“夯实”;另外,我们辅之以发展非实体经济,它们的价值在于提高“编码效率”,提高具象代码的复用性等。
最后想说几句
可能读者们会看不懂鄙人最近几篇“xx 生态系统”的系列文章,觉得没有实际的价值,这里,我谨有几句心里的真实感受,想同互联网上的各位分享下:
- 技术永远只是工具,推动革新的永远是新的工作和思维的方式;
Ps. 之所以说这句之前早就被很多人强调的话,是因为鄙人感觉我们国内的环境仍然是照搬学样的学技术,比如我所关心的Saltstack,很无奈的一点是有些人用salt只是用了一个cmd.run,其实它们这些新兴工具的诞生的背后,正是开源界大牛们对技术世界的重新思考、定位,它们是为了完成一个“新的理念”而诞生的。
- 万物是相通的,平常在机器世界的做事方式同样可以推广到现实社会的点点滴滴;
Ps. 举个例子罢,我们平常编写代码喜欢模块化、抽象化,因为这样可以实现reuse,并且也易于维护,那么推广到现实社会罢,其实我们的同样也可以开放出来很多基础的服务,供大家使用,比如说节假日的数据,zf统一提供接口供大家消费,再比如说组建一个开源软件的组织,无偿性质的编写统一的企业信息门户类Web、基础服务类API等,推广到zf的各个组织结构,最终实现整个zf有一套完整的IT生态系统,对外展示Public的完成任务的日志等数据,便于监督和自省。
- 用阴阳虚实的理念看待整个大千世界,工作 & 生活,互联网 & 现实社会,等等。
Ps. 鄙人个人觉得,互联网的出现正是为了让现实世界更为丰富。现实是阳,互联网便是阴,虚实相应,才能组成一个融汇的整体。我们身边遇到了太多的“问题”和“不满”,如果可以的话,为什么不尝试着推动一下,为什么不试试用“互联网思维”去改造一下? ( 原谅鄙人无知的窃用了时下热门的“互联网思维”一词,:) )