去哪儿网-混沌工程建设实践分享

如何获得讲师PPT:

扫码关注公众号,后台回复「1151」即可获得讲师PPT哟~

还能一键订阅后续精彩活动内容~

走出故障迷局的三重奏:逃生、复盘和推演

 

直播间问题答疑:

企业要混沌工程需要满足什么条件?比如系统上、人员配置上?

答:

首先,企业混沌工程去落地的时候,在系统上确实需要有一些有效的基础设施作为支撑。并且像前面提到的,四个实践阶段里的要求也是不一样的。

比如说你想做基础设施演练,那就意味着本身公司内就需要有基础云平台,这样你才能够比较好地去做各种信息查询或故障注入。
比如说在依赖演练里面,特别是大规模演练里,它会依赖于全链路压测,也会依赖全链路追踪trace,还会依赖于一些其他的信息聚合服务,例如基础的应用meta元信息。
这些就属于是系统上的依赖,取决于你公司内当下是否有这些对应的基础设施系统。如果没有,其实也不需要把它做得很复杂,但核心功能点是需要有的:
就比如说生成测试流量,其实在用全链路压测系统流量之前,去哪儿网也做了很多别的尝试,有使用自动化测试和一些其他方式。
所以说在系统层面上是有一定要求的。
其次,在人员配置上,相反我觉得这部分的要求会比较低。为什么呢?因为在去落地新技术的时候,其实大家的起跑线是一样的。
我们公司去落地混沌工程的时候,并没有人以前是做过这一块领域的。另外就是从实践结果看,这块并不像中间件那样样,需要有多丰富的经验和多高的技术水准才能进行。
从人数上来说,其实我们在混沌工程平台的长期投入里,基本也就只有一个人而已。但是像构建大规模自动演练机制的时候,可能会同时投3~4个人一块去做,但都是比较短期的。真正长期去做的话,配在混沌工程平台建设上基本维持在1个人左右。

老师把混沌工程分成了4个阶段,这几个阶段持续的时间、以及投入人员是可以大概说一下吗?

答:

第一个阶段是基础设施演练,是我们最开始构建混沌工程平台的阶段。这个阶段,我们在功能建设上,基本上是又要做控制面,又要去做生效面的API对接。当时大概花了2个人,前后花了2个月左右建设完成。真正去做1~2次大规模关机演练的时候,这时候需要投入的人就会比较多。因为你要真正地去关各业务的机器,就是刚才说的是真实关机,而且是非常大规模的。比如说对酒店业务的某个机房大规模进行关机的时候,那酒店对应的几大主要模块都需要有人跟进着。他们并不需要主动去做什么,但在演练过程里要不断去跟进。从我们公司的情况来看,需要差不多十个人左右,在前期需要一直跟进这些演练的过程,而且演练完之后还会有问题排查。所以在前几次的落地里面,需要问题修完,然后再去迭代它,前前后后花了1~2个月的时间,才把基础设施演练落地得比较好。
第二个阶段就是应用演练,从平台主要功能建设上来看的话,第一阶段里已经做得差不多了,这个阶段只需要让它的策略更丰富,比如前面说的引入了 chaosblade 去做很多演练策略的支持。所以这个阶段的平台建设相对来说会比较快一点,当时应该是投入一个多一点的人力,耗时的话在一个月左右,就基本搞定了。不过从落地角度上来看,演练是一直持续的。前面也提到了我们并不是集中式地做大规模的应用演练,而是慢慢地从各个业务线持续性地去进行演练,这个阶段的演练落地基本上是半年到 8 个月的耗时。
第三部分就是大规模自动化的依赖演练,这个机制是比较难的,而且也是依靠其他基础设施比较多的阶段。这个阶段其实从2021年3月份开始,一直断断续续地持续到今年 9 月份,才基本上把各种问题都解决了(比如分享里面提到的命中率问题),并且大规模落地产生效果了。虽然这整个周期比较长,但从功能建设上来说的话,它不会花这么长时间。落地时间长主要是因为我们落地覆盖了全司50 多个核心入口,并且达到全司 80% 以上的应用覆盖。因为需要应对不同场景里面的很多特殊情况。
第四个阶段是攻防演练,构建这个演练过程其实是非常简单的,也就花了两三周。真正去落地实践的话,也就花了两周在业务团队里面去执行,我们是选择在公司最核心的机票业务去落地,并且这块也取得比较好的效果,排查耗时从30分钟降低到3分钟。所以说这个阶段的落地耗时是比较短的,前前后后不到两个月。
所以整体就是上面列举的耗时和人力资源的投入情况。

混沌工程是否只对复杂的分布式系统企业有用?对小企业是否有必要?

答:

对于一些新企业或者是企业内部应用没那么复杂的情况来说的话,我建议只做前两个阶段(基础设施演练和应用演练)就可以了。
从架构分层上看,前两个阶段能够覆盖机房问题、中间件问题、应用问题,只要把这几个点都覆盖了,其实大部分的大规模故障问题就已经解决了。真正大规模的依赖演练,确实是在比较复杂的分布式拓扑依赖关系里面才会比较有用。如果你的应用情况比较简单,处理一个请求,只需要少量的系统,每个系统里面的依赖关系也比较简单,那对系统的治理就是比较简单的,如果服务治理本身已经比较有效了,那你通过混沌工程再去确认它的价值就不会那么高。
所以我的建议是以前两个阶段为主,这部分是比较有效的,这样可以确保你所在的公司,系统不会出现大规模故障的问题。

混沌工程本身是在生产环境演练,对于左移的做法,老师觉得意义大吗?

答:

我认为从最终效果衡量上看,意义不大,生产环境和测试环境之间的差异很难100%抹除,在非生产环境演练产生的结论也不好下结论是否可信。如果演练左移只是为了先在非生产环境尝试,再迁移到生产环境,那有一定的工程意义,毕竟更稳妥。也能更大概率避免因为混沌工程本身导致稳定性问题。
生产环境演练这也是去哪儿网在最开始的两个落地阶段(基础设施演练和应用演练)就一直坚持的做法,在基础设施演练中,我们不仅在生产环境进行,并且确保是大规模真实关机。

 

 

 

发布者:TT,转载请注明出处:数列科技

(0)

相关推荐

发表回复

登录后才能评论