Capital One 的 Serverless 之旅:最佳实践与经验教训
在 QCon 旧金山大会的第三天,Capital One 的高级杰出工程师 George Mao 分享了该公司在 Serverless 领域的探索历程、最佳实践以及在此过程中学到的经验。此次演讲属于“云架构设计”主题的一部分。
为什么选择 Serverless?
Mao 首先解释了 Capital One 银行为何选择全面拥抱云和 AWS,以提升敏捷性。他们选择了 Serverless 架构,而非传统的基于虚拟机(AWS EC2 实例)、操作系统、网络、容器、应用服务器和业务应用的架构。Serverless 的事件驱动特性、更低的基础设施管理负担以及更专注于业务逻辑的开发,是其选择的主要原因。
Serverless 的优势
Mao 列举了 Serverless 的几大优势:
- 降低运行成本:开发者无需担心底层基础设施,专注于开发。
- 降低 AWS 基础设施成本:企业受益于更低的运营开支。
- 现代化应用架构:基于微服务的架构使开发者能够独立部署和扩展,减少故障影响范围。
挑战与经验教训
Capital One 在采用 Serverless 的过程中也面临了诸多挑战,特别是在大规模管理 AWS 账户和 Lambda 函数时,涉及合规控制、标准、指标、日志、维护和安全漏洞等方面。
关键经验
- 建立卓越中心(COE):跨组织的卓越中心有助于制定标准、提供技术指导,并影响决策,防止孤岛化选择,减少技术债务和风险。
- Lambda 开发的结构化学习曲线:建议在本地开发环境中进行开发,再部署到 AWS,并利用 AWS SAM(Serverless Application Model)和 CI/CD 管道,提升开发和部署效率。
- 并发管理、开发标准、账户管理:强调并发管理、开发标准、账户管理实践、利用公共库、提供培训以及通过 Lambda 调优进行成本优化。
- 正确使用可观察性和指标:确保正确使用监控指标,以便更好地理解系统行为。
Serverless 的最佳实践
Mao 还分享了 Capital One 团队总结的 Serverless 最佳实践,这些实践不仅适用于 AWS,也适用于其他云服务提供商(如 Google Cloud Functions 和 Azure Functions)。
不要做的事情
- 避免在非原生 AWS 事件源上使用 Lambda,因为这需要轮询或在高空闲时间时使用。
最佳实践
- 优化内存:使用 Lambda Power Tuner 进行调优。
- 设置 CloudWatch 日志保留策略:日志并非免费,需合理设置保留时间。
- 使用 Lambda Powertools:提升开发效率。
- 使用预置并发与自动扩展:确保应用在高负载时仍能稳定运行。
- 理解并监控指标:确保系统性能在可控范围内。
- 使用 AWS SAM:支持本地构建、模拟、测试和调试。
- 使用正确的 AWS SDK:选择适合的工具进行开发。
- 使用 Snapstart(Java):加速 Java 应用的启动时间。
- 制定标准:包括标签、别名、IAM 权限等。
总结
Mao 的演讲为企业在 Serverless 领域的发展提供了宝贵的经验,强调了建立标准、优化成本、正确使用工具和监控指标的重要性。同时,他也提醒开发者在特定场景下谨慎使用 Lambda,以避免不必要的复杂性和成本。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。