AWS 基础设施即代码与云架构
September 5, 2024About 3 min
AWS 基础设施即代码与云架构
这篇整理 IaC 工具的选型、几个部署服务的区别、Well-Architected 五大支柱,以及云转型的阶段划分。
IaC 工具:CloudFormation vs CDK
CloudFormation 是 AWS 第一代基础设施编排工具,用声明式模板(JSON / YAML)描述"想要的状态",由它来创建、更新、删除资源。CDK 则是用编程语言写代码,最终生成 CloudFormation 模板再部署。
| CloudFormation | CDK | |
|---|---|---|
| 定义方式 | JSON / YAML 模板 | TypeScript / Python / Java / C# 等代码 |
| 编写范式 | 纯声明式,直接写"想要的状态" | 面向对象/函数式,代码生成模板 |
| 复用与逻辑 | 弱,不支持灵活的条件/循环 | 强,有条件、循环、模块化,构造库丰富 |
| 开发体验 | 模板冗长,调试不便 | IDE 自动补全、调试,体验好 |
| 学习门槛 | 低,但复杂场景维护难 | 需掌握编程语言,且排查问题要懂生成出的模板 |
选型直觉:简单/团队习惯模板就 CloudFormation;架构复杂、想要抽象封装和复用就上 CDK。CDK 底层仍是 CloudFormation,所以排错时绕不开模板。
部署服务对比
CloudFormation 之外,还有几个偏"应用层"的部署服务,定位各不相同:
| 服务 | 定位 | 特点 |
|---|---|---|
| CloudFormation | IaC(基础设施即代码) | 定义几乎所有 AWS 资源并编排依赖关系;偏 DevOps/架构师;细粒度但有学习成本 |
| Elastic Beanstalk | PaaS(平台即服务) | 上传代码包,自动处理环境、扩展、负载均衡、监控;偏开发者,关注快速跑应用 |
| App Runner | 容器/无服务器应用部署 | 部署运行容器化和无服务器应用;不提供可视化设计 |
| Application Composer | 可视化设计 | 图形界面设计无服务器应用,定义工作流、数据流和服务集成 |
记忆点:
- CloudFormation 是"底层"编排,用代码描述整套资源环境。
- Elastic Beanstalk 是"应用层"快速部署平台,开发者只管代码,环境它来搭;复杂需求时可再结合 CloudFormation。
- App Runner 跑容器/无服务器应用,但没有可视化设计。
- Application Composer 的差异化卖点就是图形化拖拽设计无服务器应用——题目里强调"可视化设计"就是它。
云架构原则:Well-Architected 五大支柱
Well-Architected Framework 是 AWS 的一套架构最佳实践,用来指导设计、评估和改进云架构,识别风险。五大支柱:
- 运营卓越(Operational Excellence):用 IaC 自动化部署与变更;CloudWatch / CloudTrail 监控审计;准备并演练故障恢复流程;故障后复盘持续改进。
- 安全性(Security):IAM 最小权限;存储/传输数据加密(KMS 管密钥);关键账户开 MFA;CloudTrail + Config + GuardDuty 做审计告警;定期漏洞扫描。
- 可靠性(Reliability):多可用区/跨区域部署提高容错;Auto Scaling + ELB 健康检查自动恢复;AWS Backup 定期备份并测试恢复;做容量规划。
- 性能效率(Performance Efficiency):选合适的实例和存储类型;Auto Scaling 弹性伸缩;ElastiCache 等缓存减压数据库;持续监控并评估新技术。
- 成本优化(Cost Optimization):按需 + 预留实例结合;关掉闲置资源;Cost Explorer / Budgets 监控支出;按冷热分层存储(S3 标准/IA/Glacier)。
云转型阶段(CAF 迁移旅程)
云转型旅程常被划分成几个阶段:
- Envision(构思):项目起步,确定目标和预期成果,制定战略和业务案例。
- Align(对齐):调整资源和组织,确保各方对齐。
- Launch(发布):实际部署落地。
- Scale(扩展):扩展应用和服务的阶段。