Facebook开源了其状态机即服务(State Machine as a Service)StateService,自动化的从系统灾难中恢复。
Facebook大多数的生产服务都是自家构建的,多为抵抗重大故障设计,比如从自然灾害造成的数据中心数据遗失中恢复,但是在企业基础设施中使用的第三方服务,由于部署过程可能需要多步骤,跨多个虚拟机调度协调,因此很难自动恢复,Facebook决定解决这些第三方服务的部署,以缩短服务中断恢复所需要的时间。
为此Facebook开发了StateService,这是一个状态机即服务(State Machine as a Service),透过复杂的部署过程来指引虚拟机的状态。StateService采用本身就是文件(Self-documenting)的设计,各个状态成为配置管理(Configuration Management,CM)软件的一部分,透过重新播放先前虚拟机器的状态,StateService可以将服务返回到***已知的状态。
StateService能够与如Chef的CM软件一起使用以部署服务,Facebook用YAML来表示状态机的状态,以描述一个或多个虚拟机可进入状态,和每个状态转换到另一个状态的方式和时间,每个状态可表示为一个步骤或是一系列的步骤,如部署期间所发生的事件等。
Facebook的企业基础设施团队使用StateService,来减少部署服务所需要的手动工作,现在Facebook将其开源,让任何企业也能自动执行复杂的部署工作。