根据多年来AWS的专家们积累的经验,创建了这一份AWS良好架构框架,其中包含了以下五大支柱:
- 安全性(Security)
- 可靠性(Reliability)
- 性能效率(Performance Efficiency)
- 成本优化(Cost Optimisation)
- 卓越操作(Operational Excellence)
一般性设计原则
1、不需再猜测您的容量需求
2、以生产规模进行系统测试,工具:CloudFormation
3、自动简化架构实验
4、允许实现架构演进,我们可以巧妙利用自动化、DevOps、IaaC的特性来对架构进行更快速的迭代实现敏捷开发(Agile)
5、数据驱动型架构,可以通过CloudWatch收集相关数据,来了解你的架构负载情况
6、通过模拟促销日实现改进,通过压力测试改进架构中的不足之处
具体设计思路为以下五点:
1. 安全性
设计原则
1、在所有层面考虑安全性
2、事件可追溯性
3、最低权限原则
4、专注于保护你的系统
5、自动化安全最佳实践
AWS责任分担模型:AWS负责云本身安全,客户负责云内部安全
云安全包括:
1、身份与访问管理:使用IAM和MFA来登录控制台
2、检测控制:使用AWS CloudTrail、AWS Config、AWS CloudWatch
3、基础设置保护:使用VPC、安全组、NACL来保护你的基础设施安全
4、数据保护:需要保护数据在传输过程中和存储过程中的安全,使用EBS、S3和RDS的加密功能
5、事件响应:使用IAM、CloudFormation、API来做事件响应
2.可靠性
设计原则
1、测试恢复流程
在云环境中,我们可以通过自动化手段模拟不同故障来验证我们的故障恢复流程
自动化工具:chaos monkey
2、自动化实现故障恢复
通过监控系统内各项性能指标,可以在触及阈值的时候,自动化响应操作,自动化恢复故障
3、横向扩展以提升系统可用性
4、不再猜测容量需求
5、自动化管理变更:基础设施内的变更应都以自动化的方式实现
可靠性包括:
1、基础:在构建系统之前,我们需要确定一些基础性因素,包括服务限制和网络拓扑结构
2、变更管理
在AWS中,我们可以通过API或者AutoScaling来对资源进行弹性地扩展,并且使用CloudWatch来监控一切参数,更快发现容量问题和不良的趋势
使用CloudTrail来追踪变更
3、故障管理
要对架构中出现故障有一定的预期,我们需要意识到这些故障,了解它们是如何发生的,如何去预防它们再发生
定义Recovery Point Objective (RPO)和Recovery Time Objective (RTO)
3.性能效率
设计原则
1、普及先进技术
AWS提供NOSQL、媒体转码、机器学习、大数据分析、以Paas形式提供给你
2、数分钟内实现全球化
3、使用无服务架构:Lambda + API Gateway
4、提升测试效率
5、机器同理心:我们不需要对AWS服务的里里外外深入进行了解,但我们需要了解如何更好地使用各种服务
定义的资源类型
1、计算:EC2、容器、函数
2、存储:ECS、S3、Galacier
3、数据库:RDS、DynamoDB、Redshift、ElastiCache
4、网络:S3传输加速、CloudFront、Rount53、AWS DirectConnect
4.成本优化
设计原则
1、Pay-as-you-go:仅根据自己业务消费来申请资源,比如开发和测试环境,只在使用时开机
2、规模经济效益
3、不需要为数据中心运营支出
4、支出分析和原因分析
5、使用托管服务来降低成本
方法
1、是否有成本效率高的资源
1、我们可以用cloudwatch来监控我们的需求
2、用Auto Scaling 来弹性伸缩
3、Serverless 无服务架构也可以帮助我们实现供需匹配
4、支出认知,关键服务:CloudWatch,SNS
5、关注新服务
5.卓越操作
设计原则
1、利用代码执行操作:Cloud Formation
2、进行多次、小型、可逆的操作
3、预见失败:测试工具 Chaos Monkey
4、从失败中汲取经验:通过所有操作事件和失败中汲取经验来推动改进。将汲取的经验在团队内部或整个组织内进行分享
5、经常优化操作流程
卓越操作包括:
1、筹备,核心服务:Cloudformation, AutoScaling, AWS Config, Tagging
2、操作,核心服务:AWS CodeCommit, AWS CodeDeploy, AWS CodePipeline, AWS CloudTrail
3、演进,在出现故障时,保证你的团队能够从失败中汲取经验,并且制定改进计划,核心服务:CloudWatch