聚光灯
AWSets:简化AWS资源列表
宣布AWSets,这是一个新的开源实用程序,用于抓取AWS帐户并导出其所有资源以进行进一步分析。
软件开发生命周期标准化了构建,测试和部署应用程序的方式。一致且可靠的生命周期可减少摩擦并提高开发人员及其应用程序工作方式的可见性,从而加快开发速度。
在建立和管理无服务器项目的多年中,我创建了一些准则,使我们的项目获得最大的成功机会。这篇博文不是特别冗长,但即使少量也能发挥作用。
使用“基础结构即代码”框架来构建云资源,使开发人员能够标准化他们需要为其应用程序部署的云原生服务。这允许使用环境变量来实施适当的登台实践并保护代码秘密。然后,可以通过云提供商本地或使用外部服务(例如GitHub或GitLab)在自动CI / CD管道中部署和升级这些服务。
“将开发环境移向云,请勿尝试将云移至开发环境。” -- 本·基霍
该怎么办:
在Trek10,我们倾向于使用 SAM,SAM CLI 以及用于CI / CD的本机AWS工具。实际上,我们甚至发布和维护AWS的官方参考部署。 无服务器企业CI / CD.
在为Lambda开发时,应该在功能内构建单元测试,就像在微服务应用程序中一样。集成测试应涵盖服务之间的各种边界和连接,以确保数据在整个工作流程中传递。
“仔细研究应用程序中至关重要的部分并编写测试,以确保这些功能的可靠运行(和集成)。生产测试是捕捉回归,评估预期行为并成为软件文档的一部分的测试。” -- 小保罗·钦(Paul Chin Jr.)
该怎么办:
良好部署实践的关键是使用可预测的环境来尽可能多地把握使应用程序良好安全地运行所需的哪些因素,以及哪些因素会导致失败。
“每个环境至少要使用一个帐户。您甚至可以比这更细粒度。 AWS组织和IAM角色假设使这一点易于管理。” -- 亚历克斯·德布里
该怎么办:
在直接通过AWS控制台,通过CloudFormation堆栈中的更改或通过API调用更新Lambda时,它独立于其他已部署服务(包括同一CloudFormation堆栈内的其他Lambda)进行更新。通过控制台更新Lambda时,代码将通过自动保存进行更新。所有其他相关的配置(例如最大运行时间)必须在命令中保存。
在Trek10,我们强烈建议仅通过IaC实用程序(如CloudFormation或SAM)来更新代码。一旦您冒险通过控制台推送有意义的更新的路径,只有很短的时间才能发生非同寻常的停机时间或其他损失。
不要轻易从控制台作为代码的安全性和便捷性方面来体验控制台的点击体验。回到光明的道路是黑暗的,充满了恐怖(和中断)。 -- 贾里德·肖特(Jared Short)
该怎么办:
尽管我们没有涵盖开发的每个阶段,但了解生命周期如何与Lambda等云功能一起使用可以使以标准化,设计良好的方式更轻松地加载其他服务。
一旦计划了部署的基础,团队就可以更全面地了解如何通过监控和指标来操作无服务器应用程序。
如果您想更深入地研究,我强烈建议您考虑一下我们的细分 AWS如何构建和部署实际的无服务器应用程序!