什么是 AWS Well-Architected Framework
如果您正在考虑在亚马逊云中构建公司的未来,那么您需要确保您的云资源和基础设施的架构尽可能安全、高效且具有成本效益。
对于云架构师来说,好消息是没有必要重新发明轮子。Amazon 汇集了一系列最佳实践,旨在为在亚马逊云上构建架构的人员提供客观指导。
亚马逊云科技 Well-Architected Framework 能够帮助您认识到您在亚马逊云上构建系统时所做决策的优缺点。使用该框架有助于您了解在亚马逊云科技中设计和运行安全、可靠、高效且经济实惠的可持续工作负载的架构最佳实践。它提供了一种方法,使您能够根据最佳实践持续衡量架构,并确定需要改进的方面。审查架构的流程是关于架构决策的建设性对话,不是一种审核机制。
亚马逊云科技Well-Architected Framework囊括了一系列基础性问题,有助于您了解某种架构是否符合云最佳实践。该框架为您提供了一种一致的方法,来对标您所期望的现代云端系统能力,建立一整套质量评估体系,以及评估实现这样的质量需要采取的具体措施。随着 亚马逊云科技 不断发展,我们将继续与客户协作并增进了解,同时将实际经验融入到Well-Architected 定义的持续完善当中。
亚马逊云科技 Well-Architected Framework 包含六大支柱,指导在亚马逊云中构建的人员如何确保其云的成本和性能得到优化。该框架是指专家在构建云环境时应遵循的一系列最佳实践。
与许多其他亚马逊云科技资源不同,亚马逊云科技Well-Architected Framework不是指可以通过编程方式启动的一系列检查。因此,希望确保其工作负载以符合框架的方式构建的客户(并且可能不具备在内部执行此操作的专业知识)应使用外部方的服务(例如:神州泰岳的Well Architected Review服务)。
良好架构的框架支柱

