服务
关于
CloudProse博客
开发人员经验

之前的注释:Invent:开发人员经验

AWS客户的痴迷感流到了开发人员's quality of life.
贾里德·崔特(Jared Short Trek)
贾里德·肖特(Jared Short) | 2019年11月26日

在AWS表现出对所有客户的痴迷之后,pre:Invent已经非常清楚地表明,开发人员角色现在显然在AWS团队的视线范围内。

AWS AppConfig

AppConfig在AWS Systems Manager的旗帜下运行,使“客户可以轻松地跨EC2实例,容器,Lambda,移动应用,IoT设备和本地部署的托管应用快速部署应用配置”。它试图将配置的部署与代码或基础结构的部署分开。

所有这一切的最大好处是,您不再需要绑定到完整的代码部署来更改应用程序中的配置配置文件。您可以安全,快速地执行配置更改(例如,功能标志),而不必冒险进行代码级更改。

从最高级别的应用程序和部署策略开始,AppConfig的分类法相当直观。每个应用程序下面都有两个不同的类-环境和配置配置文件。两者之间的关系是,配置文件是通过部署策略应用于环境的。

您可能会问自己,这与诸如参数存储之类的东西有什么不同,参数存储使您能够轮询配置。您的配置配置文件存储在参数存储区(仅限高级层)中或作为AWS System Manager文档存储。

与Param Store相比,差异化有2个主要点,这使其成为一个令人兴奋的选择。

验证方式

您可以添加验证 JSON模式,该词汇表允许您注释和验证JSON文档,或者通过调用AWS Lambda函数进行更复杂的验证。您可以将一个或多个验证器添加到特定的配置文件。

现在,您可以使用所需的任何值来更新源配置存储(Param存储或AWS System Manager文档)。这些更改在AppConfig中反映为配置版本。但是,在开始部署后,您的验证将在您选择的配置版本上运行。如果发生故障,错误将阻止部署。

此验证功能是您防范“ oopsie”类型错误的第一道防线。当然,两者之间的平衡是超限制性的与敏捷性。

部署策略

部署策略是您部署配置更改的方式。

这些基于Application和ClientID的部署以及已配置的CloudWatch警报,决定将多少个客户端推出配置更改,并不断确定一切进展顺利。否则,AppConfig将为您回滚那些配置更改,使其恢复到先前的有效更改。再一次,没有大的代码更改回滚-仅配置。

从技术角度来看,检索配置非常简单。出于成本和性能的原因,我建议缓存此响应,并仅经常检查一次。

var params = { Application: 'STRING_VALUE', /* required */ ClientId: 'STRING_VALUE', /* required */ Configuration: 'STRING_VALUE', /* required */ Environment: 'STRING_VALUE', /* required */ ClientConfigurationVersion: 'STRING_VALUE'};appconfig.getConfiguration(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response});

Now, this gets interesting on how you want to segment your rollout. Your ClientID is what determines the rollout and could be as wide as your entire “application” a pretty big bang config release, as granular as something like unique identifier per lambda function container (ex: CloudWatch log_stream_name from the context), or somewhere in the middle like a function_name. Important note, ClientID’s (targets) updated is a core part of the pricing model.

运作方式成本
GET API调用以检查新配置每100万次GetConfiguration调用0.2 USD
部署费用每个目标的每个配置更新$ 0.0008

陷阱

目前,我找到获取SDK调用所需的应用程序,环境和配置ID的唯一方法是从控制台中的URL或通过CLI,它很难在控制台GUI本身中公开。奇怪的。

If you send a ClientConfigurationVersion in your request, if it is a matching version of the current one the returned config blob is empty (or an empty buffer).

官方博客文章.

标签政策

迄今为止,标签是当今AWS上可用的成本中心/分析功能最强大的工具之一。不仅如此,围绕安全性和访问管理的越来越多的附加功能正在与标签集成。

但是,这给开发人员做正确的事情带来了很大的责任。杰夫·贝佐斯(Jeff Bezos)指出:“良好的意图行不通,但是机制行得通。”

