二、自动化原则
应该尽量将手动操作转化为自动化操作。人的体力是有限的,人的知识和技能是有限的,人的精力和注意力也是有限的,最关键的是人是有情绪的。任何运维操作高手都无法确保不犯错误,因此要采用自动化操作替代人工操作。Netflix使用Chaos Monkey自动化工具来模拟各种故障,以此来测试系统的健壮性,所以其应用的质量很高,系统运行平稳可靠。相反,2017年2月,GitLab的数据库在进行手动操作时发生了人为错误,由于操作失误,删除了大量重要数据。致使该公司的线上服务中断了将近6小时,对公司声誉造成了严重的影响。
三、 标准化原则
应该尽量采用标准化的工具和流程。标准化的工具可以让所有运维操作人员积累经验,这里并不是说自研系统不可取,而是说所有自研工具都需要在生产过程中逐渐成熟完善,是需要以系统宕机为代价缴学费的。标准化的流程可以为技术运维人员提供有效的行动指引,知道每一步应该怎么做,做到什么程度?而不是老中医凭经验干活,稍有不慎就会出现人命风险。例如,Amazon Web Services提供了一整套标准化的云计算服务,让运维更加稳健和方便。2014年,一家电商公司因为使用了自研的订单处理系统,结果在双十一当天出现了严重的订单延迟和丢失问题,给公司的运营和客户服务带来了巨大压力。
四、安全原则
应该始终把安全放在首位。再好的业务,再牛的技术,再稳健的操作都抵不过安全问题。不重视安全风险,不采取有效的安全管控措施,不仅仅会影响系统的稳定性,更严重的是对整个公司带来巨大的破产和倒闭风险。2017年5月,全球爆发了WannaCry勒索病毒事件,在这次事件中,那些经常进行安全更新的组织成功避开了袭击。当然也有不少公司没有那么幸运,英国国家卫生服务体系(NHS)是受攻击最严重的组织之一,因为他们在事件发生前,没有及时按照Microsoft的安全补丁,导致了大量计算机被病毒感染,影响了数千名患者的治疗。
五、可恢复原则
应该确保系统在遇到故障时,可以快速恢复到正常状态。就是说系统要有能力保持应用和数据在某个时间点的拷贝,确保在发生系统故障或者数据出现问题的时候,能够迅速取得应用和数据的备份并完成恢复。GitLab在2017年的数据丢失事件中,由于有备份策略,成功恢复了大部分数据。而在2014年,一家名为Code Spaces的代码托管公司,遭到了一次严重的DDoS攻击和数据删除。由于公司没有有效的数据备份和恢复计划,最终无法恢复丢失的数据,导致公司不得不宣告关闭。
六、 可扩展原则
应该考虑系统的可扩展性,以应对业务增长或变化的需求。任何一间公司都怀着向全世界甚至宇宙无限扩展的理想,这是企业家的本性。所以运维操作过程中必须认真考虑系统的可扩展性,也就是能够在业务真正飞速发展的时候提供足够的运行空间。黑色星期五购物节期间,许多零售商会提前增加服务器资源,以应对可能的流量激增。在2014年的世界杯期间,一家著名的在线直播网站在比赛高峰期间突然崩溃,因为他们没有提前预估和扩展服务器资源来应对突然激增的流量,导致大量用户无法观看比赛。
七、 透明化原则
应该尽可能让运维操作透明化。这个原则要求技术运维操作必须要先有详细的预案,而且这些预案必须要经过变更委员会的严格审查。同时保持专业和完善的文档,另外操作的过程,验证的结论也要记录在案,以备日后的复盘,让其他的团队和后续的技术人员有学习的基础。在GitHub,所有的运维操作都会被详细记录并公开,这为其他团队提供了宝贵的学习资源。在一次著名的AWS S3故障中,部分服务的运维操作记录丢失,导致AWS的工程师花费了大量的时间来追踪和解决问题。如果他们有详细的运维操作记录,可能可以更快地找到问题和解决方案。
以上所总结的技术运维操作的七个原则以及各自的实践案例,希望能为大家的运维操作工作提供一些参考和启发。这些原则并非孤立存在,而是相互关联,相互影响。在运维工作中,我们需要灵活运用这些原则,根据具体情况制定最适合自己的策略。
最后要强调的是,理论和实践的相互作用在技术运维中尤其突出。缺乏理论武装,我们的工作就只能依赖经验和直觉,而这往往容易犯错误,无法保持效能的持续提升。没有实践,理论便只是空谈,无法解决实际问题。只有将理论与实践紧密结合,我们才能提高工作效率改善工作效果。
-----------------------------------
想要了解更多关于支付的故事,请阅读《一本书读懂支付》---扫描下方↓二维码,即可获得!