

# 了解可用性需求
<a name="understanding-availability-needs"></a>

 人们最初会认为应用程序的可用性是整个应用程序的单一目标，这种想法很常见。但是，经过仔细检查后，我们经常发现应用程序或服务的某些方面具有不同的可用性要求。例如，比起检索现有数据，某些系统可能会优先实现接收和存储新数据的功能。又或者，比起更改系统配置或环境的操作，有些系统可能会优先执行实时操作。服务可能会在一天中的某些时段具有非常高的可用性要求，但可以容忍这些时段之外的更长时间的中断。您可以通过这些方法来将单个应用程序分解成各个组成部分，并评估每个部分的可用性要求。这样做的好处是可以根据特定需求集中投入可用性方面的精力（和费用），而不是根据最严格的要求设计整个系统。


|  建议  | 
| --- | 
|  批判性地评估应用程序的独特方面，并在适当的情况下区分可用性和灾难恢复设计目标来反映业务需求。 | 

 在 AWS，我们通常会将服务分为“数据面板”和“控制面板”。数据面板负责交付实时服务，控制面板则用于配置环境。例如，Amazon EC2 实例、Amazon RDS 数据库和 Amazon DynamoDB 表的读/写操作都是数据面板操作。而启动新的 EC2 实例或 RDS 数据库，或者在 DynamoDB 中添加或更改表元数据，都属于控制面板操作。虽然高水平的可用性对所有这些功能来说都很重要，但数据面板的可用性设计目标通常比控制面板更高。因此，具有高可用性需求的工作负载应该避免运行时依赖于控制面板操作。

 很多 AWS 客户会采用类似的方法批判性地评估其应用程序，并识别具有不同可用性需求的子组件。然后，针对不同的方面量身定制可用性设计目标，并执行适当的工作来设计系统。AWS 拥有根据一系列可用性设计目标设计应用程序的丰富经验，包括设计具有 99.999% 或更高可用性的服务。AWS解决方案架构师（SA）可帮助您根据可用性目标进行合理设计。在设计过程中尽早让 AWS 参与进来，有助于我们更好地帮助您实现可用性目标。并不是只有在启动工作负载前才要针对可用性进行规划，还应该持续不断地进行规划，从而在获得运营经验的过程中细化设计，从实际事件中吸取经验教训，并能承受不同类型的故障。然后，您可以投入适当的工作来改进实施。

 工作负载所需的可用性需求必须与业务需求和关键性相符。使用定义的 RTO、RPO 和可用性来定义业务关键性框架，然后您就可以对每个工作负载进行评估。此方法要求参与工作负载实施的人员了解该框架，了解工作负载对业务需求的影响。