0203| 基础设施即代码

过年期间新闻不少。除了动物园老虎吃人这样荒唐的事情之外,it圈里也出现了gitlab.com删库这样的重大运维安全事故。

事故的起因是gitlab的运维在处理线上故障的过程中,可能是有点疲惫了,本想删掉一个从库,重新从主库复制一遍,结果眼睛一花在主库上敲了“rm -rf / ”。虽然两秒钟后他就意识到不对了,但是悔之晚矣。

删库这样的事故其实很常见,我当年也干过这样的蠢事。俗话说得好,常在河边走,哪能不湿鞋。只要是靠人来做手动的操作,那么迟早会出现问题的,毕竟人总有犯错误的时候。就像小时候考试,我每次都检查好几遍,但总是很难拿到100分。

那么怎么解决这样的问题呢?有几种思路。一种是加强管理,从流程上杜绝犯错误的可能性。譬如在线上执行任何操作的时候,都必须由两个人来完成,一个人敲命令,另一个在边上看着负责检查。这样犯错误的可能性就大大降低了。但这样做不好的地方是成本增加了,原来一个人能干的活现在得几个人才能完成。本来IT强调的是自动化,靠堆人肉来干活有点开倒车的意思。并且是人就会犯错误,几个人一起犯错误的情况也很常见,特别是大家互相比较信任的时候。

另一种思路就是备份。依靠备份的恢复来解决之前犯错误的问题。这听着是挺靠谱,但问题在于备份的实时性如何保证。比较好的办法是每天做全量备份,当天的修改用日志的方式做增量备份。这样想恢复到哪个时间点都问题不大,只是还要解决恢复速度的问题。

我觉得最好的思路还是从根本上减少犯错误的可能性,那就是减少人的操作,尽量用机器自动化的方式去解决问题。这就是基础设施即代码,也就是把原来手工的操作都通过脚本来进行,以代码的形式维护起来。把对生产环境的任何操作,都看作一次发布的过程。这样从代码上就知道你做的是什么操作。相反,如果依靠在线上敲命令来做运维的话,没人知道你下一步会敲出什么荒唐的命令来,比如rm -rf / 。

基础设施即代码听起来不错,但也需要团队投入很大的精力在这上面,得先把这样的基础设施建立起来。有一些工具可以帮助团队实现这一点,比如chef,puppet这样的自动化配置管理工具。

我自己也很缺乏这方面的经验,有机会逐步改进吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 需要原文的可以留下邮箱我给你发,这里的文章少了很多图,懒得网上粘啦 1数据库基础 1.1数据库定义 1)数据库(D...
    极简纯粹_阅读 7,536评论 0 46
  • 下午看了得到app的一本《无价》(解读版),把收获写下来。 人们对绝对价格很模糊,而对比率和对比更敏感,人的感觉是...
    乌卓阅读 821评论 0 0
  • 一周要上六天班,周六周日只能休息一天。 想开车回去,一天一夜间来回四百六十公里,身体有点吃不消,并且还得花几百块钱...
    漳平老顽童阅读 195评论 0 0
  • 南方鱼米之乡,以米粉为主,来了北方却爱上吃面。 不仅是因为入乡随俗的关系,还是因为这一碗面让逐渐寒冷的北京,感觉到...
    见夏知晓阅读 347评论 0 0