Thinking about Availability in Large Service Infrastructures
Thinking about Availability in Large Service Infrastructures
复制标题
大型服务基础设施可用性的思考
DOI:
10.1145/3102980.3102983
复制
发表时间:
2017
期刊:
影响因子:
--
通讯作者:
B. Welch
中科院分区:
文献类型:
--
作者:
J. Mogul;R. Isaacs;B. Welch
With the rise of the Internet, the Web, and cloud computing, we have come to depend on a complex stack of interdependent online services. Successful operation of a cloud-hosted service, such as NetFlix or SnapChat, can depend on dozens of underlying distributed systems, some of which in turn depend on each other. While most people (excepting teenagers) do not view SnapChat as a life-critical service, past failures of systems such as Healthcare. gov [12, 33] have had real-world consequences. Cloud providers are under pressure to deliver more “nines” of availability as traditional enterprise computing moves to the cloud.The need for an end-to-end approach to availability is highlighted by the “blameless postmortem” culture of some providers [5, Ch. 15]. However, learning the patterns of successful and harmful practices does not in itself lead to the creation of principles that can defend against the unexpected. Meanwhile, the research community has not given the same attention to these end-to-end availability issues, especially for large-scale infrastructures, as it has to various point solutions, such as distributed consensus and state-machine replication (see § 5). We have observed that system designers struggle to define overall availability goals suitable for large infrastructures, and then struggle again to convert these to goals for component services. In this paper, we describe the challenges of providing a precise and principled definition for availability (§ 3), the possibility of thinking about availability in much the same way that we have learned to think about security (§ 4), and some general ideas for designing highly-available infrastructures (§ 6). We do