Aws架构设计最佳实践

up:: [[ 行业观察 Industry Research ]]-AWS

  • AWS 良好架构框架

    • 根据多年来AWS的专家们积累的经验,创建了这一份AWS良好架构框架,其中包含了以下五大支柱:
      • 安全性(Security)
      • 可靠性(Reliability)
      • 性能效率(Performance Efficiency)
      • 成本优化(Cost Optimisation)
      • 卓越操作(Operational Excellence)
    • 下面简单总结一下每一个支柱里面的内容
      • 安全性
        • 身份与访问管理(Identity and Access Mangement)
          • 如何保护你的AWS根账号的安全性?
          • 如何定义角色和责任来管理人员访问AWS资源(通过管理控制台以及通过API)
          • 如何限制你的程序访问AWS资源(应用程序、脚本、第三方工具或服务)
          • 如何管理你的管理密钥和凭证?
        • 检测控制(Detective Controls)
          • 如何捕捉和分析AWS的日志?
        • 基础设施保护(Infrastructure Protection)
          • 如何保护实例的安全,如何保护网络的安全?
          • 如何保护AWS服务的安全?
          • 如何保护操作系统和EC2实例的安全?(是否有补丁,杀毒软件等)
        • 数据保护(Data Protection)
          • 如何加密和保护你的数据存储
          • 如何加密和保护你的数据传输
        • 事件响应(Incident Response)
      • 可靠性
        • 基础(Foundations)
          • 如何管理AWS账号内的服务限制
          • 如何管理和规划AWS内的网络拓扑
          • 如何找到AWS技术支持,是否有专门的TAM(Technical Account Manger)支持
        • 变更管理(Change Management)
          • 如何让你的系统适应真实的需求?
          • 如何监控你的AWS资源?
          • 如何执行变更管理
        • 故障管理(Failure Management)
          • 如何备份你的数据?
          • 系统内组件出现故障需要如何处理?
          • 你的故障恢复计划是什么?
      • 性能效率
        • 计算(Comupte)
          • 如何选择适合你的系统的实例类型?
          • 如何确保你所使用的是最新/最适合的实例类型?
          • 如何监控实例来确保它们的性能达到了要求?
          • 如何确保实例的数量满足业务的需求?
        • 存储(Storage)
          • 如何选择适合你的系统的存储方案?
          • 如何确保你所使用的是最新/最适合的存储系统?
          • 如何监控你的存储系统来保证其性能?
          • 如何确保存储的容量满足你的业务需求?
        • 数据库(Database)
          • 如何选择适合你系统的数据库方案?
          • 如何保证当新的数据库方案发布的时候你用哪一种数据库最合适?
          • 如何监控数据库保证其性能达到要求?
          • 如何保证数据库的容量和吞吐量可以满足业务需求?
        • 网络(Network)
          • 如何选择合适的网络方案?
          • 如何保证新的网络技术出现的时候你使用哪一种网络方案最合适?
          • 如何监控你的网络保证其性能?
          • 如何确保网络性能满足业务需求?
      • 成本优化
        • 成本效率高的资源
          • 如何选择合适的资源类型来满足支出需求?
          • 如何选择合适的收费模式来满足支出需求?(按需实例,预留实例和竞价实例)
          • 是否有其他服务来代替现有的服务可以增加你的投资回报率?(比如用S3静态网站代替EC2,Lambda代替EC2等)
        • 供需匹配
          • 如何确保你的容量满足你的需求又不会超出需求太多?
          • 如何优化对AWS服务的使用?
        • 支出认知
          • 使用哪一些访问控制和流程来控制AWS的费用?
          • 如何监控我们的AWS用量和费用?
          • 如何将我们不使用的资源给关闭?
          • 如何在设计架构的时候考虑数据传输的费用?
        • 不断优化
          • 我们如何管理和考虑使用更新的服务?
      • 卓越操作
        • 筹备(Preparation)
          • 你使用的云操作流程有什么最佳实践?
          • 你如何进行配置管理?
        • 操作(Operation)
          • 如何在最小变更影响的情况下对的你业务系统进行变革?
          • 如何监控你的系统来保证它可以按预期一样运行?
        • 演进(Response)
          • 如何处理意料之外的运营事件?
          • 在处理意料之外的事件的时候有什么事件升级的流程?
  • 一般性设计原则

    • 良好架构框架定义了一系列一般性设计原则,包括了:
    • 不需再猜测您的容量需求: 在以往的基础架构部署中,我们往往面临着高成本闲置的资源或者资源容量紧张导致业绩受损的情况。利用云计算,这个问题可以得到解决。你可以先尽可能使用较少的容量,然后在后期根据需求进行随意伸缩。
    • 以生产规模进行系统测试: 我们可以在云环境中轻松搭建与生产环境1:1的测试环境,在做完一系列测试之后清空这些资源,同时只为使用的资源和时间而付费。这在传统基础架构环境中是无法轻松达到的。我们可以如之前实验所示,使用CloudFormation在半小时内搭建一套复杂的基础架构,并且在使用完毕后将其完全删除。
    • 自动简化架构实验: 在云计算环境中,自动化可以帮助我们降低成本以及手动操作带来的种种投入。我们可以使用CloudTrail追踪各种变更、审计相关的影响并且在必要时进行恢复。我们也可以使用例如Lambda函数来进行大量自动化的工作。
    • 允许实现架构演进: 在传统环境中,对应用程序架构的变更周期非常长。想象一下我们使用ITIL对系统生命周期进行管理,随着业务的发展,我们的架构可能无法适应不断变化的业务需求,但是更改系统的风险非常高。在云计算的环境中,我们可以巧妙利用自动化、DevOps、IaaC (Infrastrature as a Code)的特性来对架构进行更快速的迭代,实现敏捷开发(Agile)。
    • 数据驱动型架构: 在云环境中,你可以通过CloudWatch收集相关数据,来了解你的架构负载情况。你的云基础架构以代码的形式存在,因此可以利用这些数据来改善你的架构。
    • 通过模拟促销日实现改进: 通过模拟例如淘宝双11,京东618等促销日的大型流量,来改进架构中的不足之处,并且积累应对的经验和方案 。
  • 参考

    • https://aws.amazon.com/cn/architecture/well-architected/
    • http://www.cloudbin.cn/?p=2834

Notes mentioning this note