通过标签策略,您现在可以在组织和帐户级别为这些标签强制实施标签和标准,从而要求标签存在并且可以选择具有特定值。

有两种不同的合规模式,即警告或完全阻止不合规的操作。是否要创建没有“ env”标签的DynamoDB表?不。组织还可以在资源级别上生成有关合规性的报告。

归根结底,这是为了防止错误发生。开发人员的经验还意味着,在合规性范围内的可能情况下,柔和的导轨非常好。

官方博客文章

CloudWatch Synthetics

如果您曾经编写过lambda函数或cron作业来ping服务器或端点,则CloudWatch Synthetics会将其提升到一个新的水平。

它提供了一种集中管理的方式来运行“ canaries”(通过Lambda Function)的小笔迹,这些笔迹可以一次运行,或者更有可能按计划运行。

这些金丝雀可以执行所有操作,从简单的心跳到更高级的API测试,链接检查或深入的用户体验模拟GUI驱动。

您的结果可以共享各种有用的信息,例如屏幕截图,HAR和日志。非常适合快速调试。

运行中的所有信息都记录在CloudWatch Synthetics中,然后比较阈值和警报,并针对X-Ray进行应用以了解客户体验和金丝雀。您甚至可以利用X射线分析来确定金丝雀覆盖率的差距。

CloudWatch Synthetics is available is us-east-1, us-east-2, and eu-west-1 with pricing at $0.0012 per canary run in us regions and $0.0014 in the EU. Presumably, you must also pay the lambda execution cost (this is 没有详细 在CloudWatch定价页面或文档中)。

链接AWS官方博客文章

AWS放大

AWS放大成为我个人最喜欢的AWS“服务”之一。 Scare在此引用的内容是因为它是服务,SDK和CLI的集合。所有这些旨在使构建现代的,以云为本机的Web和移动应用程序变得简单。

在放大生态系统中,有几件大事要了解。

放大控制台

内置CI / CD为您的前端(和后端)应用程序提供“ netlify”类型的体验。它确实做得很整洁,尤其是在周围 即时缓存失效.

放大CLI

为开发人员提供丰富的命令行体验,以构建和管理移动和Web应用程序。它直接集成到Amplify Console中,提供了端到端的凝聚力体验。

此外,Amplify CLI还提供了快速的方法,可通过以下方式生成基于AppSync的GraphQL API: GraphQL转换.

扩大SDK

简而言之,针对各种目标(Web,React,iOS和Android)的一组SDK简化了与AWS服务(如AppSync和S3)的交互,并提供了一些出色的现成授权UI。

什么是新的?更大,更好的团队经验

最近引入的一些巨大的新开发人员经验包括使团队更轻松地在前端应用程序的分支上工作,同时迭代后端的现有版本。开发人员需要多久才需要添加或调整前端功能(稍微更改一下UI,在此处使用不同的按钮颜色,在此处使用粗体显示该文本)?借助Amplify Console / CLI,他们可以指向现有的开发后端并进行迭代。他们是否正在迭代更大的功能?创建一个全新的后端环境,遍历您的GraphQL API或业务逻辑,而不会妨碍其他人期望半熟练的开发人员。

尽可能节省金钱和时间,并在需要时灵活地保持独立性!

最近还引入了与 cypress.io作为用于UI测试的CI / CD管道的一部分,以及对CI / CD流程的更好可见性。

简化了SAM CLI

这仅仅是纯粹的开发人员生活质量改善。如果您像我一样懒惰,则可以使用一个简单的包装器为SAM CLI编写脚本一百次,该包装器定义了存储区,堆栈名称,区域等。

No more! sam deploy is smart enough to use (or create) a SAM bucket for you, and you can save your settings in samconfig.toml (学到更多)以及快速的开发迭代。

SAM甚至询问变更集,以确保您对所有变更都满意。

SAM现在也实时报告您的部署状态。

其他注意事项

作者
贾里德·崔特(Jared Short Trek)
贾里德·肖特(Jared Short)