卓越运营支柱能够有效地支持发展和运行工作负载,获取对运营的洞察,以及不断改进支持流程和程序以实现业务价值。在云中实现卓越运营的设计原则包括:
- 执行运营即代码:在云中,您可以将用于应用程序代码的工程规范应用于整个环境。您可以将整个工作负载(应用程序、基础设施等)定义为代码,并使用该代码进行更新。您可以为运营流程编写脚本,并通过启动这些脚本来自动执行流程,以响应事件。通过执行运营即代码,您可以减少人为错误并实现对事件的一致响应。
- 频繁进行小型、可回滚的变更:将工作负载设计为可扩展且松耦合,以允许定期更新组件。自动部署技术加上小型增量变更可缩小影响范围,并能够在发生故障时更快地进行回滚。这将增强您的信心,在保持质量和快速适应市场条件变化的同时,为您的工作负载提供有益的变化。
- 经常完善操作程序:随着工作负载的演变,应相应地改进操作程序。在使用运营程序时,要寻找机会改进它们。定期审查并验证所有流程是否有效,以及团队是否熟悉这些流程。在发现差距时,相应地更新程序。向所有利益相关者和团队传达程序更新。将运营游戏化,以分享最佳实践并向团队传授知识。
- 预测故障:执行“故障演练”,找出潜在的故障源,以便消除或减少故障。测试您的故障场景,并确认您了解相应影响。测试您的响应程序,以确保它们的有效性,以及团队熟练他们的流程。设置定期的实际演练,以测试工作负载和团队对模拟事件的响应。
- 从所有运营故障中吸取经验教训:从所有运营事件和故障中吸取经验教训,推动改进。在多个团队乃至组织范围中分享经验教训。
- 使用托管服务:尽可能使用 亚马逊云科技 托管服务,减少运营负担。围绕与这些服务的交互制定操作程序。
- 实施可观测性以获得切实可行的见解:全面了解工作负载行为、性能、可靠性、成本和运行状况。建立关键绩效指标(KPI),利用可观测性遥测来作出明智的决策,并在业务结果面临风险时迅速采取行动。基于可操作的可观测性数据,主动提高性能和可靠性,降低成本。
安全性支柱包括保护数据、系统和资产以利用云技术来改善安全性的能力。在云中实现安全性有七个设计原则:
- 健壮的身份验证体系:实施最小权限原则,并通过对每一次与亚马逊云资源之间的交互进行适当授权来强制执行职责分离。集中进行身份管理,并努力消除对长期静态凭证的依赖。
- 实现可追溯性:实时监控和审计对环境执行的操作和更改并发送警报。为系统集成日志和指标收集功能,以自动调查并采取措施。
- 在所有层面应用安全措施:利用多种安全控制措施实现深度防御。应用到所有层面(例如网络边缘、VPC、负载均衡、每个实例和计算服务、操作系统、应用程序和代码)。
- 自动实施安全最佳实践:借助基于软件的自动化安全机制,您能够以更为快速且更具成本效益的方式实现安全扩展。创建安全架构,包括实施可在版本控制模板中以代码形式定义和管理的控制措施。
- 保护动态数据和静态数据:将您的数据按敏感程度进行分类,并采用加密、令牌和访问控制等机制(如适用)。
- 限制对数据的访问:使用相关机制和工具来减少和消除直接访问或人工处理数据的需求。这样可以降低处理敏感数据时数据处理不当、被修改以及人为错误的风险。
- 做好应对安全性事件的准备:制定符合您组织要求的事件管理和调查策略和流程,做好应对事件的准备工作。开展事件响应模拟演练并使用具有自动化功能的工具来提高检测、调查和恢复的速度。
可靠性支柱涵盖相关工作负载按照计划正确而稳定执行其预期功能的能力。它包括在其全部生命周期内运行和测试工作负载的能力。在云中实现可靠性有五个设计原则:
- 自动从故障中恢复:通过监控工作负载的关键绩效指标 (KPI),您可以在指标超过阈值时触发自动化功能。这些 KPI 应该是对商业价值(而不是服务运营的技术方面)的一种度量。这包括自动发送故障通知和跟踪故障,以及启动解决或修复故障的自动恢复流程。借助更高级的自动化功能,您可以在故障发生之前预测和修复故障。
- 测试恢复过程:在本地环境中,经常会通过执行测试来证明工作负载能够在特定场景中正常运作。通常不会利用测试来验证恢复策略。在云中,您可以测试工作负载的故障情况,并验证您的恢复程序。您可以采用自动化方式来模拟不同的故障,也可以重新建立之前导致故障的场景。此方式可以在实际的故障发生以前揭示您可以测试与修复的故障路径,从而降低风险。
- 横向扩展以提高聚合工作负载的可用性:使用多个小型资源替换一个大型资源,以降低单个故障对整个工作负载的影响。跨多个较小的资源分配请求,以确保它们不共用常见故障点。
- 无需再预估容量:本地工作负载出现故障的常见原因是资源饱和,即对工作负载的需求超过该工作负载的容量(这通常是拒绝服务攻击的目标)。在云中,您可以监控需求和工作负载利用率,并自动添加或删除资源,以保持最佳水平来满足需求,而不会出现超额预置或预置不足的问题。
- 管理自动化变更:应利用自动化功能对基础设施进行更改。需要管理的变更包括,对自动化的变更,可对其进行跟踪与审查。
性能效率要素包括有效地使用计算资源以满足系统要求的能力以及在需求变化和技术改进时保持此效率的能力。在云中实现性能效率有五个设计原则:
- 普及先进技术:通过将复杂的任务委派给云供应商,让您的团队更顺畅地实施高级技术。与要求您的 IT 团队学习有关托管和运行新技术的知识相比,考虑将新技术作为服务使用是一种更好的选择。例如,NoSQL 数据库、媒体转码和机器学习都是需要专业知识才能使用的技术。在云中,这些技术会转变为团队可以使用的服务,让团队能够专注于产品开发,而不是资源预置和管理。
- 数分钟内实现全球化部署:您可以在全球多个 亚马逊云科技 区域中部署工作负载,从而以更低的成本为客户提供更低的延迟和更好的体验。
- 使用无服务器架构:借助无服务器架构,您无需运行和维护物理服务器即可执行传统计算活动。例如,无服务器存储服务可以充当静态网站(从而无需再使用 Web 服务器),事件服务则可以实现代码托管。这不仅能够消除管理物理服务器产生的运行负担,还可以借由以云规模运行的托管服务来降低业务成本。
- 更频繁地进行实验:利用虚拟资源和可自动化的资源,您可以使用不同类型的实例、存储或配置来快速进行比较测试。
- 考虑软硬件协同编程:了解如何使用云服务,并始终使用最适合您工作负载目标的技术方法。例如,在选择数据库或存储方法时考虑数据访问模式。
- 践行云财务管理:为获得财务上的成功并加速在云中实现商业价值,需要投资云财务管理/成本优化。您的组织需要投入时间和资源增强自身在这个新的技术和使用情况管理领域中的能力。与安全性或卓越运营能力类似,您的组织需要通过知识构建、计划、资源和流程来培养能力,从而成为一家具有成本效益的组织。
- 采用消费模型:仅为所需计算资源付费,并可根据业务需求而非复杂的预测增加或减少使用量。例如,开发和测试环境通常只需要在每个工作日运行八个小时。您可以在不需要时停用这些资源,从而实现 75% 的潜在成本节约。
- 衡量整体效率:衡量工作负载的业务产出及这些产出的实现成本。使用这种衡量方式了解您通过提高产出和降低成本获得的收益。
- 不再将资金投入到无差别的繁重任务上:亚马逊云科技 会负责繁重的数据中心运维任务,例如服务器的安装、堆叠和供电。它还消除了使用托管服务管理操作系统和应用程序的运营负担。因此,您可以集中精力处理客户和业务项目而非 IT 基础设施。
- 对支出进行分析和归因:使用亚马逊云,您可以更轻松地确定系统的准确使用量和成本,从而将 IT 成本透明地分摊到各个工作负载拥有者。这有助于衡量投资回报率 (ROI),并让工作负载拥有者能够据此优化资源和降低成本。
可持续性支柱侧重于环境影响,尤其是能源消耗和效率,因为它们是架构师在直接采取行动以减少资源使用时依据的重要杠杆。在云中实现可持续性有六个设计原则:
- 了解您的影响:衡量您的云工作负载的影响并为您的工作负载的未来影响建模。包括所有影响来源,例如客户使用您的产品所产生的影响,以及产品最终淘汰和停用所产生的影响。通过查看每个工作单元所需的资源和排放量,将生产性输出与云工作负载的总体影响进行比较。使用这些数据来建立关键绩效指标(KPI),评估在降低影响的同时提高生产力的方法,并估计提议的更改随时间的推移所产生的影响。
- 设定可持续性目标:对于每个云工作负载,建立长期可持续性目标,例如减少每个事务所需的计算和存储资源。针对现有工作负载的可持续性改进的投资回报进行建模,并为负责人提供投资于可持续性目标所需的资源。规划增长并构建您的工作负载,以便增长可降低影响强度(以适当的单位衡量,例如每用户或每事务)。目标可帮助您支持您的企业或组织更广泛的可持续发展目标、识别回归并确定潜在改进领域的优先级。
- 实现利用率最大化:适当调整工作负载规模并实施高效设计,以确保高利用率并最大限度地提高底层硬件的能源效率。由于每台主机的基准功耗,两台以 30% 利用率运行的主机的效率低于一台以 60% 利用率运行的主机。同时,消除或尽可能减少空闲资源、处理和存储,以减少支持工作负载所需的总能源。
- 预测并采用更高效的新硬件和软件产品/服务:支持您的合作伙伴和供应商进行上游改进,以帮助您减少云工作负载的影响。持续监控和评估更高效的新硬件和软件产品。设计灵活性以允许快速采用高效的新技术。
- 使用托管服务:在庞大的客户群中共享服务有助于更充分地利用资源,从而减少支持云工作负载所需的基础设施数量。例如,客户可以通过将工作负载迁移到 亚马逊云科技 Cloud 并采用托管服务(例如用于无服务器容器的 亚马逊云科技 Fargate,亚马逊云科技在其中大规模运行并负责其高效运行)来分散电力和网络等常见数据中心组件的影响。使用有助于将影响降至最低的托管服务,例如使用 Amazon S3 生命周期配置将不经常访问的数据自动移动到冷存储,或使用 Amazon EC2 Auto Scaling 来调整容量以满足需求。
- 减少云工作负载的下游影响:减少使用您的服务所需的能源或资源量。减少或消除客户为了使用您的服务而升级其设备的需求。使用设备场进行测试以了解预期影响,并对客户进行测试以了解使用您服务的实际影响。