运维团队对于保持软件系统顺利运行至关重要。一个优秀运维团队的典型职责如下(或者更多)【29】:
* 监控系统的运行状况,并在服务状态不佳时快速恢复服务
* 跟踪问题的原因,例如系统故障或性能下降
* 及时更新软件和平台,比如安全补丁
* 了解系统间的相互作用,以便在异常变更造成损失前进行规避。
* 预测未来的问题,并在问题出现之前加以解决(例如,容量规划)
* 建立部署,配置、管理方面的良好实践,编写相应工具
* 执行复杂的维护任务,例如将应用程序从一个平台迁移到另一个平台
* 当配置变更时,维持系统的安全性
* 定义工作流程,使运维操作可预测,并保持生产环境稳定。
* 铁打的营盘流水的兵,维持组织对系统的了解。
良好的可操作性意味着更轻松的日常工作,进而运维团队能专注于高价值的事情。数据系统可以通过各种方式使日常任务更轻松:
* 通过良好的监控,提供对系统内部状态和运行时行为的**可见性(visibility)**
* 为自动化提供良好支持,将系统与标准化工具相集成
* 避免依赖单台机器(在整个系统继续不间断运行的情况下允许机器停机维护)
* 提供良好的文档和易于理解的操作模型(“如果做X,会发生Y”)
* 提供良好的默认行为,但需要时也允许管理员自由覆盖默认值
* 有条件时进行自我修复,但需要时也允许管理员手动控制系统状态
* 行为可预测,最大限度减少意外